在 SVM 中区分具有相反含义的文本(错误信息检测)

数据挖掘 机器学习 支持向量机 监督学习 文本分类 tfidf
2022-02-21 21:01:33

我目前正在使用支持向量机研究二进制文本分类模型(错误信息检测),并在 Python 中使用 TF-IDF 作为文本向量器。我已经尝试过训练模型,但是在测试时,我遇到了一个问题:

例如,我让模型将“今天发生 COVID-19”的条目预测为“真”,但在将文本更改为“今天没有发生 COVID-19”后,仍将其预测为“真”,其中应预测为"False"

在这种情况下问题出在哪里?

我们怎样才能让算法像上面提到的那样对具有相反含义的文本进行分类?

笔记:

  • 我在建模中使用的数据集中存在的文本是“COVID-19 正在发生”。

  • 我还使用 predict_proba 来了解文本为 0(假)或 1(真)的概率。它表明我所做的两个条目在 predict_proba 中具有相同的输出,因此我可以说它读取这两个条目是相同的(可能是“今天发生了 COVID-19”)。

1个回答

您可能应该降低对 ML 模型可以实现的目标的期望。

  • 首先,这是一个统计过程:模型只是预测最可能的标签。不可避免地会发生一些错误。
  • 该模型不理解任何含义,它只是根据训练期间学习的参数计算标签的概率。
  • 词袋表示,就像 TFIDF 一样,是文本含义的非常简化的表示。使用这种表示,模型只能有“规则”,例如:“如果实例包含单词x,则标签更可能为真”。这种表示可以很好地处理简单的文本分类任务,其中某些特定的词组与标签密切相关。这不足以正确处理复杂的语言结构,例如否定, 隐喻, 讽刺, 条件, ...
  • 有更复杂的文本表示可用,但据我所知,它们都不能实现近乎完美的自然语言理解,而这将是这项任务所必需的。如果您想为此任务实现最先进的系统,则必须研究自然语言推理的最先进技术。