基于Cemotion的在线评论情感分析及准确率验证(准确率:96%)
前段时间找到了Cemotion这个NLP第三方库,发现它准确率高的惊人,Cemotion算法的优点在于准确率高、调用方便,缺点是运行较慢(相比其他NPL算法)、环境配置(自动安装TensorFlow环境,对python版本有要求)
目录
前言
一、Cemotion库的安装
1.Pycharm安装法
2.pip安装方法
二、验证Cemotion情感分析准确率
1.加载库并实例化
2.读取评论文本数据
3.进行Cemotion情感值预测
4.验证准确率
三、Cemotion实际情感分析
1.加载库&设置开始计时器&读取数据
2.定义函数&批量处理所有的评论信息
3.输出excel&计时输出
总结
前言
介绍一下,Cemotion同Snownlp等NLP算法一样可以在Python中实现,主要拿来用于中文情感倾向分析,可以说是很专注了。Cemotion的模型原理是基于循环神经网络训练,会为中文文本返回 0~1之间的情感倾向置信度,当我们调用Cemotion库的时候会自动安装TensorFlow环境,是Google的开源深度学习框架,里边有大量的中文训练集-big_Chinese_Words_Map.dict。
在本文中,将重点介绍Cemotion中的情感分析,python版本:3.68,Cemotion版本:0.3.3,供大家参考。
一、Cemotion库的安装
1.Pycharm安装法
文件菜单栏中点击设置,然后选择项目中的解释器,点击“+”号按钮输入Cemotion即可查询下载,现在最新版本应该是0.3.3。
2.pip安装方法
也可在终端pip下载:
pip install snownlp
二、验证Cemotion情感分析准确率
首先还是准备一下测试数据,这次我从京东采集了130条赣南脐橙的在线评论文本,然后人工标注每条评论的情感正负性,情感正负性就是指该条评论代表了评论者的何种态度,其中-1表示贬义,1表示褒义。以下是样例:
1.加载库并实例化
第一步先设置软件的默认编码为utf-8;然后将Cemotion实例化;代码如下:
# -*- codeing = utf-8 -*-
import pandas as pd
from cemotion import Cemotion
c = Cemotion()
2.读取评论文本数据
通过pd(pandas)读取训练集excel表,第一列也就是comments列,是我们需要的评论数据
text = pd.read_excel(r'C:\Users\Desktop\Cemotion训练集.xlsx')
#text0读取text数据框的第一列的所有数据
text0=text.iloc[:,0]
3.进行Cemotion情感值预测
由于Cemotion本身的配置环境带有大量的中文训练集,因此一般不需要训练语料库,本文也就不准备训练集了;
对每条评论进行情感分析,并存入senti列表,以备后续准确率检验
senti = [] #遍历每条评论进行预测,依次存入senti列表
for i in text0:senti.append(c.predict(i))
4.验证准确率
预测结果为positive的概率,positive的概率大于等于0.6,我认为可以判断为积极情感,小于0.6的判断为消极情感。所以以下将概率大于等于0.6的评论标签赋为1,小于0.6的评论标签赋为-1,方便后面与实际标签进行比较:
newsenti=[]
for i in senti:if (i>=0.6):newsenti.append(1)else:newsenti.append(-1)
text['predict']=newsenti #将新的预测标签增加为text的某一列,所以现在text的第0列为评论文本,第1列为实际标签,第2列为预测标签
counts=0
for j in range(len(text.iloc[:,0])): #遍历所有标签,将预测标签和实际标签进行比较,相同则判断正确。if text.iloc[j,2]==text.iloc[j,1]:counts+=1
print(u"准确率为:%f"%(float(counts)/float(len(text))))#输出本次预测的准确率
运行结果为:
可以看到上述语料的情感分析准确率达到了96%,可以说是NLP算法中的第一梯队了,当然也与购物评论好评居多有关,而且比我之前检验的SnowNLP算法准确率(88%)要高出一截,大家也可以拿来检验自己的语料!
三、Cemotion实际情感分析
这部分是对在线评论数据(语料)进行实际情感分析,然后将情感分析后的结果输出excel结果,因为Cemotion算法基于循环神经网络方法,运行较慢,所以在代码中加了简单的计时脚本。
语料还是那个语料,不过删了人工标注的情感正负性
1.加载库&设置开始计时器&读取数据
import pandas as pd
from cemotion import Cemotion
c = Cemotion()
import time
start = time.clock()#程序运行前的当前时刻df = pd.read_excel(r'C:\Users\Desktop\Cemotion训练集.xlsx')
2.定义函数&批量处理所有的评论信息
#定义函数,批量处理所有的评论信息
def get_sentiment_cn(text):return c.predict(text)
#根据df里的“comments”列,将读取文本后的情感分析结果添加到新的一列,命名为“sentiment”
df["sentiment"] = df['comments'].apply(get_sentiment_cn)
print(df)
3.输出excel&计时输出
#储存为表格。
data1=df.to_excel(r'C:/Users/Desktop/CemotionSentiments.xlsx')
#输出程序运行时间
elapsed = (time.clock() - start)#结束后计时-开始前计时
print("Time used:%s 秒"%elapsed)
运行结果为:
如图,sentiment列即为Cemotion情感分析后的值,基本上带好评的评论的情感值趋近于1,130条语料的程序运行了10秒,时间花费较多,不过准确率很高!
总结
Cemotion情感分析准确率验证这方面内容不多,因此是按照SnowNLP模板来写的,有不足之处请大家批评指正,希望能多结识这方面的朋友,共同学习、共同进步。
基于Cemotion的在线评论情感分析及准确率验证(准确率:96%)相关推荐
- Python实现基于LSTM的中文评论情感分析
资源下载地址:https://download.csdn.net/download/sheziqiong/85949420 资源下载地址:https://download.csdn.net/downl ...
- 【python数据挖掘课程】二十六.基于SnowNLP的豆瓣评论情感分析
这是<Python数据挖掘课程>系列文章,前面很多文章都讲解了分类.聚类算法,而这篇文章主要讲解如何调用SnowNLP库实现情感分析,处理的对象是豆瓣<肖申克救赎>的评论文本. ...
- 基于LSTM电商评论情感分析-多评价指标可视化版(内附源码)【自然语言处理NLP-100例】
- 基于双向LSTM的影评情感分析算法设计学习记录
引言 需求分析,技术可行性(目前的研究进度),主流怎么做?我要如何做? 随着互联网技术的飞速发展及联网的便捷,越来越多的人在网上表达自己的意见.其中,电影评论受到广泛关注.很多人选择在闲暇时间观看电影 ...
- 商品评论情感分析——基于商品评论建立的产品综合评价模型(1)
商品评论情感分析--基于用户评论建立的产品综合评价模型(1) 1.背景 1.1问题分析 2.数据预处理 2.1删除无关数据 2.2文本去重 3.情感分析 4.LDA主题模型 4.1评论文本分词 4.2 ...
- 自然语言处理NLP-100例 | 第二篇:在线课程评论情感分析-本科毕设实战案例
大家好,我是K同学啊~ 春去秋来,时间就这样嘀嗒嘀嗒的过去,不知道大家的毕设做得怎么样了呢 K同学就今天和大家分享一篇关于在线课程评论情感分析的实战案例,帮助大家找找灵感. 数据用的是一份公开的在线课 ...
- 【自然语言处理(NLP)】基于FNN网络的电影评论情感分析
[自然语言处理(NLP)]基于FNN网络的电影评论情感分析 作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源建 ...
- 【人工智能毕设之基于Python+flask+bilstm的评论情感分析系统-哔哩哔哩】 https://b23.tv/QU56eTl
[人工智能毕设之基于Python+flask+bilstm的评论情感分析系统-哔哩哔哩] https://b23.tv/QU56eTl https://b23.tv/QU56eTl
- 基于用户评论情感分析详细设计与技术实现
基于用户评论情感分析详细设计与技术实现 文章目录 基于用户评论情感分析详细设计与技术实现 前言 一.技术架构 二.分析服务器构建 1.1 创建flask项目 1.2 编写数据库连接脚本,获取用户评论数 ...
最新文章
- python cursor游标重置位置scroll_MySQL的游标
- Linux 蓝牙读写,实战Linux Bluetooth编程(三) HCI层编程
- 申请加入了sharepoint团队
- Win7批量压缩照片
- 实用的 Python —— os.system() 在 python 语句中执行 dos 命令
- python项目开发实例-Python小项目:快速开发出一个简单的学生管理系统
- elasticsearch的keyword与text的区别
- codepush 微软服务器,ionic3 code-push 搭建自己服务器的问题
- python gui设计_[原创]使用VB设计Python的GUI界面(Tkinter Designer) 附源码,[更新V1.5.1]...
- Visual C++ 2010 Express 下载及详细安装教程(VC2010)
- 题解 luogu P6002 【[USACO20JAN]Berry Picking S】
- java生成对称矩阵_JAVA 对称矩阵的压缩存储
- python找不到解释器_为什么pycharm找不到python解释器
- HTML短信测压引流源码
- Ubuntu 开机自动运行命令
- Nebula Graph|信息图谱在携程酒店的应用
- linux su自动输入密码 使用socat
- tomcat问题——判断tomcat是否安装成功
- [前端基础] CSS3 篇
- 备库ORA-00313 ORA-00312 ORA-27037
热门文章
- 互联网产品的帮助中心页面制作方法?
- Unknown system variable ‘tx_isolation‘ 解决方案
- 安东尼罗宾--激发你的无限潜能[连载]--7 8章
- spring中load-time-weaver静态aop处理,基于aspectJ的静态aop处理
- 最“笨”的方法—蛮力法
- Python学习笔记:7.5.8 Django快速建站 - Web开发实战 微信公众号开发3
- 【网络安全】网站为什么需要安装SSL安全证书?
- 自然灾害数据:中国台风数据集(更新至2022.3)
- 计算机中语言的log与数学中的log的区别
- linux常见服务器端口