Python 如何使用Keras imdb数据集预测情绪分析?

Python 如何使用Keras imdb数据集预测情绪分析?,python,machine-learning,keras,deep-learning,Python,Machine Learning,Keras,Deep Learning,我正在使用keras实现情绪分析模型。我创建了模型并对其进行了培训。但现在我不确定如何预测新数据,因为imdb数据集已经在向量中([22,33,4,等等…]) 那么,我如何预测一个新的句子,比如:“我爱这部电影” 你必须得到单词词典,索引对。使用它,您可以将单词转换为索引,最后填充它 from nltk import word_tokenize from keras.preprocessing import sequence word2index = imdb.get_word_index()

我正在使用keras实现情绪分析模型。我创建了模型并对其进行了培训。但现在我不确定如何预测新数据,因为imdb数据集已经在向量中([22,33,4,等等…])

那么,我如何预测一个新的句子,比如:“我爱这部电影”


你必须得到单词词典,索引对。使用它,您可以将单词转换为索引,最后填充它

from nltk import word_tokenize
from keras.preprocessing import sequence
word2index = imdb.get_word_index()
test=[]
for word in word_tokenize( "i love this movie"):
     test.append(word2index[word])

test=sequence.pad_sequences([test],maxlen=max_review_length)
model.predict(test)

为了研究这个主题,我写了一个在keras上工作的机器学习。 这台机器对来自网站的新电影评论进行分类 基于IMDB数据库

将numpy导入为np
从keras导入模型
从keras导入图层
从keras.dataset导入imdb
从nltk导入单词\u标记化
导入字符串
顶级单词=10000
def准备字符串(文本字符串,维度=顶部单词):
text\u string=text\u string.lower()
table=str.maketrans(dict.fromkeys(string.标点符号))
text\u string=text\u string.translate(表)
word2index=imdb.get\u word\u index()
测试=[]
对于word\u标记化中的word(文本\u字符串):
test.append(word2index[word])
结果=np.零(维度)
对于_,枚举(测试)中的顺序:
如果顺序<尺寸:
结果[顺序]=1
打印(“\n原始字符串:”,文本字符串,“\n”)
打印(“\n索引转换:”,测试“\n”)
结果=np.重塑(结果,(1,顶部单词))
打印(“\n转换为向量:”,结果“\n”)
返回结果
def矢量化(序列,维度=顶部单词):
结果=np.零((len(序列),维数))
对于i,枚举中的序列(序列):
结果[i,序列]=1
返回结果
(训练数据,训练目标),(测试数据,测试目标)=imdb.load\u数据(num\u单词=TOP\u单词)
数据=np。连接((训练数据、测试数据),轴=0)
目标=np。连接((训练目标、测试目标),轴=0)
数据=矢量化(数据)
targets=np.array(targets.astype(“float32”)
测试x=数据[:10000]
测试y=目标[:10000]
列车×=数据[10000:]
列车y=目标[10000:]
model=models.Sequential()
model.add(layers.Dense(50,activation=“relu”,input_shape=(TOP_WORDS,))
model.add(layers.Dropout(0.3,noise_shape=None,seed=None))
model.add(layers.Dense(50,activation=“relu”))
model.add(layers.Dropout(0.2,noise_shape=None,seed=None))
model.add(layers.Dense(50,activation=“relu”))
model.add(layers.Dense(1,activation=“sigmoid”))
model.summary()
model.compile(
optimizer=“adam”,
loss=“二进制交叉熵”,
指标=[“准确度”]
)
结果=model.fit(
列车x,列车y,
纪元=10,
批次尺寸=500,
验证数据=(测试x,测试y)
)
打印(“测试损失:”,结果。历史记录[“损失”])
打印(“测试精度:”,结果。历史记录[“精度”])
数据字符串=准备字符串("首先,这不是一部战争电影。这是一部关于战争中人类的纽带的电影。这是迄今为止我在很长一段时间内看过的最好的电影。我有很高的期望,也没有失望。一开始我很想看到山姆·门德斯的一个想法,但过了一段时间,我不再关注这一点。当一切都是关于战争的时候这部电影拍得很好,我被两个主角吸引住了,其他什么都不重要。我会一次又一次地看这部电影。”)
打印(“预测:”,model.predict(数据字符串))
打印(“预测类:”,模型。预测类(数据字符串))
打印(“----1良好-----\n”)
数据字符串=准备字符串(“这是我很久以来看过的最好的电影之一。值得在大银幕上观看。电影摄影非常出色,一次拍摄的过程真的让你感觉自己就在那里。两位主要演员真正理解了这样一个概念,即人与人之间的接触可以如此强烈,特别是在战争这种可怕的情况下。洞察力强,感人,整体令人惊叹(手表)
打印(“预测:”,model.predict(数据字符串))
打印(“预测类:”,模型。预测类(数据字符串))
打印(“----1良好-----\n”)
数据字符串=准备字符串(“我觉得脏兮兮的,我觉得累了,我觉得饿了,我觉得有一种成功的意愿,我在看这部电影的时候感到悲伤。我感觉自己也在为联系麦肯齐上校而奋斗两个小时。几个小时后,我的情绪仍然在我的身体之外。美妙的照片和音乐。出色的工作人员阵容。这部电影真是太完美了!)
打印(“预测:”,model.predict(数据字符串))
打印(“预测类:”,模型。预测类(数据字符串))
打印(“----1良好-----\n”)
数据字符串=准备字符串(“我觉得自己根本不认识这些角色。我不知道这两个士兵为什么是朋友,也不知道他们在一起经历了什么。电影摄影试图让这部电影成为一部情感震撼的电影,结果却产生了相反的效果。战争场景免费近距离拍摄尸体和身体部位,这对故事没有任何影响快变老了。”)
打印(“预测:”,model.predict(数据字符串))
打印(“预测类:”,模型。预测类(数据字符串))
打印(----0不正确-----\n)
数据字符串=准备字符串(“这部电影唯一令人兴奋的部分是《最后的人都死了》的结尾,它代表了第一次世界大战。我高度怀疑他遇到了一个带着被遗弃的孩子的陌生女人,我高度怀疑这一切是否发生过。这部电影拯救了列兵瑞安,但是无聊且可预测。”)
打印(“预测:”,model.predict(数据字符串))
普林
from nltk import word_tokenize
from keras.preprocessing import sequence
word2index = imdb.get_word_index()
test=[]
for word in word_tokenize( "i love this movie"):
     test.append(word2index[word])

test=sequence.pad_sequences([test],maxlen=max_review_length)
model.predict(test)