如何计算单个新文档的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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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