定义

文本情感分析(sentiment analysis)也称为意见挖掘,是指用自然语言处理、文本挖掘以及计算机语言学等方法来识别和提取原素材中的主观信息。

适用场景

商品评论挖掘、电影推荐、股市预测……

早在2010年,Jonhan Bollen 等人就在《Twitter mood predicts the stock market》一文中提出利用 Twitter 中的公开信息进行情感分析,以此来对股市的涨落做预测,准确率高达87.6%!并且他们认为,只要能获得大量实时社交媒体文本数据,并进行相应的情感分析就能保证得到较好预测效果。

当前,随着电子商务的飞速发展,我们可以获得的文本数据非常多,例如大众点评、豆瓣和亚马逊等等。

NLTK

Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。NLTK由Steven Bird和Edward Loper在宾夕法尼亚大学计算机和信息科学系开发。

系统环境说明

本文的实验环境是 Python 3.6.1 |Anaconda 4.4.0 (64-bit),Win10

英文情感分析例子

工具

TextBlob

安装依赖包

pip install textblob
python -m textblob.download_corpora

代码

from textblob import TextBlob
text = "I am happy today. I feel sad today."
blob = TextBlob(text)
# 拆分句子
blob.sentences # [Sentence("I am happy today."), Sentence("I feel sad today.")]
# polarity代表情感极性,取值范围是[-1, 1],-1代表完全负面,1代表完全正面
# subjectivity代表主观性程度
blob.sentences[0].sentiment # Sentiment(polarity=0.8, subjectivity=1.0)
blob.sentences[1].sentiment # Sentiment(polarity=-0.5, subjectivity=1.0)
# 对整段话进行情感分析
blob.sentiment # Sentiment(polarity=0.15000000000000002, subjectivity=1.0)

中文情感分析例子

工具

SnowNLP

安装依赖包

pip install snownlp

代码

from snownlp import SnowNLP
text = u"我今天很快乐。我今天很愤怒。" # 使用Unicode编码
s = SnowNLP(text)
s.sentences # ['我今天很快乐', '我今天很愤怒']
SnowNLP(s.sentences[0]).sentiments # 0.971889316039116
SnowNLP(s.sentences[1]).sentiments # 0.07763913772213482
s.sentiments # 0.7237619924203508

说明

SnowNLP 和 TextBlob 的计分方法不同。SnowNLP 的情感分析取值,表达的是“这句话代表正面情感的概率”。也就是说,对“我今天很愤怒”一句,SnowNLP 认为,它表达正面情感的概率很低很低。