BM25

355 阅读1分钟

概述

BM25是信息检索领域相关性一个重要的加权公式,BM是Best Matching的缩写。ElasticSearch,Xapian等搜索引擎库多基于BM25来计算documents(搜索结果集)和query(搜索词)的相关性。

对于一个query Q,其切词组合为q1q_{1},... ,qnq_{n},则document D的BM25相关性分数由三部分构成:

score(D,Q)=i=1nIDF(qi)R(qi,D)R(qi,Q)score(D,Q) = \sum^{n}_{i=1} IDF(q_{i})\cdot R(q_{i},D)\cdot R(q_{i},Q)
  1. IDF(qi)IDF(q_{i}) : 切词 qiq_{i} 的权重。
  2. R(qi,D)R(q_{i},D) : 切词 qiq_{i} 与doucument D之间的相关性。
  3. R(qi,Q)R(q_{i},Q) : 切词 qiq_{i} 与query Q之间的相似性。

切词权重

IDF(qi)=ln(N+1n(qi)+0.5)IDF(q_{i}) = ln(\frac{N+1}{n(q_{i})+0.5})
  • N表示总文档数。
  • n(qi)n(q_{i})表示包含切词 qiq_{i}的文档数。

切词文档相关性

R(qi,Q)=f(qi,D)(k1+1)f(qi,D)+k1(1b+bDavgdl)R(q_{i},Q) = \frac{f(q_{i}, D)\cdot(k_{1}+1)}{f(q_{i},D)+k_{1}\cdot(1 - b + b \cdot \frac{\left| D\right| }{avgdl} )}
  • f(qi,D)f(q_{i},D)代表分词 qiq_{i}在文档D中的词频。

  • D\left| D\right|代表文档D的长度。

  • avgdlavgdl 代表所有文档的平均长度。

  • k1k_{1}和b为可调正参数。k1k_{1}控制着词频结果在词频饱和度中的上升速度,一般情况下,k1[1.2,2]k_{1}\in[1.2,2] 。值越小饱和度变化越快,值越大饱和度变化越慢。bb控制着字段长归一值所起的作用,0.00.0 会禁用归一化, 1.01.0 会启用完全归一化,默认情况下b=0.75b = 0.75

切词Query相关性

R(qi,D)=(k3+1)f(qi,D)k3+f(qi,D)R(q_{i},D) = \frac{(k_{3}+1)f(q_{i}, D)}{k_{3} + f(q_{i}, D)}
  • f(qi,D)f(q_{i}, D) 表示单词t在query中的词频,
  • k3k_{3} 是一个可调正参数,来矫正query中的词频范围。根据经验,k3[1.2,2]k_{3}\in[1.2,2]

BM25公式

score(D,Q)=i=1nln(N+1n(qi)+0.5)f(qi,D)(k1+1)f(qi,D)+k1(1b+bDavgdl)(k3+1)f(qi,D)k3+f(qi,D)score(D,Q) = \sum^{n}_{i=1} ln(\frac{N+1}{n(q_{i})+0.5})\cdot \frac{f(q_{i}, D)\cdot(k_{1}+1)}{f(q_{i},D)+k_{1}\cdot(1 - b + b \cdot \frac{\left| D\right| }{avgdl} )}\cdot\frac{(k_{3}+1)f(q_{i}, D)}{k_{3} + f(q_{i}, D)}

参考