2017-08-17 1172 views
9

我已经通过以下步骤(广义地)使用Keras库训练了一个情感分类器模型。Keras文本预处理 - 将Tokenizer对象保存到文件以进行评分

  1. 转换文本语料库成使用标记生成器对象/类
  2. 使用model.fit()方法
  3. 评估此模型中使用该模型

现在对于得分建立一个模型,我序列能够将模型保存到文件并从文件加载。然而,我还没有找到一种方法来保存Tokenizer对象到文件。如果没有这个,每次我需要对一个句子进行评分时,我将不得不处理该语料库。有没有解决的办法?

回答

17

最常用的方法是使用picklejoblib。在这里,您对如何使用pickle为了节省Tokenizer一个例子:

import pickle 

# saving 
with open('tokenizer.pickle', 'wb') as handle: 
    pickle.dump(tokenizer, handle, protocol=pickle.HIGHEST_PROTOCOL) 

# loading 
with open('tokenizer.pickle', 'rb') as handle: 
    tokenizer = pickle.load(handle) 
+0

10是否在测试集上再次调用tokenizer.fit_on_texts ? – cgl

+0

不会。如果再次调用fit *,它可能会改变索引。咸菜加载的分词器已准备好使用。 –

1

我创建了问题https://github.com/keras-team/keras/issues/9289在keras回购。在API改变之前,这个问题有一个链接指向一个要点,该代码演示了如何保存和恢复一个标记器,而不需要标记器适合的原始文档。我更喜欢将所有模型信息存储在JSON文件中(因为原因,但主要混合了JS/Python环境),并且这将允许使用sort_keys = True

相关问题