根据相关性对一个文档排名多个查询

时间:2017-03-06 21:54:08

标签: information-retrieval

给定一个查询列表并给出一个文档,我想根据查询与给定文档的相关性对查询进行排名。

对于每个查询,我计算了查询中每个单词的术语频率。 (术语频率定义为文档中单词出现的次数除以文档中的单词总数)

现在,我总结了查询中每个术语的术语频率。

例如:

search query: "Hello World"
document: "It is a beautiful world"

tf for 'Hello': 0
tf for 'World': 1/5 = 0.2

total tf for query 'Hello World' = 0 + 0.2 = 0.2

我的问题是,为每个查询规范化术语频率的最佳方法是什么?因此,长查询不会导致较大的相关性得分。

而且,有没有比使用tf分数更好的方式来获得查询?

我不能在我的场景中使用tf-idf,因为我只针对一个文档对它们进行排名。

2 个答案:

答案 0 :(得分:1)

在回答您的问题之前,我想纠正您对术语频率的定义。您定义术语频率的方式实际上称为maximum likelihood

所以,我正在解释你的第一个问题如下。

  

为每个查询规范化最终得分(最大似然总和)的最佳方法是什么?

一种简单的方法是将分数除以查询长度,以便较长的查询不会获得更高的分数。先进技术也用于在搜索引擎的上下文中计算相关性得分。

  

我是否有更好的方法来获得查询而不仅仅是使用tf分数?

是的,当然!可以在这里使用一种众所周知且广泛使用的名为Okapi BM25的排名方法,几乎​​没有修改。您可以将目标任务视为排名问题。

因此,给定一个文档,根据它们与文档的相关性对一组查询进行排名。

这是搜索引擎背景下的一个众所周知的问题。我鼓励你参加任何大学的任何信息检索课的讲座。例如,这lecture slide讨论了符合您需求的概率排名原则。

答案 1 :(得分:1)

关于无法使用idf的评论,' 我无法在我的方案中使用tf-idf,因为我只针对一个文档对其进行排名。& #39;,这是你能做的:

请记住,您的排名(可检索)单位是查询。因此,请参考标准术语,考虑文档和查询之间的角色转换。 换句话说,将查询视为伪文档,将文档视为伪查询。

然后,您可以应用一系列利用收集统计信息(通过查询集计算)的排名模型,例如:语言模型,BM25,DFR等。