BM25 的标准化分数

机器算法验证 信息检索
2022-03-19 10:07:17

BM25提供了一个分配分数的函数,该分数是查询和文档的函数。为集合中的每个文档计算分数,并可用于对文档进行排名,但该分数特定于查询并且没有上限(例如,没有某种“最终”相关性的概念)。

是否有可能(从理论的角度)标准化这个分数,以便在查询中排名分数是可比的?

例如,比较查询 1 的排名最高的文档是否比查询 2 的排名最高的文档更相关。

1个回答

BM25 计算的分数仅可用于将特定查询的搜索结果相互比较不可能将该分数转换为与查询无关的东西。

但是有一种方法可以做一些在某些情况下可能没问题的事情。您决定这是否适用于您的情况:

通过将每个分数除以所有分数的总和(例如前 10 个结果)来标准化每个分数。查看第一个命中的得分,它现在的意思是:“是否还有很多其他命中也与此查询匹配?”。如果有,这个数字会很低,否则会很高。

原始 BM25 查询示例(来自匿名真实查询):

Query 1:
Result 1, score=0.5998919138986571
Result 2, score=0.5998919138986571
Result 3, score=0.5998919138986571
Result 4, score=0.4995426367770633
Result 5, score=0.4995426367770633
Result 6 score=0.0

Query 2:
Result 1, score=3.9278021306217763
Result 3, score=1.6993264645743775
Result 4, score=1.5989771874527836
Result 5, score=1.5989771874527836
Result 2, score=1.0994345506757204
Result 6, score=0.0

归一化 BM25 分数:

Query 1:
Result 1, score=0.21434195725534308
Result 2, score=0.21434195725534308
Result 3, score=0.21434195725534308
Result 4, score=0.17848706411698534
Result 5, score=0.17848706411698534
Result 6, score=0.0

Query 2:
Result 1, score=0.3957675647605779
Result 3, score=0.17122509593204485
Result 4, score=0.1611138459985838
Result 5, score=0.1611138459985838
Result 2, score=0.11077964731020955
Result 6, score=0.0

正如您可能从第一个查询中看到的那样,它具有“较低的置信度”,因为有许多命中获得了高分。