TextBlob,完全不准确

Ty *_*ten 1 python nltk python-2.7 textblob

查看我们最近所做的一项调查的回应。我认为这位受访者并没有那么高兴。在这里,TextBlob 会让我相信他的情绪已经达到了积极的上限。如果我从字符串情绪分数中删除“最佳”这个词,它就会变成“0”。

你能帮我重新灌输我的信任是 TextBlob,我在这个非常简单的应用程序中做错了什么?

a = "Follow on rounds for the best prospects. Some choke to death now."
b = TextBlob(a)
print b.sentiment 
Run Code Online (Sandbox Code Playgroud)

情感(极性=1.0,主观性=0.3)

谢谢,

Kas*_*tak 7

您需要了解,即使学习了很少的东西,机器也不是人类。声明“为了最好的前景而进行轮次。现在有些人窒息而死。” 即使对于人类识别情绪也有点令人困惑,因为第一个和第二个陈述之间似乎没有或更少的关系。

此外,您可能会看到许多其他真实案例,其中极性与非常明显的事物相反。如果您需要处理许多此类情况,您可以使用以下代码,这可能会大大改善您的结果。

from textblob import TextBlob
from textblob.sentiments import NaiveBayesAnalyzer
a = "Follow on rounds for the best prospects. Some choke to death now."
b = TextBlob(a, analyzer=NaiveBayesAnalyzer()))
print(b.sentiment)
Run Code Online (Sandbox Code Playgroud)

对于您的示例(我个人认为这不是一个好的示例,即使对人类来说也令人困惑),结果如下:
Sentiment(classification='pos', p_pos=0.5730186699265399, p_neg=0.42698133007345906)

它仍然是正数,但您可以看到 pos 和 neg 分数之间的差异。对我来说,它在大多数情况下都是成功的,相关且有意义的句子。

有关代码更改内容的说明,请参见下文:

textblob.sentiments 模块包含两个情感分析实现,PatternAnalyzer(基于模式库)和 NaiveBayesAnalyzer(在电影评论语料库上训练的 NLTK 分类器)。

默认实现是 PatternAnalyzer,但您可以通过将另一个实现传递到 TextBlob 的构造函数来覆盖分析器。