如何克服逆文档频率(IDF)的缺点

时间:2014-06-29 09:18:21

标签: search-engine information-retrieval

请告诉我如何克服IDF中的负权重问题。有人能给出一个小例子吗?

2 个答案:

答案 0 :(得分:1)

Debasis给出的答案是完全正确的。但是,如果将一个小的+1项添加到除数以避免除零错误,则负idf可能仍会消失。暗示这一点的一种来源是Wikipedia article on tf-idf。问题是,如果出现次数n(t)等于文档N的数量(即它出现在所有文档中),那么LOG操作就会得出负值。我在玩具问题上实现tf-idf时遇到了这个问题,其中文档计数N = 3,出现计数3通常为0,但是由于+1校正项增加,导致idf为-0.287682072451781除数为4,比起文件计数。也许这是导致O.P.负重的罪魁祸首。我以为我会发布此消息,以防其他人再次遇到最初令人困惑的问题。解决方法很简单:删除+1项并找到另一种避免被零除错误的方法。

答案 1 :(得分:0)

IDF定义为N / n(t),其中n(t)是术语“t”出现的文档数,N是集合中文档的总数。有时,会在此分数周围应用log()。

请注意,此分数N / n(t)始终> = 1.对于出现在所有文档中的单词,可能的情况是英语单词“the”,idf的值为1。即使在该分数周围应用了对数,该值也总是> = 0。 (回想一下log函数的图,它从-inf到+ inf单调增加,其中log(x)<0如果x <1 log(1)= 0而log(x)> 0,如果x> 1)。 / p>

因此,idf的标准定义无法为负。