因论文涉及到SnowNLP情感分析的内容,于是对该内容进行了学习,但发现网上的资源发布更新不及时,大多数文章均发布于18年及以前。由于python版本的迭代,使得以往的资源代码有所出入,因此我对于SnowNLP情感分析及准确率验证代码进行了修正更新,结合实例形式(由于是excel用到Pandas)分析了Python使用中文文本挖掘库SnowNLP操作中文文本进行感情分析的相关实现技巧与注意事项,需要的朋友可以参考下。

文章目录

前言

一、SnowNLP库的安装

1.Pycharm安装法

2.pip安装方法

二、验证SnowNLP情感分析准确率

1.改变默认编码&加载库

2.读取评论文本数据

3.训练语料库(购物评论可跳过)

4.进行预测

5.验证准确率

三、SnowNLP实际情感分析

1.加载库&读取评论文本数据

2.定义函数(批量处理所有的评论信息)

2.情感分析&保存

参考文献


前言

首先简单介绍一下这个库可以进行哪些文本挖掘。Snownlp主要可以进行中文分词(算法是Character-Based Generative Model)、词性标注(原理是TnT、3-gram 隐马)、情感分析(官网木有介绍原理,但是指明购物类的评论的准确率较高,其实是因为它的语料库主要是购物方面的,可以自己构建相关领域语料库,替换原来的,准确率也挺不错的)、文本分类(原理是朴素贝叶斯)、转换拼音、繁体转简体、提取文本关键词(原理是TextRank)、提取摘要(原理是TextRank)、分割句子、文本相似(原理是BM25)。官网还有更多关于该库的介绍,建议先看一下官网,里面有最基础的一些命令的介绍,官网链接:python情感分析工具snownlp 0.11.1。

在本文中,将重点介绍Snownlp中的情感分析,python版本:3.10,供大家参考。


一、SnowNLP库的安装

1.Pycharm安装法

如果你使用的是Pycharm,直接在Pycharm中安装即可,具体安装步骤如下:

2.pip安装方法

如果你使用的不是pycharm编译器,比如说用的是Spyder,那么这里就可以用也很常见的 pip install 库名 安装办法:

pip install snownlp

二、验证SnowNLP情感分析准确率

首先进行练习数据的准备,从京东网站采集了130条关于草莓的评论文本作为练习数据,由于我只是想练习一下,没采集更多,如果数据量越多,计算出来的准确率越高,将下边每个步骤的代码连接起来就是完整的程序~

1.人工标注

人工标注每条评论的情感正负性,情感正负性就是指该条评论代表了评论者的何种态度,其中-1表示贬义,1表示褒义。以下是样例:

2.改变默认编码&加载库

软件本身默认的是Ascii编码,所以第一步先设置软件的默认编码为utf-8;加载本文所需要的库;代码如下:

# -*-coding = utf-8 -*-
import pandas as pd
from snownlp import SnowNLP
from snownlp import sentiment

3.读取评论文本数据

读取上边收集到数据的excel文件,因此使用pandas:

#//是转义的方式。表示这里\\是一个普通\字符,不容易出错
text = pd.read_excel(r'C:\\Users\Desktop\情感分析测试集.xlsx')
#text0读取text数据框的第一列的所有数据
text0=text.iloc[:,0]

4.训练语料库(购物评论可跳过)

由于SnowNLP语料库本身是基于购物评论内容,因此若只是购物评论则不需要进行训练:

#对语料库进行训练,把路径改成相应的位置。我这次练习并没有构建语料库,用了默认的,所以把路径写到了sentiment模块下。
sentiment.train('E:/Lib/site-packages/snownlp/sentiment/neg.txt', 'E:/Lib/site-packages/snownlp/sentiment/pos.txt')
#这一步是对上一步的训练结果进行保存,如果以后语料库没有改变,下次不用再进行训练,直接使用就可以了,所以一定要保存,保存位置可以自己决定,但是要把`snownlp/seg/__init__.py`里的`data_path`也改成你保存的位置,不然下次使用还是默认的。
sentiment.save('D:/pyscript/sentiment.marshal')

5.进行预测

遍历每条评论进行预测,可得到每条评论的情感值

senti=[SnowNLP(i).sentiments for i in text0]

5.验证准确率

预测结果为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的某一列,所以现在text的第0列为评论文本,第1列为实际标签,第2列为预测标签
text['predict']=newsenti
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))))

运行结果为:

准确率还不错,一是SnowNLP语料库本身与购物评论相关,二是该京东网站评论好评占绝大部分,不是很具有代表性。如果要进行其他内容的文本分析,建议要构建自己的语料库。

三、SnowNLP实际情感分析

验证完SnowNLP的准确率后就可以进行情感分析的实际操作了,这部分也相较简单,依然是使用pandas提取excel表,可直接使用第二部分的数据,也可将lable列删除,本文为方便直就拿来用了,需要对列名多加注意。

1.加载库&读取评论文本数据

# -*-coding = utf-8 -*-
from snownlp import SnowNLP
import pandas as pddf = pd.read_excel(r'C:\\Users\Desktop\情感分析测试集.xlsx')

2.定义函数(批量处理所有的评论信息)

def get_sentiment_cn(text):s = SnowNLP(text)return s.sentiments

2.情感分析&保存

根据df里的“comments”列,将读取文本后的情感分析结果添加到新的一列,命名为“sentiment”

df["sentiment"] = df['comments'].apply(get_sentiment_cn)
print(df)
#储存为表格。
ata1=df.to_excel(r'C:/Users/Desktop/sentiments.xlsx')

运行结果为:

如图,sentiment列即为SnowNLP情感分析后的值,由于是88%的准确率,依然有些误差,最后有不足之处请大家批评指正,希望能多结识这方面的朋友,共同学习、共同进步。


参考文献

1.python的中文文本挖掘库snownlp进行购物评论文本情感分析实例

2.情感分析——深入snownlp原理和实践

基于SnowNLP的购物评论文本情感分析及准确率验证相关推荐

  1. 基于SnowNLP的商品评论文本情感分析

           摘要:情感文本电商情感标注分析研究是当前电商数据情感挖掘学术研究的重要热点,具有极高的国际应用价值.对当前电商手机在线商品评论词典进行情感文本电商情感标注分析与词典数据情感挖掘研究具有很 ...

  2. python的中文文本挖掘库snownlp进行购物评论文本情感分析实例

    昨晚上发现了snownlp这个库,很开心.先说说我开心的原因.我本科毕业设计做的是文本挖掘,用R语言做的,发现R语言对文本处理特别不友好,没有很多强大的库,特别是针对中文文本的,加上那时候还没有学机器 ...

  3. 基于BiLSTM的酒店评论文本情感分析

    介绍:(需要有部分机器学习和深度学习,还有NLP的理论知识) 使用深度学习框架TensorFlow中的keras接口实现BiLstm神经网络,用训练集训练出一个模型,可以判断酒店评论文本的正负向情绪. ...

  4. 使用snownlp对京东购物评论进行情感分析

    使用snownlp对京东购物评论进行情感分析 目的:利用snownlp包,对京东评论进行情感分析 涉及: mysql,snownlp,pandas等工具包 代码结构如下: 注意: jd_comment ...

  5. (5)【整合】基于机器学习的酒店评论文本倾向性分析

    酒店评论情感分析系统(五)-- [整合]基于机器学习的酒店评论文本倾向性分析 本文主要是对之前的第三.四节所介绍的各分块进行整合. 流程: 对GUI界面输入的评论文本,先进行中文分词和去停用词,然后再 ...

  6. 基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种

    基于LSTM三分类的文本情感分析,采用LSTM模型,训练一个能够识别文本postive, neutral, negative三种 ,含数据集可直接运行 完整代码下载地址:基于LSTM三分类的文本情感分 ...

  7. 基于电商产品评论数据情感分析

    #!/usr/bin/env python # coding: utf-8# # -- 基于电商产品评论数据情感分析 --# ### 1.案例简介 # # 1.利用文本挖掘技术,对碎片化.非结构化的电 ...

  8. 基于Cemotion的在线评论情感分析及准确率验证(准确率:96%)

    前段时间找到了Cemotion这个NLP第三方库,发现它准确率高的惊人,Cemotion算法的优点在于准确率高.调用方便,缺点是运行较慢(相比其他NPL算法).环境配置(自动安装TensorFlow环 ...

  9. 阅读:面向电子商务的评论文本情感分析研究

    主题:评论文本的情感分析(倾向性分析.观点识别.意见挖掘.情感分类) 一.两种方法:基于语义,基于机器学习. 1.基于语义: 国外:(支持向量机(SVM)和贝叶斯算法具有较好的情感分类效果). 国内: ...

最新文章

  1. TCP核心概念-慢启动,ssthresh,拥塞避免,公平性的真实含义
  2. 快速使用GitBook以及二级标题的设置
  3. 二分法查找和普通查找
  4. 雷人!09年0分最具文采的高考作文
  5. python将excel文件变成txt文件
  6. P-GCN:Graph Convolutional Networks for Temporal Action Localization 2019 ICCV
  7. jquery气泡提示效果
  8. 7. 如何创建 CSS
  9. linux的tar命令压缩26g文件,如何使用Linux上的tar命令压缩和解压缩文件 | MOS86
  10. 古人从瀑布中看到彩虹,怎么想的?
  11. 100道Python练习题集合,拿去刷
  12. 外网无法访问nginx服务器默认端口问题解决
  13. SAP中库存地点MRP应用控制
  14. 通过fpga实现占空比的改变
  15. 5G 接入设计(PSS,SSS,PBCH)
  16. oracle 修改备份路径,设置RMAN的备份路径
  17. CANoe.DiVa 操作指南 - 时间参数配置
  18. 算法导论 — 思考题15-11 库存规划
  19. 小白能理解的奈奎斯特采样及延伸出的理论
  20. 这是一份非常实在的淘宝运营学习宝典

热门文章

  1. linux 全连接队列,TCP半连接队列和全连接队列的可能和出现问题和解决方案
  2. 【Tableau】各类别的商品中销量前十的品牌(子类别排序)
  3. 计算机导论 十一五 清华出版,计算机导论黄国兴
  4. k8s免费在线集群工具
  5. 科目二电子路训练笔记
  6. HUD -- 1533 Going Home(费用流基础题)
  7. 双目视觉扫盲:理解双目视觉关键概念
  8. 使用 ASDK 性能调优 - 提升 iOS 界面的渲染性能
  9. [置顶] B版树莓派使用学习手札
  10. JAVA中switch的扩展