接受的答案清楚地展示了如何保存分词器。以下是对(一般)在拟合或保存后后评分问题的评论。假设列表texts 由两个列表Train_text 和Test_text 组成,其中Test_text 中的标记集是Train_text 中标记集的子集(乐观假设)。然后fit_on_texts(Train_text) 为texts_to_sequences(Test_text) 提供不同的结果,与先调用fit_on_texts(texts) 然后text_to_sequences(Test_text) 相比。
具体例子:
from keras.preprocessing.text import Tokenizer
docs = ["A heart that",
"full up like",
"a landfill",
"no surprises",
"and no alarms"
"a job that slowly"
"Bruises that",
"You look so",
"tired happy",
"no alarms",
"and no surprises"]
docs_train = docs[:7]
docs_test = docs[7:]
# EXPERIMENT 1: FIT TOKENIZER ONLY ON TRAIN
T_1 = Tokenizer()
T_1.fit_on_texts(docs_train) # only train set
encoded_train_1 = T_1.texts_to_sequences(docs_train)
encoded_test_1 = T_1.texts_to_sequences(docs_test)
print("result for test 1:\n%s" %(encoded_test_1,))
# EXPERIMENT 2: FIT TOKENIZER ON BOTH TRAIN + TEST
T_2 = Tokenizer()
T_2.fit_on_texts(docs) # both train and test set
encoded_train_2 = T_2.texts_to_sequences(docs_train)
encoded_test_2 = T_2.texts_to_sequences(docs_test)
print("result for test 2:\n%s" %(encoded_test_2,))
结果:
result for test 1:
[[3], [10, 3, 9]]
result for test 2:
[[1, 19], [5, 1, 4]]
当然,如果不满足上述乐观假设,并且Test_text中的token集合与Train_test的token集合不相交,那么test 1会产生一个空括号列表[].