在信息检索课程中,我应该证明通过tf-idf对文档进行排序与通过查询似然对它们进行排序是一样的,然后他给了我们通过查询似然对文档进行排序的方程,这个问题非常混乱。 .我应该从查询似然方程开始并从那里推导出 tf-idf 方程,还是应该表明在使用两种排名算法后文档的排名保持不变???我真的需要帮助,我觉得我在一个非常愚蠢的问题上浪费了很多时间......真的不想听到你对我的研究能力的看法,只需要澄清,如果可以的话,一个答案真的很有帮助,因为我在这方面浪费了足够多的时间,而且我还有 3 个作业要在几天后完成……
问问题
1579 次
1 回答
3
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 或形成集合。设 λ 是从文档中选择一个词的概率。进一步来说,
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得到
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)
于 2014-10-28T11:54:58.407 回答