我正在使用文档-术语向量来表示一组文档。我使用TF*IDF来计算每个文档向量的术语权重。然后,我可以使用此矩阵为文档分类训练模型。
我希望能够在未来对新文档进行分类。但是为了对其进行分类,我需要首先将文档转换为文档-术语向量,向量也应由TF*IDF值组成。
我的问题是,我如何仅使用单个文档计算TF*IDF?
据我所知,TF可以基于单个文档本身计算,但IDF只能使用一组文档计算。在我的当前实验中,我实际上计算了整个文档集合的TF*IDF值。然后,我使用一些文档作为训练集,其他文档作为测试集。
我突然意识到这似乎不适用于现实生活。
ADD 1
因此,实际上有两种微妙不同的分类场景:
我希望能够在未来对新文档进行分类。但是为了对其进行分类,我需要首先将文档转换为文档-术语向量,向量也应由TF*IDF值组成。
我的问题是,我如何仅使用单个文档计算TF*IDF?
据我所知,TF可以基于单个文档本身计算,但IDF只能使用一组文档计算。在我的当前实验中,我实际上计算了整个文档集合的TF*IDF值。然后,我使用一些文档作为训练集,其他文档作为测试集。
我突然意识到这似乎不适用于现实生活。
ADD 1
因此,实际上有两种微妙不同的分类场景:
- 对于一些已知内容但未知标签的文档进行分类。
- 对于一些完全未见过的文档进行分类。
对于第1种情况,我们可以将所有带有和不带有标签的文档合并起来,并获取它们的TF*IDF值。这样,即使我们只使用带有标签的文档进行训练,训练结果仍将包含不带标签的文档的影响。
但是我的情况是第2种。
假设我从训练集语料库的摘要中获得了如下关于术语T的信息:
- T在训练集中的文档数为n。
- 训练集中文档的总数为N。
那么我应该如下计算一个未见过的文档D的IDF值吗?
IDF(t, D)= log((N+1)/(n+1))
ADD 2
如果我在新文档中遇到了一个之前在训练语料库中没有出现过的术语,那么我该如何计算它在文档-术语向量中的权重?