如何用Python做情感分析?

本文源自:https://zhuanlan.zhihu.com/p/28962461
记录自己的实际操作

环境

Anaconda套装,自带科学计算的众包。
windows系统

安装

打开Anaconda命令行

依次执行如下命令:

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认为,它表达正面情感的概率很低很低。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地。本文帮助你一步步用Python做出自己的情感分析结果,难...
    王树义阅读 98,089评论 32 240
  • 慢慢呷着饺子汤让我微微出汗,脱掉外套,阳光洒在微黑泛黄的胳膊上竟泛起了一丝白色,已经下过雪的十二月里,我穿着一件短...
    莞心简书阅读 206评论 0 0
  • 我有个朋友,性格内向,不善交际,毕业后在家待业,问她未来打算时总是壮志酬酬:“准备考公务员。” 撑不住年年失利...
    好大一棵草阅读 6,836评论 30 168
  • 又想发问,什么样的关系才算朋友?
    风雨等故人阅读 136评论 0 0
  • 看着别人每一天和他的另一边卿卿我我,各种的秀恩爱。 但是依然坚持单身,不是不想谈恋爱。每个人都憧憬那美好的纯...
    转动命运之轮阅读 352评论 2 4