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

20行Tensorflow代码实现电影评论情感分析

※发布时间:2018/3/29 1:17:26   ※发布作者:habao   ※出自何处: 

  情感分析有很多的应用场景,比如做一个电商网站,卖家需要时刻关心用户对于商品的评论是否是正面的。再比如做一个电影的宣传和策划,电影在键盘侠们中的口碑也至关重要。互联网上关于任何一个事件或物品都有可能产生成千上万的文本评论,如何定义每一个文本的情绪是正面或是负面的,是一个很有挑战的事情。挑战体现在以下几个方面,区别于结构化数据,评论数据的长短不一,很难限定到固定的维度。另外很难通过某个词判断用户的情绪,举个极端的例子,fu*k通常被认为是贬义词,但是如果一条评论是“傲海 is fu*kinghandsome”,那么其实就是一个正向的意义。本文我要使用IMDB数据集,通过20行的Tensorflow代码实现一个电影评论预测模型,准确率可以超过百分之九十五,里面涉及到一些词袋模型以及embedding的概念,这些我等下一篇文章再讲,这一次我们就讲实践。

  介绍下本文用到的训练数据IMDB,完全开源的一个电影评价数据集,有好几万条真实的电影评论数据。

  每一个数据都被储存为txt文件存放,其中pos文件夹就存放正面评论的数据,neg文件夹存放负面情绪的数据。这些数据可以通过一些简单的代码提取出来,并且标记。数据集下载地址:

  简单来说,在数据预处理阶段,需要把这些文本按照正向和负向打标,并且把文本向量化,比如“Aohai is fuc*inggentle”这种话要怎么变成数值向量,下一篇文章会具体说明。

  to_categorical:把目标列分成0和1,0是负样本,1是正样本用的是Tensorflow的high level的库tflearn去构建神经网络计算图embedding下次讲,大家可以理解为把每个词表示成向量用的是lstm模型,好处就是这种网络结构比较适合做上下文关联的分析,适合NLP的场景full connect加regression,分类的标准组合然后fit一下,训练,n_epoch是迭代的轮数,为了快速出结果我就写的1利用模型对训练数据做一次predict,大家也可以换成自己的数据

  执行文件emotional.py和下载的IMDB数据放到同一级目录,train文件夹下有pos和neg两个文件夹,分别存放正向和负向的评论~

  需要安装Tensorflow和tflearn这两个库,当然也可以用阿里云机器学习PAI的notebook,这样就不用安装了,下图就是我用PAI跑出来的截图。

  epoch表示的是迭代次数,代码里只设置了迭代一次。最下面的这一串矩阵一共有两列,每一行对应一个需要预测的评论数据,每一行的第一列表示这个评论属于负向的概率,每一行的第二列表示这个评论属于正向的概率。

  d5gt.cn 指纹膜 共享纸巾机 赛车群 欢威 www.k6c8j.cn www.81pdp8.cn 特价团 德国塔诺五金