2017-03-06 29 views
0

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

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

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

例如:

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,因为我只对一个文档进行排名。

回答

1

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

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

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

一个简单的方法是按查询长度划分得分,以便较长的查询不会收到较高的得分。先进的技术也用于计算搜索引擎环境下的相关性分数。

有没有比仅使用tf分数更好的方式来评分查询?

是的,当然!众所周知的广泛使用的排名方法之一Okapi BM25可以在这里用很少的修改。您可以将您的目标任务视为排名问题。

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

这是搜索引擎环境中众所周知的问题。我鼓励你参加任何大学的任何信息检索课的讲座。例如,这个lecture slide谈论与您的需要一致的概率排名原则。

1

关于无法使用idf的说法,'我不能在我的场景中使用tf-idf,因为我仅将它们排序为仅针对一个文档。',你可以这样做:

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

然后,您可以应用整个范围的排名模型,这些排名模型利用收集统计信息(通过查询集计算),例如,语言模型,BM25,DFR等。

相关问题