machine-learning - 文本分类中的 N 元语法与其他分类器

标签 machine-learning data-mining classification n-gram text-classification

我是文本分类技术的新手,我想知道用于文本分类的 N-gram 方法和其他基于分类器(决策树、KNN、SVM)的文本分类之间的区别。

我想知道哪一个更好,n-gram 是否属于分类器?。 n-gram 是否克服了分类器技术中的任何缺点?

我在哪里可以获得有关所有这些技术的比较信息。

提前致谢。

最佳答案

我实际上会发布一个完整的答案,因为我认为很明显,您可以使用 n-gram 模型作为分类器(与您可以使用特征的任何概率模型作为分类器的方式大致相同) )。

生成分类器近似感兴趣的后验,p(class | test doc) 为:

p(c|t)\propto p(c) p(t|c)

其中 p(c) 是 c 的先验概率,p(t|c) 是似然。分类选择所有 c 中的 arg-max。 n-gram 语言模型,就像朴素贝叶斯或 LDA 或任何您喜欢的生成模型一样,如果您为每个类别估计一个单独的模型,则可以将其解释为概率模型 p(t|c)。因此,它可以提供分类所需的所有信息。

当然,问题是这个模型是否有任何用处。主要问题是 n-gram 模型往往是在数十亿个文本单词上构建的,而分类器通常是在几千个单词上进行训练的。您可以做复杂的事情,例如将联合先验放在所有类模型的参数上,将超参数限制为相等(这些参数是什么取决于您如何进行平滑)...但这仍然很棘手。

另一种方法是构建字符的 n-gram 模型(如果有用的话,包括空格/标点符号)。这可以更可靠地估计(三元组模型为 26^3 个参数,而不是 ~20000^3),并且对于作者识别/流派分类/具有风格元素的其他形式的分类非常有用。

关于machine-learning - 文本分类中的 N 元语法与其他分类器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20315897/

相关文章:

algorithm - 可理解的聚类

scikit-learn - scikit-learn (python) 中的平衡随机森林

machine-learning - 降维是什么意思?

machine-learning - 用于大规模近重复文档检测的最先进方法?

machine-learning - 如何保证Caffe分割网络输出大小与输入相同?

machine-learning - 超过 2 theta 值的梯度下降

machine-learning - 需要取多少个主成分?

java - 使用 Weka 按情绪对推文进行分类

machine-learning - Keras 如何更新多标签学习中的权重(实现方面)

python - 将数据集中的特征添加到函数中会导致 "TypeError: can' t 将类型 'ndarray' 转换为分子/分母”