Keras和情绪分析预测

时间:2018-07-28 21:34:04

标签: python tensorflow keras lstm recurrent-neural-network

早上好

我在yelp https://www.yelp.com/dataset餐厅数据集上训练了LSTM网络。这是一个很大的数据集,在我的PC上花了几天的时间进行训练。无论如何,我保存了模型和权重,现在希望将其用于实时情感评估的预测。

执行此操作的常见/良好/最佳做法是什么: 我加载模型和权重,然后进行编译。这不是问题,文档中或Internet上有很多示例。但是接下来呢? 我要做的就是标记新收到的评论,然后填充并传递给模型。预测?

tokenizer = Tokenizer(num_words = 2500, split=' ')
tokenizer.fit_on_texts(data['text'].values)
print(tokenizer.word_index)  
X = tokenizer.texts_to_sequences(data['text'].values)
X = pad_sequences(X)

不可能那么简单……如果只需要所有这些,那么如何将其与用于训练模型的令牌生成器联系起来?标记化从yelp数据集最初下载的250万条评论是一项昂贵的操作?

谢谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

您将要保存Tokenizer并在推断时重用它,以确保将您的测试句子分解为正确的整数。有关如何执行此操作的示例,请参见this answer

答案 1 :(得分:1)

是的,谢谢您的完美配合。只是为了完成该线程:

我使用以下命令保存/加载了令牌生成器:

import pickle

def save_tokenizer(file_path, tokenizer):
    with open(file_path, 'wb') as handle:
        pickle.dump(tokenizer, handle, protocol=pickle.HIGHEST_PROTOCOL)

def load_tokenizer(file_path):
    with open(file_path, 'rb') as handle:
        tokenizer = pickle.load(handle)
    return tokenizer

然后使用令牌生成器进行预测:

tokenizer = u.load_tokenizer("SavedModels/tokenizer.pcl")

X = tokenizer.texts_to_sequences(data['text'].values)
X = pad_sequences(X, maxlen = maxLength)
print(X)

model = u.load_model_from_prefix("single layer")
model.compile(loss = 'categorical_crossentropy', optimizer='adam',metrics = ['accuracy'])

prediction = model.predict(X)

print(prediction)
print(np.argmax(prediction))

感谢您的帮助。