在情感分析中使用 TF-IDF 进行特征提取

数据挖掘 nlp 情绪分析 tfidf
2022-02-28 01:31:54

我正在对 twitter 数据进行情绪分析,为此我使用 Vader 来获得推文的情绪近似值。除此之外,我还使用 TF-IDF 进行特征提取。我用来训练和测试随机森林模型的这些特征词。在我的数据集中,有大约 3000 多条推文,我使用 TF-IDF 从中提取了大约 570 个独特的特征词。以及我用于训练随机森林模型的所有这些特征。

我的查询是关于这个训练有素的模型在现实世界中的使用。如果该模型从未见过的新推文没有我用于训练的特征词,该模型将无法对它们做出正确的预测(在我的情况下,只有 3 种可能的预测,即正面、负面和中性) ) 对他们来说正确吗?如果是,那么我应该如何处理这种情况?

如果我在这里遗漏了什么或做错了什么,请告诉我。

1个回答

TF-IDF 是一种矢量化技术,用于将文档(在您的情况下为单个推文是文档)转换为向量。训练 TF-IDF 模型后,它学习的唯一单词/词汇将来自文档集(也称为语料库,整个 3k 条推文集)。

既然你提到在 TF-IDF 之后有 570 个独特的特征词,那将是你的模型学习的词汇。如果你给这个模型一个包含在它的词汇表中的单词的文档,它会成功地将它向量化。但是,如果新文档中的一个或多个单词不在模型的词汇表中,则这些单词根本不会包含在向量化中。只有当模型在训练中遇到这些词时,新句子中的词才会被赋予权重。换句话说,每个句子都将根据模型的词汇进行向量化。

前任 -

模特的词汇——a, big, hat, have, I, mat

输入 - “我有一个大垫子”

向量 - [ 按照模型词汇顺序排列的 tfidf 权重序列。如果句子中不存在 vocab 中的单词,则分配的权重为 0 ]

输入 - “我有一条狗”

向量 - [为词汇表中所有单词计算的 tfidf 权重序列,与词汇表顺序相同]

由于“狗”不是词汇表的一部分,因此它不包含在矢量化中。

如果该模型从未见过的新推文没有我用于训练的特征词,该模型将无法对它们做出正确的预测(在我的情况下,只有 3 种可能的预测,即正面、负面和中性) ) 对他们来说正确吗?

关于最终预测,我不能说太多,但是如果您期望 TF-IDF 对包含大量模型未训练过的单词的文档进行向量化,那么您来自 TF-IDF 的特征向量可能会很差。不正确的矢量化可能会影响您的预测准确性。

如果是,那么我应该如何处理这种情况

我的建议是考虑以下事项 -

  • 彻底预处理训练数据。去除标点符号、用完整形式替换缩写等步骤可以帮助 TF-IDF 模型训练得很好。
  • 如果可以选择收集更多数据,请尝试在属于您的预测上下文的大量推文上训练模型。词汇量越多,模型的装备就越好,以向量化新的未见文档。
  • 尝试使用像BERT这样的预训练模型