对于英文的情感分析
基于TextBlob包
from textblob import TextBlob
text = "I am happy today. I feel sad today."
blob = TextBlob(text)
blob
# 运行结果
# TextBlob("I am happy today. I feel sad today.")
blob.sentences
# [Sentence("I am happy today."), Sentence("I feel sad today.")]
对第一句话的情感分析,说明一下,情感极性的变化范围是[-1, 1],-1代表完全负面,1代表完全正面。
blob.sentences[0].sentiment
# Sentiment(polarity=0.8, subjectivity=1.0)
# 情感极性0.8,主观性1.0。
对第一句话的情感分析:
blob.sentences[1].sentiment
# Sentiment(polarity=-0.5, subjectivity=1.0)
还可以让TextBlob综合分析出整段文本的情感:
blob.sentiment
# Sentiment(polarity=0.15000000000000002, subjectivity=1.0)
不同极性的词,在数值上是有区别的。我们应该可以找到比“沮丧”更为负面的词汇。而且这也符合逻辑,谁会这么“天上一脚,地下一脚”矛盾地描述自己此时的心情呢?
对于中文的情感分析
基于SnowNLP包
from snownlp import SnowNLP
text = "我今天很快乐。我今天很愤怒。"
s = SnowNLP(text)
s.sentences
# ['我今天很快乐', '我今天很愤怒']
第一句的情感分析结果:
SnowNLP(s.sentences[0]).sentiments
# 0.971889316039116
第二句的情感分析结果:
SnowNLP(s.sentences[1]).sentiments
# 0.07763913772213482
这里你肯定发现了问题——“愤怒”这个词表达了如此强烈的负面情感,为何得分依然是正的?
这是因为SnowNLP和textblob的计分方法不同。SnowNLP的情感分析取值,表达的是“这句话代表正面情感的概率”。也就是说,对“我今天很愤怒”一句,SnowNLP认为,它表达正面情感的概率很低很低。