如何计算单个新文档的TF*IDF以进行分类?

我使用文档-词向量来表示一组文档。我使用TF*IDF来计算每个文档向量的词权重。然后我可以使用这个矩阵来训练一个用于文档分类的模型。

我期待未来对新文档进行分类。但为了对其进行分类,我首先需要将文档转换为文档-词向量,且该向量也应由TF*IDF值组成。

我的问题是,如何仅用单个文档计算TF*IDF?

据我了解,TF可以基于单个文档本身计算,但IDF只能通过一组文档计算。在我当前的实验中,我实际上是为整个文档集合计算TF*IDF值。然后我使用一些文档作为训练集,其他文档作为测试集。

我突然意识到这似乎不太适用于现实生活。

补充1

因此,实际上有两种微妙不同的分类场景:

  1. 对内容已知但标签未知的文档进行分类。
  2. 对完全未见的文档进行分类。

对于1,我们可以将所有文档结合起来,无论是否有标签。并在所有文档上获取TF*IDF。这样,即使我们只使用有标签的文档进行训练,训练结果仍然会受到无标签文档的影响。

但我的场景是2。

假设我从训练集语料库的摘要中获得了关于词T的以下信息:

  • 训练集中词T的文档数量为n
  • 训练文档的总数为N

我应该像下面这样计算未见文档D中词t的IDF吗?

IDF(t, D)= log((N+1)/(n+1))

补充2

如果我在新文档中遇到一个在训练语料库中之前未出现过的词,我应该如何在文档-词向量中计算它的权重?


回答:

对于单个文档,独立于语料库,TF-IDF没有意义。它本质上是强调相对稀有且信息量大的词语。

你需要保留语料库的摘要信息来计算TF-IDF权重。特别是,你需要每个词的文档计数和文档总数。

你是否希望使用整个训练集和测试集的摘要信息来计算TF-IDF,还是仅使用训练集的摘要信息,这取决于你的问题设定。如果你只关心将分类系统应用于内容已知但标签未知的文档(这实际上很常见),那么对整个语料库使用TF-IDF是可以的。如果你希望在训练后将分类系统应用于完全未见的文档,那么你只应使用训练集的TF-IDF摘要信息。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注