声明
原文来自: http://news.ifeng.com/a/20170628/51337227_0.shtml
因原文格式比较乱,所以我按照自己的方式进行了整理。结果整理完之后才发现王树义老师的简书里面也同样有这篇文章,附上地址 https://www.jianshu.com/p/d50a14541d01 。若本文侵犯了您的权益,请随时与我联系,给您带来的不便还请谅解!
定义
文本情感分析(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
认为,它表达正面情感的概率很低很低。