【问题标题】:Can multiple ngrams be used in the same classifier?可以在同一个分类器中使用多个 ngram 吗?
【发布时间】:2016-11-30 00:07:05
【问题描述】:

我是 NLP 新手,有一个非常简单的问题,我预计会被问到很多,但老实说在任何地方都找不到:可以在同一个分类器中使用多种类型的 ngram(例如 unigrams + bigrams)吗?

我已经尝试过这样做,并且至少对于朴素贝叶斯来说,它给了我比仅二元组更高的准确度(尽管低于一元组),但我不确定这是否是一种合法的做法。我担心的一个问题是可能存在多重共线性,如果这甚至是一个适用的术语,即“好运”和“好运”都在信息量最多的特征列表的顶部附近。

【问题讨论】:

    标签: nlp nltk sentiment-analysis n-gram


    【解决方案1】:

    简短的回答是“是”。更长的答案是,你可以使用任何你想要的作为训练特征。但我怀疑你正在使用原始的一元和二元作为你的特征。如果二元组本身不如一元组有用,那么您显然没有足够的训练数据让您的应用程序从中做出有用的推断。添加一些更高级别的特征(例如,POS 标签的二元组),这些特征具有较少的可能性,因此更容易泛化。

    【讨论】:

    • 谢谢!如果我有时间,我会尝试实现类似 POS 标签的东西(项目的截止日期不是那么遥远)。顺便说一句,你是对的,我的训练数据仅包含 600 条消息(通常很长的 Kickstarter cmets,而不是推文,这有望弥补极小的训练集大小)。在相关的说明中,并且不问一个单独的问题,如果情绪分析是更深入的手动分析cmets?
    • 长消息与否,如果将每条消息作为一个整体进行评估,则您有 600 个数据点。所以避免过度训练,例如二元组。可接受的准确性取决于您的目标,以及(对于项目)当前的技术水平。
    • 再次感谢 :) 在讨论各种 Kickstarter 项目时,我使用 SA 来鸟瞰动态,所以我认为 ~68% 的准确度应该足够了,因为有一些电影评论论文SA 的准确率甚至达到了 64%,这是一个可观的结果。
    • 另一个随机提示:尝试一次并留下停用词。我记得“what a”是强烈情绪的标志,包括正面和负面的。如果您从输入中删除“a”,您将错过它。但我不知道这是否会提高或降低整体性能。
    • 如果 Python 不错,您可以使用 TFIDFVECTORIZER 将 ngram_range 设置为 (1, 2) scikit-learn.org/stable/modules/generated/…
    猜你喜欢
    • 1970-01-01
    • 2012-05-15
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多