![](/img/trans.png)
[英]Lime explainer shows prediction probabilities different to the classifier prediction - sentiment analysis
[英]Keras and sentiment analysis prediction
我在yelp https://www.yelp.com/dataset餐厅数据集上训练了一个LSTM网络。 这是一个很大的数据集,在我的PC上花了几天时间进行训练。 无论如何,我保存了模型和权重,现在希望将其用于实时情感评估的预测。
这样做的通用/良好/最佳实践是什么:我加载模型和权重,然后对其进行编译。 这不是问题,文档中或Internet上有很多示例。 但是接下来呢? 我要做的就是标记新收到的评论,然后填充并传递给model.predict?
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万条评论的标记是一项昂贵的操作?
感谢您的任何建议。
您将需要保存Tokenizer
并在推断时重用它,以确保将测试语句分解为正确的整数。 请参阅此答案以获取有关如何执行此操作的示例。
是的,谢谢您的完美配合。 仅出于此线程的完整性:
我使用以下命令保存/加载了令牌生成器:
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))
谢谢你的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.