网站首页 > 情感社区> 文章内容

基于LSTM对IMDB数据集进行情感分析

※发布时间:2018-9-12 9:02:50   ※发布作者:habao   ※出自何处: 

  首先写介绍一下本次文章的主要内容。简单来说就是判断电影评论内容的极性(也就是差评还是好评)。所以该极性也就可以只分为两种可能性(0或者1)。同时本篇文章主要是基于Keras中LSTM 进行极性判断。

  这只是极少部分数据集。详细数据集可以自行下载参观欣赏把玩。简单概括一下该数据集。其中分为两个部分,第一部分是test dataset(测试数据集),第二部分是train dataset(训练数据集),其中在train dataset中分为neg,pos两个部分(neg:negative消极的,pos:positive积极的)。所以我们需要做的事情就是将这两个数据集进行训练出一个模型同时进行test数据集的测试。

  因为刚拿到数据我们可以发现这是由几万个单独的txt文本组成的文件夹。那么第一步就是将这些文件合并成一个。代码如下所示:

  这样我们就完美的导入了数据。同时通过简单的代码len(neg_list)和len(pos_list)可以发现总共数据量是24999。多么症的数据量(PS.为啥不是25000。。。)

  如果大家有一些自然语言处理的相关知识的话,应该对停用词和标点符号有一定的了解。一般来说。在拿到数据集的时候我们需要对数据集进行预处理。其中就包含对原始数据集去停用词和去标点符号。这样做的原因就是为了去噪音提高准确度。那么接下来就需要进行这一步的操作了。

  这样我们就可以得到相对干净的数据集。如果你不进行这一步的线万多。但是通过去停用词和去标点符号之后,词汇量变成了小9万。这样就极大的减少我们的工作量。其实进行完该步骤的话。我们就已经完成了一大部分。因为计算机只能识别数字。所以我们需要把单词转换为数字。(其实在英文和中文进行情感分析时该步骤都是必要的。),但是不要认为这个步骤很难。其实so easy。

  上述代码主要是为了转换词索引同时设置每个句子长度不超过800。超出就截断。不够就补0.做完该步骤之后接下来还有一个问题就是。我们的原始数据集分布都是顺序的。也就是说先是pos然后是neg。那么直接输入这些数据其实是有问题的。我们需要打乱数据再进行数据输入(使其离散)。

  任务结束。上述代码就是完整的LSTM搭建。是不是很简单。。其实从这里我们也看出来了很多数据分析难就难在数据预处理上。同时准确率也很依赖数据预处理。接下来就是展示一下最终结果:

  此处我总共进行了10次迭代。在线测字打分花费了大概40分钟左右吧。。。但是可以发现在测试集上最高准确率可以达到87.5%。这个结果还是不错的。就是时间很蛋疼。。大家完全趁这个时间打一把lol是没有问题的。。。。。。返回搜狐,查看更多

  文章由325棋牌提供发布