我对文本分类技术还不太熟悉,我想了解N-gram方法与其他基于分类器(决策树、KNN、SVM)的文本分类方法之间的区别。
我想知道哪种方法更好,N-gram是否属于分类器?N-gram能否克服分类器技术中的缺点?
我可以在哪里找到关于这些技术的比较信息?
提前感谢。
回答:
我会详细回答这个问题,因为我认为有必要明确指出,N-gram模型可以作为分类器使用(就像你可以将任何特征的概率模型用作分类器一样)。
生成式分类器近似估计感兴趣的后验概率,p(类别 | 测试文档) 如下:
p(c|t) \propto p(c) p(t|c)
其中p(c)是c的先验概率,p(t|c)是似然概率。分类选择所有c中的最大值。一个N-gram语言模型,就像朴素贝叶斯、LDA或你喜欢的任何生成模型一样,如果你为每个类别估计一个单独的模型,它可以被视为一个概率模型p(t|c)。因此,它可以提供进行分类的所有必要信息。
当然,问题在于这个模型是否有用。主要问题是N-gram模型通常是基于数十亿词的文本构建的,而分类器通常只在几千个词上训练。你可以做一些复杂的事情,比如对所有类别模型的参数设置联合先验,将超参数设为相等(这些参数是什么取决于你如何进行平滑)……但这仍然很棘手。
另一种方法是构建字符的N-gram模型(如果有用的话,包括空格/标点符号)。这种模型可以更可靠地估计(三元模型的参数为26^3,而不是约20000^3),并且对于作者识别/体裁分类/其他具有风格元素的分类形式非常有用。