在测试时如何计算IDF(即TF-IDF中的IDF)?

6

据我所知,IDF用于计算有多少文档包含该术语(类似于概念)。您可以在训练集中计算IDF(以及TF),因为您已经拥有所有文档。但是,如果我没有预先准备测试集,并且我正在按顺序获取测试文档(例如来自网络爬虫),那么当进行测试时,我如何计算文档中单词的IDF值?

2个回答

2

如果您的数据集足够大,您可以仅使用训练集来计算IDF。在测试阶段,如果新词出现在训练集中,则使用训练集的IDF值。如果该词是新词,则使用训练集文档数量来计算IDF。 为了获得更好的结果,有些情况下可以使用平滑方法。


这个回答对我来说很有道理。不过,我想知道是否有任何论文或文章可以参考?另外,我想知道是否有任何库可以用于此事? - Pedram
这是我的编辑评论:这个答案在某种程度上对我有意义。但是,我想知道是否有任何论文或文章可以参考?问题是,假设您已经训练好了模型,一旦测试文档中出现新单词,即使您可以使用大型数据集计算该单词的IDF,但您仍将在训练和测试集中拥有不同数量的特征,并且它不会起作用。 - Pedram

0

如果你只在索引/爬取了一堆文档之后进行测试,那么你可以在完成爬取后计算IDF。当你遇到新文档或新术语时,你不必计算IDF。你可以在需要进行一些TD-IDF或其他计算时即时计算它。

如果这还不够,出于某种原因,你仍然可以使用另一个文件数据集的IDF,最好是与相同类型的文件。


如果你只在索引/爬取了一大堆文档之后才进行测试,那并不是很好。当我通过爬虫收到一个页面时,我必须决定该页面此时是相关还是不相关的。正如你所提到的,在这种情况下计算另一个文档数据集的IDF是一种惯例吗? - samsamara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接