RNN情感分析初学者指南!
情感分析可能是对自然语言处理中最常见的应用(之一)。作者认为(从企业的角度来讲),我们无需强调对它所服务的用户或潜在用户情感分析的重要性。所以我们现在要做的是使用递归神经网络在IMDB数据集中训练电影评论分类器。如果你想深入学习情感分析,这会是一篇很好的文章。
数据
我们将使用递归神经网络,特别是LSTM,在Keras进行情感分析。使用Keras是因为它有一个内置的IMDb电影评论数据集,这正是我们所需要的。
这里需要补充的是:LSTM(Long Short-Term Memory)是长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件。LSTM 已经在科技领域有了多种应用。基于 LSTM 的系统可以学习翻译语言、控制机器人、图像分析、文档摘要、语音识别图像识别、手写识别、控制聊天机器人、预测疾病、点击率和股票、合成音乐等等任务。
在训练和测试数据中设置词汇表大小和负载。
加载数据集,其中包含着25000个训练样本和25000个测试样本。
检查样品及其标签。
需要注意的是,影评被存储为整数序列。上图是预先分配给每个单词的单词ID,其中标签是整数。(0表示负数,1表示正数)。
我们可以通过imdb.get_word_index()找回评论中的原始单词(即未经编码的单词)。
最大审查长度和最低审查长度。
最长审查时间:2697
最低审查时间:14
PAD序列
为了将这些数据输入到RNN中,所有输入文档都必须具有相同的长度。我们需要通过截断较长的评论并将较短的评论填充为空值(0)。将最大评审长度限制为max_word。我们可以使用Keras中的PAD_Seques()函数来实现这一点。现在,我们要把max_word设置为500。
情感分析的RNN模型设计
我们在下面的代码单元中开始构建我们的模型架构。我们从Keras导入了一些你可能需要的图层,但你也可以使用你喜欢的其他图层。
需要强调的是,我们输入的是最大长度max_word的单词序列(从技术上讲,是单词ID),输出是二进制情感标签(0或1)。
总之,我们的模型是一个简单的RNN模型,它包含一个嵌入层、1个LSTM层和1个密集层。里面有213301个需要训练的参数。
训练和评估我们的模型
我们首先需要通过指定我们希望在训练时使用的损失函数和优化器以及任何我们想要测量的评估指标来编译我们的模型。指定适当的参数时,参数中至少有一个要符合国际标准。
一旦编译完毕,我们就可以开始训练了。需要强调的是,有两个重要的训练参数需要指定 ,即批处理大小和训练次数。因为这两个参数与我们的模型体系结构一起决定了训练的总时间。
一旦我们训练好了我们的模型,就该看看它的测试数据表现如何了。
现在我们通过度量=['accuracy'],分数[1]表示准确性。
测试准确度:0.86964
总结
我们有几种方法可以建立我们的模型。通过对不同的体系结构、层次和参数进行实验,我们可以继续尝试和提高模型的准确性。