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

92人阅读 评论(0) 收藏 举报
分类:

背景

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


数据

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


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

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


代码

代码其实不止20行,但是真正建模并训练的就是只有20行,简单介绍下哈:


  • pad_sequences把输入的词向量转成矩阵,不够的用0


  • to_categorical:把目标列分成010是负样本,1是正样本

  • 用的是Tensorflowhigh level的库tflearn去构建神经网络计算图

  • embedding下次讲,大家可以理解为把每个词表示成向量

  • 用的是lstm模型,好处就是这种网络结构比较适合做上下文关联的分析,适合NLP的场景

  • full connectregression,分类的标准组合

  • 然后fit一下,开启训练,n_epoch是迭代的轮数,为了快速出结果我就写的1

  • 利用模型对训练数据做一次predict,大家也可以换成自己的数据


运行结果

代码层级是这样的


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

算了,大家直接clone我的项目,我放一些数据在里面,直接运行:

python emotional.py就行

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

运行结果:


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


代码地址,我只放了一点点测试数据,完整的数据大家自己去IMDB下吧:https://github.com/jimenbian/sentiment-analysis

查看评论

基于用户的协同过滤算法的电影推荐系统

上一篇讲解了推荐算法的分类,这里电影推荐系统具体分析一下 第一步:建立用户电影矩阵模型         如表1所示,协同过滤算法的输入数据通常表示为一个m*n的用户评价矩阵Matrix,m是用户数,n...
  • u012050154
  • u012050154
  • 2016-08-21 16:54:02
  • 6721

LSTM Theano sentiment analysis 深度学习 情感分析教程

学习LSTM最好的教程之一莫过是deep learning tutorial 见 http://deeplearning.net/tutorial/lstm.html 这里的Sentiment a...
  • dongfangxiaozi_
  • dongfangxiaozi_
  • 2017-01-14 12:57:18
  • 1999

斯坦福大学自然语言处理第七课“情感分析(Sentiment Analysis)”

一、课程介绍 斯坦福大学于2012年3月在Coursera启动了在线自然语言处理课程,由NLP领域大牛Dan Jurafsky 和 Chirs Manning教授授课: https://cla...
  • Erli11
  • Erli11
  • 2014-04-17 11:05:41
  • 19539

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

背景情感分析有很多的应用场景,比如做一个电商网站,卖家需要时刻关心用户对于商品的评论是否是正面的。再比如做一个电影的宣传和策划,电影在键盘侠们中的口碑也至关重要。互联网上关于任何一个事件或物品都有可能...
  • guyuealian
  • guyuealian
  • 2018-03-09 09:27:38
  • 92

情感分析与观点挖掘总结笔记(一)

总结自《SentimentAnalysis-and-OpinionMining》第一章1.2.1情感分析的不同分析层次 根据目前的研究现状,一般可以将情感分析调查分为三个主要层次 一、文本文档层次...
  • liuyuemaicha
  • liuyuemaicha
  • 2017-01-06 10:49:14
  • 8615

电影评论人名抽取与情感分析

电影评论的数据挖掘是我一直以来的项目。最近的刚完成的一个工作是于分析影评中表露出来的对演员角色的情感倾向。主要的工作便是识别评论中人名+情感分析。评论人名抽取与情感分析影迷用户的电影评论中往往包含大量...
  • yinglish_
  • yinglish_
  • 2017-09-16 20:59:12
  • 1843

互联网文本情感分析

摘要   中文微博情感分析旨在发现用户对热点事件的观点态度。已有的研究大多使用SVM,CRF等传统算法根据手工标注情感特征对微博情感进行分析。该文主要探讨利用深度学来做中文微博情感分析的可行性,采用...
  • BBZZ2
  • BBZZ2
  • 2017-06-01 16:34:19
  • 1461

[NLP]如何进行情感分析

本文介绍的是如何进行情感识别。在自然语言中(尤其社交媒体和购物网站中),每一句话都隐含了具体的情感倾向,比如中性、正面、负面。比如:今天天气不错;今天心情不太好;苹果手机不错;地球是圆的。对于人来说,...
  • android_ruben
  • android_ruben
  • 2017-10-08 12:18:46
  • 1060

kaggle 文本情感分析数据集

  • 2018年01月09日 10:48
  • 52.35MB
  • 下载
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 67万+
    积分: 6831
    排名: 4285
    博客专栏
    最新评论