【问题标题】:TextBlob, totally inaccurateTextBlob,完全不准确
【发布时间】:2017-09-21 06:30:33
【问题描述】:

查看我们最近进行的一项调查的回复。我不认为这位受访者那么高兴。在这里,TextBlob 会让我相信他的情绪已经达到了积极的上限。如果我从字符串情感得分中删除“最佳”一词,则变为“0”。

您能否帮助我再次信任 TextBlob,我在这个非常简单的应用程序中做错了什么?

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

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

谢谢,

【问题讨论】:

  • 你为什么要信任一个名为 «TextBlob» 的工具?
  • 更严肃地说:TextBlob 使用一些预训练模型(使用该工具时您不必关心这些模型),但它们并不完美,任何 NLP 任务也不是。如果你想改进工具,你需要定制、重新训练、尝试不同的东西……欢迎使用 NLP!

标签: python python-2.7 nltk textblob


【解决方案1】:

您需要了解,即使在学习了一些东西之后,机器也不是人类。声明“跟随轮次以获得最佳前景。现在有些人窒息而死。”即使是人类识别情绪也有点令人困惑,因为第一个和第二个陈述之间似乎没有或没有关系。

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

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)

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2020-07-13
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多