我使用以下来计算200个短句的情绪.我没有使用训练数据集:
for sentence in textblob.sentences:
print(sentence.sentiment)
分析返回两个值:极性和主观性.根据我在网上看到的,极性分数是在[-1.0,1.0]范围内的浮点数,其中0表示中性,+1表示非常积极态度,-1表示非常消极态度.主观性是在[0.0,1.0]范围内的浮点数,其中0.0是非常客观的,1.0是非常主观的.
那么,现在我的问题是:这些分数是如何计算的?
对于几乎一半的短语的极性分数,我有一些零,我想知道零是否表示中立,或者更确切地说这个短语不包含具有极性的单词这一事实.我想知道另一个情绪分析器的相同问题:NaiveBayesAnalyzer.
谢谢您的帮助!
玛丽
TextBlob NaiveBayesAnalyzer显然是基于斯坦福NLTK.这里解释了朴素贝叶斯算法: 朴素贝叶斯分类的简单解释
这里描述了它对情感和客观性的应用:http: //nlp.stanford.edu/courses/cs224n/2009/fp/24.pdf
基本上你是对的,根据在某些训练数据中使用它们的方式,某些单词将被标记为"40%正面/ 60%负面"(对于斯坦福NLTK,训练数据是电影评论).然后将句子中所有单词的分数相乘以产生句子分数.
我没有测试过,但是我希望如果库正好返回0.0,那么你的句子中不包含任何在NLTK训练集中具有极性的单词.我怀疑研究人员没有包括他们,因为1)他们在训练数据中太罕见或2)他们被认为是没有意义的(例如"the","a","and"等).
这适用于朴素贝叶斯分析仪.关于PatternAnalyzer,TextBlob文档说它基于"模式"库,但它似乎没有记录它是如何工作的.我怀疑发生了类似的事情.