【问题标题】:Change sentiment of a single word改变一个词的情绪
【发布时间】:2018-01-08 07:15:24
【问题描述】:

我已经在 Python 中使用 NLTK 进行情感分析几天了,它是一个很棒的工具。我唯一担心的是它对“快速”这个词的看法。我正在处理的大多数数据都有关于某项服务的 cmets,而 MOST 将该服务称为“快速”,这显然对它有积极的看法。但是,NLTK 将其称为中立。我想知道是否有可能重新训练 NLTK 以现在将 Quick 形容词称为具有正面注释?

【问题讨论】:

    标签: python nlp nltk sentiment-analysis


    【解决方案1】:

    我已经解决了这个问题。在 AppData\Roaming\nltk_data\sentiment 中找到 vader Lexicon 文件。翻阅文件,我发现里面甚至没有“Quick”这个词。文件格式如下:

    Token Mean-sentiment StandardDeviation [从 -4 到 4 的 10 个人收集的情绪得分列表]

    我编辑了文件。拉上拉链。现在 NLTK 将 Quick 称为具有积极情绪。

    【讨论】:

    • 我认为应该明确说明 这是一个肮脏的 hack
    • 我想是的。但在 Vader 词典文件中甚至没有使用“快速”这个词。对于面向领域的工作,这样的 hack 可能是必要的。我确实遵循了程序,并对从 10 个随机人收集的分数进行了平均。
    【解决方案2】:

    用于情感分析的模型通常是机器学习过程的结果。您可以通过在训练集上运行模型创建来生成自己的模型,在该训练集中以您喜欢的方式标记情绪,但这是一项艰巨的任务,尤其是在您不熟悉基础的情况下。

    为了快速而肮脏的修复,也许只是让您的代码覆盖单个单词的情绪,或者(有点更具挑战性)弄清楚如何在现有模型中更改其值。虽然如果你能掌握 NLTK 维护人员训练他们的情绪分析并可以修改它的语料库,这可能比弄清楚如何更改现有模型要简单得多。如果你有自己的语料库,对你关心的所有词都有情感,那就更好了。

    在一般用法中,“快速”在表面上并不是一个两极分化的词——事实上,“又快又脏”通常含糊不清,而“快速评估”彻底更糟糕;当然,在您的特定情况下,快速交付的服务将主要是一件积极的事情。在您的领域中可能会有其他具有特定极性的词,即使它们不能被分配一个广义的极性,反之亦然——一些具有一般使用极性的词在您的领域中将是中性的。因此,训练您自己的模型可能值得付出努力,尤其是当您正在探索特定语域中的话语时。

    【讨论】:

    • 快速而肮脏的方法是我考虑过的,但它会在很大程度上存在问题,因为记录不仅仅是对“快速”的评论将被忽略并被标注不准确。我想避免训练我自己的模型,因为我已经在很大程度上受到训练集的限制,结果表现肯定会更糟。我希望找到一种方法来调整已经训练过的 NLTK,以便满足这一需求。或许对词典进行修改会奏效?
    • 尽管我不知道该怎么做。 (不熟悉基础)我仍然非常感谢您的意见。如果可以的话,我会投票。
    • NLTK 是相当模块化的,您需要为英语的情绪分析模型(可能在 NLTK 外部)找到构建脚本,并使用新的语料库或经过调整的语料库运行它。如果语料库已经包含大量的“快速”出现,只需向它们添加标签并重新训练。
    • 它可能在话语的层面上起作用,但(还没有看过)如果是这样,你必须小心地将只有“快速”的话语标记为积极的,实际上是积极的,或者也许删除所有带有“快速”且被标记为负面的话语(然后可能会引入“有趣”/讨厌的新偏见)。
    • 感谢您的帮助。我找到了解决我的问题的方法。请一定要看看。
    猜你喜欢
    • 2011-05-10
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    相关资源
    最近更新 更多