Chriskuei Keep calm and code on

BM25

BM25 算法的一般性公式:

其中,$Q$ 表示 Query,$q_i$ 表示 $Q$ 解析之后的一个语素,$d$ 表示一个搜索结果文档,$W_i$ 表示语素 $q_i$ 的权重,$R(q_i,d)$ 表示语素 $q_i$ 与文档 $d$ 的相关性。

$W_i$ 的定义方法有很多种,比较常用的是 $IDF$(inverse document frequency)。

其中,$N$ 为索引中的全部文档数,$n(q_i)$ 为包含 $q_i$ 的文档数。

根据定义可以看出,对于给定的文档集合,包含 $q_i$ 的文档越多,$q_i$ 的权重则越低。

$R(q_i,d)$ 的一般形式如下:

其中,$k_1$、$k_2$、$b$ 为调节因子,一般 $k_1=2$,$b=0.75$;$f_i$ 为 $q_i$ 在 $d$ 中的出现频率,$qf_i$ 为 $q_i$ 在 $Q$ 中的出现频率。$dl$ 为文档 $d$ 的长度,$avgdl$ 为所有文档的平均长度。

当 $qf_i=1$ 时,公式可以简化为:

从 $K$ 的定义可以看到,参数 $b$ 的作用是调整文档长度对相关性影响的大小。同等 $f_i$ 的情况下,长文档与 $q_i$ 的相关性应该比短文档与 $q_i$ 的相关性弱。

综上,BM25 算法的相关性得分公式如下: