查询可能性vs tf idf

时间:2014-10-25 12:07:45

标签: information-retrieval tf-idf web-search

在信息检索课程中,我应该通过tf-idf显示排名文档与查询可能性排名相同,然后他给我们通过查询可能性对文档进行排名的方程式,问题非常多混淆...我应该从查询可能性的方程式开始并从那里推导出tf-idf的方程,或者我应该表明在使用两种排名算法后文档的排名保持不变?我真的需要这方面的帮助,我觉得我在一个非常愚蠢的问题上浪费了这么多时间......真的不想听到你对我的研究能力的看法,只需要澄清,如果可以的话,一个答案真的会有所帮助,因为我已经浪费了足够的时间在这上面,我还有3天的任务将在几天后到期......

1 个答案:

答案 0 :(得分:2)

tf-idf是一种非常特别的方法。虽然它直观地非常清楚,但它在理论上并没有动机。更系统的检索方法,如语言建模(也称为查询可能性)和BM25在理论上建立了tf-idf直觉。

特别是对于你的问题,你应该从查询似然方程开始,并证明它在数学上等同于tf-idf情况。

查询可能性返回按P(d | q)排序的文档的排序列表。为了估计P(d | q),使用贝叶斯规则来注意P(d | q)= P(q | d)P(d)/ P(q)。 分母是常数,因此可以在相似度计算中被忽略。 P(q | d)可以通过\ prod P(t | d)来估计,其中t是查询中的一个术语。

现在可以从文档d中选择查询项t或形成集合。设\ lambda是从文档中选择一个术语的概率。 更具体地说,

P(t|d) = \lambda tf(t,d)/len(d) + (1-\lambda) cf(t)/cs
P(q|d) = \prod P(t|d)

其中tf(t,d)是频率。在文档d中,术语t,len(d)是文档d的长度,cf(t)是集合中出现t的次数,cs是集合中单词的总数。

由于和的后半部分与文件d无关,你可以用后一项除以等式并取日志得到

log P(q|d) = \sum log (1 + \lambda/(1-\lambda) (tf(t,d)/len(d)) * (cs/cf(t)) )

       = \sum log (1 + \lambda/(1-\lambda) tf * idf)