本文源自:https://zhuanlan.zhihu.com/p/28962461
记录自己的实际操作
环境
Anaconda套装,自带科学计算的众包。
windows系统
安装
依次执行如下命令:
pip install snownlp
pip install -U textblob
python -m textblob.download_corpora #此条命令执行完的时间很长,耐心等待
在命令提示符下键入:
jupyter notebook
你会看到目录里之前的那些文件,忽略他们就好。英文分析
英文分析需要用到的是 TextBlob包 。
上图可以看出,这个包可以做许许多多跟文本处理相关的事情。但本文我们只专注于情感分析这一项。
from textblob import Textblob
text = "I am happy today. I feel sad today."
blob.sentences #划分语句
blob.sentences[0].sentiment #分段结果,polarity 取值[-1,1],-1代表完全负面,1代表完全正面。subjectivity 主观性
blob.sentiment #总的情感结果
你可能会觉得没有道理。怎么一句“高兴”,一句“沮丧”,合并起来最后会得到正向结果呢?
首先不同极性的词,在数值上是有区别的。我们应该可以找到比“沮丧”更为负面的词汇。而且这也符合逻辑,谁会这么“天上一脚,地下一脚”矛盾地描述自己此时的心情呢?
中文
中文文本分析,我们使用的是 SnowNLP包 。这个包跟TextBlob一样,也是多才多艺的。
我们还是先准备一下文本。这次我们换2个形容词试试看。
text = u"我今天很快乐。我今天很愤怒。"
注意在引号前面我们加了一个字母u,它很重要。因为它提示Python,“这一段我们输入的文本编码格式是Unicode,别搞错了哦”
这里你肯定发现了问题——“愤怒”这个词表达了如此强烈的负面情感,为何得分依然是正的?
这是因为SnowNLP和textblob的计分方法不同。SnowNLP的情感分析取值,表达的是“这句话代表正面情感的概率”。也就是说,对“我今天很愤怒”一句,SnowNLP认为,它表达正面情感的概率很低很低。