背景

情感分析有很多的应用场景,比如做一个电商网站,卖家需要时刻关心用户对于商品的评论是否是正面的。再比如做一个电影的宣传和策划,电影在键盘侠们中的口碑也至关重要。互联网上关于任何一个事件或物品都有可能产生成千上万的文本评论,如何定义每一个文本的情绪是正面或是负面的,是一个很有挑战的事情。挑战体现在以下几个方面,区别于结构化数据,评论数据的长短不一,很难限定到固定的维度。另外很难通过某个词判断用户的情绪,举个极端的例子,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行,简单介绍下哈:

trainX = pad_sequences(trainX, maxlen=100, value=0.)
testX = pad_sequences(testX, maxlen=100, value=0.)
# Converting labels to binary vectors
trainY = to_categorical(trainY, nb_classes=2)
testY = to_categorical(testY, nb_classes=2)# Network building
net = tflearn.input_data([None, 100])
net = tflearn.embedding(net, input_dim=vocabulary_size, output_dim=128)
net = tflearn.lstm(net, 128, dropout=0.8)
net = tflearn.fully_connected(net, 2, activation='softmax')
net = tflearn.regression(net, optimizer='adam', learning_rate=0.001,loss='categorical_crossentropy')# Training
model = tflearn.DNN(net, tensorboard_verbose=0)
model.fit(trainX, trainY,n_epoch=1, validation_set=(testX, testY), show_metric=True,batch_size=32)
predictions = model.predict(trainX)
print(predictions)

前4行应该比较容易懂

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

运行结果

代码层级是这样的:

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

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

python emotional.py就行

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

运行结果:

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

代码地址

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

与网上的案例不同,其它案例都缺少自定义数据集的功能,限制在了IMDB,使用本文的code可以任意修改预测数据集

参考:http://blog.csdn.net/aliceyangxi1987/article/details/76176746

20行代码实现电影评论情感分析相关推荐

  1. python电影评论情感分析_20行Tensorflow代码实现电影评论情感分析

    原标题:20行Tensorflow代码实现电影评论情感分析 背景 情感分析有很多的应用场景,比如做一个电商网站,卖家需要时刻关心用户对于商品的评论是否是正面的.再比如做一个电影的宣传和策划,电影在键盘 ...

  2. MOOC网深度学习应用开发3——Deep Dream、电影评论情感分析

    Deep Dream:随机噪点图向目标图转换的过程 经典卷积神经网络 电影评论情感分析 自然语言处理基础知识1 自然语言处理基础知识2--分词 自然语言处理基础知识3--词的数字化表示方法和词嵌入 电 ...

  3. Pytorch+Text-CNN+Word2vec+电影评论情感分析实战

    文章目录 0.前言 1.电影评论数据集 2.数据读取 3.数据预处理 4.准备训练和测试集 5.加载词向量模型Word2vec 6.定义网络 7.训练网络 8.测试网络和可视化 9.总结 0.前言 很 ...

  4. 【自然语言处理(NLP)】基于FNN网络的电影评论情感分析

    [自然语言处理(NLP)]基于FNN网络的电影评论情感分析 作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源建 ...

  5. 从爬取豆瓣影评到基于朴素贝叶斯的电影评论情感分析(下)

    基于朴素贝叶斯的电影评论情感分析 用到的包:pandas.jieba(分词工具) file=open(r"review.txt",'r',encoding='utf-8') rev ...

  6. 【Python自然语言处理】使用逻辑回归(logistic)对电影评论情感分析实战(超详细 附源码)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一.舆情分析 舆情分析很多情况下涉及到用户的情感分析,或者亦称为观点挖掘,是指用自然语言处理技术.文本挖掘以及计算机语言学等方法来正确识别和提取文 ...

  7. Tensorflow 笔记 Ⅺ——NLP 实现电影评论情感分析

    文章目录 特别说明 数据集 IMDB 简介 IMDB 数据集 下载地址 目录结构 示例文本 自然语言处理基础 分词 词的数字化表示方法与词嵌入 循环神经网络 RNN与LSTM 数据的时序与含义 RNN ...

  8. 电影评论情感分析-直播案例

    情感分析是机器学习中的一个有挑战性的任务.数据集包含50,000个IMDB电影评论,训练集的25,000个评论标注了二元的情感倾向,IMDB评级<5的情绪评分为0,评级> = 7的情绪评分 ...

  9. 新手体验 kaggle上的电影评论情感分析

    数据集查看 ## 任务描述: "可爱的老式和愚蠢的人之间有一条细线,而基督山伯爵--从未在两边安定下来." Rotten Tomatoes电影评论数据集是用于情感分析的电影评论语料 ...

最新文章

  1. 数据结构(队列实现篇)
  2. sqlserver字符串多行合并为一行
  3. 基于Echarts+HTML5可视化数据大屏展示—设备环境监测平台大数据平台
  4. LINUX 下 RABBITMQ安装与配置
  5. 鹿晗都有 AI 粉了,为什么 AI 换脸剧的效果还这么渣?
  6. Android来电铃声默认设置的实现方法与怎么设置语音来电的默认铃声
  7. Thingsboard 3.1.0 - UI修改
  8. chinapub matlab,MATLAB与通信仿真
  9. 《算法笔记》胡凡 配套刷题网站
  10. Python 流体动力学层流建模
  11. 单片机炫彩灯实训报告_51单片机流水灯实验报告
  12. 110部值得一看的电影
  13. PS2 键盘在win10下开机过程 收发的数据
  14. NLP | textCNN textRNN 图文详解及代码
  15. Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached
  16. 【转】很好的英文自我介绍
  17. [汇总III]微软等公司数据结构+算法面试第1-80题[前80题首次集体亮相]
  18. win7忘记密码怎么办,Administrator忘记密码解决办法【完美、简单、有效】
  19. image adaptive 3dlut based on deep learning
  20. Linux fing cd 查找文件/文件夹并进入目录命令

热门文章

  1. 算法提高课-图论-负环-AcWing 904. 虫洞:spfa求负环裸题
  2. CSP认证201809-1 卖菜[C++题解]:遍历
  3. Leetcode1711. 大餐计数[C++题解]:哈希表和枚举
  4. 实现MVC模式的Web应用程序
  5. ubuntu 创建github公钥
  6. js 点击最后一个 和倒数第二个_期货及期权品种的最后交易日,您都了解吗?...
  7. python编写es脚本_es数据迁移脚本(python)
  8. 前端命名规范_前端开发工程师如何突破年薪50万?这里有4点建议
  9. js考试题 html5新特性,Web前端初级面试题总结
  10. 2018-11-18年工作感想