概述
BM25是信息检索领域相关性一个重要的加权公式,BM是Best Matching的缩写。ElasticSearch,Xapian等搜索引擎库多基于BM25来计算documents(搜索结果集)和query(搜索词)的相关性。
对于一个query Q,其切词组合为q1,... ,qn,则document D的BM25相关性分数由三部分构成:
score(D,Q)=i=1∑nIDF(qi)⋅R(qi,D)⋅R(qi,Q)
- IDF(qi) : 切词 qi 的权重。
- R(qi,D) : 切词 qi 与doucument D之间的相关性。
- R(qi,Q) : 切词 qi 与query Q之间的相似性。
切词权重
IDF(qi)=ln(n(qi)+0.5N+1)
- N表示总文档数。
- n(qi)表示包含切词 qi的文档数。
切词文档相关性
R(qi,Q)=f(qi,D)+k1⋅(1−b+b⋅avgdl∣D∣)f(qi,D)⋅(k1+1)
-
f(qi,D)代表分词 qi在文档D中的词频。
-
∣D∣代表文档D的长度。
-
avgdl 代表所有文档的平均长度。
-
k1和b为可调正参数。k1控制着词频结果在词频饱和度中的上升速度,一般情况下,k1∈[1.2,2] 。值越小饱和度变化越快,值越大饱和度变化越慢。b控制着字段长归一值所起的作用,0.0 会禁用归一化, 1.0 会启用完全归一化,默认情况下b=0.75。
切词Query相关性
R(qi,D)=k3+f(qi,D)(k3+1)f(qi,D)
- f(qi,D) 表示单词t在query中的词频,
- k3 是一个可调正参数,来矫正query中的词频范围。根据经验,k3∈[1.2,2]
BM25公式
score(D,Q)=i=1∑nln(n(qi)+0.5N+1)⋅f(qi,D)+k1⋅(1−b+b⋅avgdl∣D∣)f(qi,D)⋅(k1+1)⋅k3+f(qi,D)(k3+1)f(qi,D)
参考