用于文本分类的基于词袋的分类器的替代方案?

机器算法验证 机器学习 分类 文本挖掘
2022-03-19 16:52:59

大多数文本分类器都基于词袋方法,在这种方法中,您可以松开特定单词出现的上下文。作为一种解决方案(或简单的解决方案?),我们可以使用 n-gram 作为特征。但是是否有任何分类器在训练之前“提出”这个想法并以某种方式对其进行建模?

4个回答

我建议了两种已在文本分类中广泛使用的替代方案:

  • 使用潜在语义索引,包括将奇异值分解应用于 DocumentXTerm 矩阵以识别相关(概念)组件,或者换句话说,旨在将单词分组为表示概念或语义字段的类。
  • 使用WordNetBabelNet概念等词汇数据库来索引文档,允许对文档进行语义级别的比较。这种方法不是统计的,它面临着词义消歧的问题。

这两种方法都可以在训练前应用。他们中没有一个旨在捕捉词序。

使用神经网络的连续词表示被广泛用于表示词。令人惊讶的是,它能够对单词的语义上下文进行建模,即检测相似的单词并将它们放在特征空间中的附近。

您可以使用word2vect工具来处理大型文本语料库并创建词向量。值得注意的是,对于特定领域,您需要利用特定领域的语料库来构建词向量。

你应该看看对数线性模型在您的情况下,这绝对是一个有效的选择。

存在可以实现此目的的 API 模型。

https://askmacgyver.com/explore/program/universal-topic-classifier/5S2Q5x8K

它需要一个类别数组或“词袋”和一个文本字符串来分析。然后,它返回此提供的关键字的排序百分比相关性。

输入数据

  {
    "text": "this bank provides an excelent service to its clients when opening a new account and with other operations",
    "classes": [
        "bank account",
        "online banking",
        "technical support",
        "mortgage",
        "retirement savings",
        "mutual funds",
        "student loan",
        "credit card",
        "financial news"
    ],
    "minCutOff": "0.001"
}

API 响应

{
    "bank account": 0.6448822158372491,
    "technical support": 0.40099627067600924,
    "financial news": 0.28635987039897565,
    "mortgage": 0.2676284175575462,
    "student loan": 0.257628495744561,
    "online banking": 0.32395217514082025,
    "credit card": 0.2144582134037077,
    "mutual funds": 0.09250890827081894,
    "retirement savings": 0.13690496892541437
}