尝试采用Snow NLP进行情感分析
写在前面
之前用ROST CM6软件大致做了一个情感分析,但是还是觉得存在2方面的问题:①是ROST CM6自带的情感分析过于简单,②是ROST CM6情感分析打分的效果并不好(这样看来ROST CM6好像除了搞个语义网络有点特色其他真是干啥啥不行 )总而言之,还是得考虑把目光转向其他情感分析手段了。
SnowNLP情感分析也是基于情感词典实现的,其简单的将文本分为两类,积极和消极,返回值为情绪的概率,越接近1为积极,接近0为消极。
正餐开始
SnowNLP自带了一个训练集,但是这个包原来是用来做购物评价分析的,直接用来做毕设关于景区的情感分析,得到的答案不是很准确,打开SnowNLP安装所在目录,可以看到中文本积极评论pos.txt和消极评论neg.txt所在的位置,打开这两个文件夹可以看到里面很多中文。

现在就需要将我们自定义的pos(积极)和neg(消极)训练集加载进去,把标记好的两个素材文件pos.txt,neg.txt放到原包的位置。
接下来就是训练的过程,直接运行情感分析训练程序的时候出现报错:
FileNotFoundError: [Errno 2] No such file or directory: ‘pos.txt’
解决办法:建立绝对路径,‘ (pos文件所在位置,将\换成/) /pos.txt’,pos.txt 和neg.txt同样建立绝对路径。
开始训练
重新训练情感分析的代码如下所示:
#coding:UTF-8
from snownlp import sentiment
if __name__ == "__main__":
# 重新训练模型
sentiment.train('./neg.txt', './pos.txt')
# 保存好新训练的模型
sentiment.save('sentiment.marshal')
训练好后,调用SnowNLP库就可以完成本部分分析了。
顺带一提
本次使用SnowNLP中间还有三个小插曲:
一是在SnowNLP自带的数据集情感分析结果并不好,需要进行训练,但是作为一个Python小白,这个下载的SnowNLP库在哪我都找不到,后来参考了某篇大神的博文才知道原来鼠标悬停就可以看到对应库所在位置了…
二是在第一次执行命令的时候,出现了这个错误:
ImportError: cannot import name ‘SnowNLP’ from partially initialized module ‘snownlp’ (most likely due to a circular import) (I:\Python study\2级Python\snownlp.py)
也是参考了某篇大神的博文,原来是因为导入的snownlp包和新建的snownlp.py文件重名了。
将snownlp.py文件名称改一下即可正常运行。
三是测试data数据集是出现了这个错误:
UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xcc in position 0: invalid continuation byte
这是因为data.txt文件采用ANSI进行编码,修改另存为utf-8模式即可正常运行。