如何在blob中计算情绪分析

时间:2015-12-29 20:28:40

标签: python sentiment-analysis

我使用以下内容来计算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。

感谢您的帮助!
玛丽

2 个答案:

答案 0 :(得分:7)

TextBlob NaiveBayesAnalyzer显然是基于斯坦福NLTK。这里解释了朴素贝叶斯算法: A simple explanation of Naive Bayes Classification

这里描述了它对情感和客观性的应用: http://nlp.stanford.edu/courses/cs224n/2009/fp/24.pdf

基本上你是对的,某些单词的标签类似于" 40%正面/ 60%负面"根据他们如何在一些训练数据中使用(对于斯坦福大学NLTK,训练数据是电影评论)。然后将句子中所有单词的分数相乘以产生句子分数。

我还没有经过测试,但我希望如果该库正好返回0.0,那么你的句子不包含任何在NLTK训练集中具有极性的单词。我怀疑研究人员并没有将它们包括在内,因为1)它们在训练数据中太少了,或者2)它们被认为是没有意义的(例如""," a&#34 ;,"和"等。)。

这适用于朴素贝叶斯分析仪。关于PatternAnalyzer,TextBlob文档说它基于"模式"图书馆,但它似乎没有记录它是如何工作的。我怀疑发生了类似的事情。

答案 1 :(得分:1)

根据TextBlob创建者Steven Loria,TextBlob的情感分析器将委托给pattern.en的情感模块。 Pattern.en本身使用基于字典的approach,其中包含一些启发式处理,例如否定。您可以找到源here,它是pattern.en的文本模块的供应商版本,并对Python 3兼容性进行了一些细微调整。