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



请告诉我如何克服IDF中的负权重问题。谁能举个小例子?

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

请注意,这个分数N/N (t)总是>= 1。对于出现在所有文档中的单词,很可能是英语单词"the",则idf的值为1。即使在这个分数周围应用日志,值也总是>= 0。(回想一下log函数的图,它单调地从-inf增加到+inf,如果x<1, log(1)=0,如果x>1, log(x)>0。

所以,idf的标准定义不可能是负的。

Debasis给出的答案完全正确。但是,如果在除数中加入一个小的+1项以避免被零除错误,则仍然可能产生负idf。维基百科上关于tf-idf的一篇文章表明了这一点。问题是,如果出现计数n(t)等于文档的计数n(即它出现在所有文档中),那么LOG操作的结果将是负值。我刚刚在一个玩具问题上实现tf-idf时遇到了这个问题,其中文档计数N = 3,出现计数3通常= 0,但导致idf为-0.287682072451781,因为+1校正项将除数增加到4,>而不是文件的数量。也许这就是O.P.经历负权重背后的罪魁祸首。我想我应该把这个贴出来,以防有人再次遇到这个最初令人困惑的问题。解决方法很简单:删除+1项并找到另一种方法来避免除零错误。

最新更新