繁体   English   中英

Keras和情绪分析预测

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM