我正在使用 Mahout 实现一个文本分类系统。我已阅读停用词删除和词干提取有助于提高文本分类的准确性。在我的情况下,删除停用词可以提供更好的准确性,但词干提取并没有多大帮助。我发现应用词干分析器后准确度降低了 3-5%。我尝试使用 porter stemmer 和 k-stem,但在这两种情况下都得到了几乎相同的结果。
我正在使用朴素贝叶斯算法进行分类。
任何帮助都非常感谢提前。
我正在使用 Mahout 实现一个文本分类系统。我已阅读停用词删除和词干提取有助于提高文本分类的准确性。在我的情况下,删除停用词可以提供更好的准确性,但词干提取并没有多大帮助。我发现应用词干分析器后准确度降低了 3-5%。我尝试使用 porter stemmer 和 k-stem,但在这两种情况下都得到了几乎相同的结果。
我正在使用朴素贝叶斯算法进行分类。
任何帮助都非常感谢提前。
首先,您需要了解为什么词干提取通常会提高准确性。想象一下训练集中的以下句子:
他在 2013 年踢的足球低于平均水平,但在此之前被视为上升球员,可以打后卫或中锋。
并在测试集中遵循:
我们正在寻找一些球员,包括马克
第一个句子包含一些涉及运动的单词,包括单词“player”。测试集中的第二句话也提到了玩家,但是,哦,它是复数形式——“玩家”,而不是“玩家”——所以对于分类器来说,它是一个不同的、不相关的变量。
Stemming 试图切断诸如单词的确切形式之类的细节,并产生词库作为分类的特征。在上面的例子中,词干可以将两个词缩短为“player”(甚至“play”)并将它们用作相同的特征,从而有更多的机会将第二句归类为“sports”类。
然而,有时这些细节本身就扮演着重要的角色。例如,短语“runs today”可能是指跑步者,而“long running”可能是关于手机电池寿命。在这种情况下,词干使分类变得更糟,而不是更好。
您可以在这里做的是使用可以帮助区分相同单词/词干的不同含义的附加功能。两种流行的方法是n-grams(例如 bigrams,由单词对而不是单个单词组成的特征)和词性( POS ) 标签。你可以尝试它们的任意组合,例如词干+词干的二元组,或词+词的二元组,或词干+词性标签,或词干、词性和词性标签等。
另外,尝试其他算法。例如, SVM使用与朴素贝叶斯非常不同的方法,因此它可以捕获 NB 忽略的数据中的内容。