【问题标题】:how are sentiment analysis computed in blob如何在 blob 中计算情感分析
【发布时间】:2016-04-03 18:45:15
【问题描述】:

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

感谢您的帮助!
玛丽

【问题讨论】:

    标签: python sentiment-analysis


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    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)它们被认为是无意义的(例如“the”、“a”、“and”等)。

    这适用于朴素贝叶斯分析器。关于 PatternAnalyzer,TextBlob 文档说它基于“模式”库,但它似乎没有记录它是如何工作的。我怀疑类似的事情正在发生。

    【讨论】:

    • 谢谢@Luke!对于主观性分数 0 应该表示非常客观的单词,所以我不确定何时将 0 分配给不在训练数据集中的单词,或者何时因为该单词非常客观而给出。例如,在“毫无疑问”这句话中,主观性得分为 0,极性得分为 0,我不确定如何解释这一点……我正在考虑在科学论文中使用此分析,但我需要更好地理解(并解释)它是如何计算的。
    • 所有体面的朴素贝叶斯算法都使用“加法平滑”,这意味着,对于每个单词,它们从 1(或其他一些固定常数)而不是 0 开始计算“客观”和“主观”句子. 这可以防止单词获得恰好 0% 客观或 0% 主观的分数。本关于朴素贝叶斯的教程对此进行了更多讨论:nils-haldenwang.de/computer-science/machine-learning/…
    • 因此,我认为可以安全地假设,如果朴素贝叶斯算法准确地输出一个句子的 -1.0 或 1.0,这并不是因为某个词被标记为 0% 肯定。相反,这意味着该句子不包含训练集单词,并且库作者在这种情况下任意选择了任意输出。以上适用于使用 NLTK 的朴素贝叶斯。但是,看起来 TextBlob 仅将其用于极性,而不用于主观性:textblob.readthedocs.org/en/dev/_modules/textblob/en/… 对于主观性,它似乎使用了这个“模式”库。
    • “模式”库的文档非常少,所以我不确定它是如何计算其“主观性”的:clips.ua.ac.be/pages/pattern-en#sentiment 我假设在输出时会发生与上述类似的事情正好是 0.0,但我无法在他们的文档中验证这一点。所以,除非你能找到更好的文档和显示底层算法准确率的论文,否则我不会太相信“主观性”分数。
    • 如果有帮助,本教程将展示如何训练正面/负面情绪分析器:streamhacker.com/2010/05/10/… 在底部列出了 72.8% 的训练数据准确率,这对于情绪分析器来说非常典型-- 它有一定的威力,但不是很准确。
    猜你喜欢
    • 2018-09-26
    • 2017-10-07
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 2018-10-24
    • 2023-02-16
    • 1970-01-01
    相关资源
    最近更新 更多