情感分析@维基百科
文本情感分析(也称为意见挖掘)是指用自然语言处理、文本挖掘以及计算机语言学等方法来识别和提取原素材中的主观信息。
直白说法:给你一段文本,你就可以用情感分析的自动化方法获得这一段内容里包含的情感色彩是什么。
早在2010年,就有学者指出,可以依靠Twitter公开信息的情感分析来预测股市的涨落,准确率高达87.6%!
TextBlob是一个用Python编写的开源的文本处理库。它可以用来执行很多自然语言处理的任务,比如,词性标注,名词性成分提取,情感分析,文本翻译,等等。
text = "I am happy today. I feel sad today."
from textblob import TextBlob
blob = TextBlob(text)
blob
# TextBlob("I am happy today. I feel sad today.")
使用对象的 sentences,返回元素为 Sentence 的列表。
blob.sentences
# [Sentence("I am happy today."), Sentence("I feel sad today.")]
每个句子自带情感分析
blob.sentences[0].sentiment
# Sentiment(polarity=0.8, subjectivity=1.0)
blob.sentences[1].sentiment
Sentiment(polarity=-0.5, subjectivity=1.0)
使用循环输出所有句子的分析结果
text = "I am happy today. Today is Monday today."
from textblob import TextBlob
blob = TextBlob(text)
for s in blob.sentences:
print(s.sentiment)
# Sentiment(polarity=0.8, subjectivity=1.0)
# Sentiment(polarity=0.0, subjectivity=0.0)
SnowNLP和textblob的计分方法不同。SnowNLP的情感分析取值,表达的是“这句话代表正面情感的概率”。也就是说,对“我今天很愤怒”一句,SnowNLP认为,它表达正面情感的概率很低很低。
text = u"我今天很快乐。我今天很愤怒。"
from snownlp import SnowNLP
s = SnowNLP(text)
for sentence in s.sentences:
print(sentence)
分析
s1 = SnowNLP(s.sentences[0])
print(s1.sentiments) # 0.971889316039116
s2 = SnowNLP(s.sentences[1])
print(s2.sentiments) # 0.07763913772213482
循环输出结果
text = u"我今天很快乐。我今天很愤怒。我今天很开心。我很沮丧和失落。我很忧郁,也很犹豫。"
from snownlp import SnowNLP
s = SnowNLP(text)
for sentence in s.sentences:
print(sentence)
print(SnowNLP(sentence).sentiments)
输出结果如下:
我今天很快乐
0.971889316039116
我今天很愤怒
0.07763913772213482
我今天很开心
0.8427521210354031
我很沮丧和失落
0.9639293559596596
我很忧郁
0.9285009772880851
也很犹豫
0.7499999999999999