【问题标题】:Rank multiple queries against one document based on relevance根据相关性对一个文档的多个查询进行排名
【发布时间】:2017-03-06 21:54:08
【问题描述】:

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

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

现在,我总结了查询中每个词的词频。

例如:

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

【问题讨论】:

    标签: information-retrieval


    【解决方案1】:

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

    所以,我将您的第一个问题解释如下。

    标准化每个查询的最终分数(最大似然总和)的最佳方法是什么?

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

    有没有比只使用 tf 分数更好的方法来对查询进行评分?

    是的,当然!一种著名且广泛使用的排名方法Okapi BM25 可以在此处使用,只需稍作修改。您可以将您的目标任务视为排名问题。

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

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

    【讨论】:

      【解决方案2】:

      谈到您关于无法使用 idf 的评论,“我无法在我的场景中使用 tf-idf,因为我只针对一个文档对它们进行排名。”,这就是您可以做的做:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-23
        • 1970-01-01
        • 1970-01-01
        • 2011-05-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多