我使用下面的公式来计算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。
谢谢你的帮助!
玛丽
发布于 2015-12-30 05:08:03
TextBlob NaiveBayesAnalyzer显然是基于斯坦福大学的NLTK。朴素贝叶斯算法的一般解释如下:A simple explanation of Naive Bayes Classification
这里描述了它在情感和客观性方面的应用:http://nlp.stanford.edu/courses/cs224n/2009/fp/24.pdf
基本上你是对的,根据某些训练数据(对于斯坦福NLTK,训练数据是电影评论)中的使用情况,某些单词将被标记为"40%肯定/ 60%否定“。然后将句子中所有单词的分数相乘,得到句子分数。
我还没有测试过,但我希望如果库恰好返回0.0,那么您的句子就不包含任何在NLTK训练集中具有极性的单词。我怀疑研究人员没有包括它们是因为1)它们在训练数据中太少了,或者2)它们被认为是没有意义的(例如" the ","a","and“等)。
这适用于朴素贝叶斯分析器。关于PatternAnalyzer,TextBlob文档说它是基于“模式”库的,但似乎没有说明它是如何工作的。不过,我怀疑类似的事情正在发生。
发布于 2020-06-08 09:39:08
根据TextBlob的创建者Steven Loria的说法,TextBlob的情感分析器委托给pattern.en
的情感模块。Pattern.en
本身使用了一个基于字典的approach,带有一些启发式的处理,例如否定。你可以找到源代码here,它是Pattern.en的文本模块的厂商版本,对Python3的兼容性做了一些小的调整。
https://stackoverflow.com/questions/34518570
复制相似问题