天天看点

文本相似度-bm25算法原理及实现文本相似度-bm25算法原理及实现原理

文本相似度-bm25算法原理及实现

文章目录

  • 文本相似度-bm25算法原理及实现
  • 原理

原理

BM25算法:

用途:搜索相关性分数的计算;

算法描述:

  1. 对Query进行语素解析,生成语素 q i q_i qi​;
  2. 然后,对于每个搜索结果D,计算每个语素 q i q_i qi​与D的相关性得分,
  3. 最后,将qi相对于D的相关性得分进行加权求和,从而得到Query与D的相关性得分。

BM25算法的一般性公式如下:

​ S c o r e ( Q , d ) = ∑ 1 n W i R ( q i , d ) Score(Q, d) = \sum_{1}^{n}W_iR(q_i, d) Score(Q,d)=1∑n​Wi​R(qi​,d)

名词解释:

  • Q表示Query;
  • q i q_i qi​表示Q解析之后的一个语素(对中文而言,我们可以把对Query的分词作为语素分析,每个词看成语素 q i q_i qi​);
  • d表示一个搜索结果文档;
  • W i W_i Wi​表示语素 q i q_i qi​的权重; R ( q i , d ) R(q_i,d) R(qi​,d)表示语素 q i q_i qi​与文档d的相关性得分;

下面我们来看如何定义Wi。

​ 判断一个词与一个文档的相关性的权重,方法有多种,较常用的是IDF。

我们再来看语素qi与文档d的相关性得分R(qi,d)。

首先来看BM25中相关性得分的一般形式:

文本相似度-bm25算法原理及实现文本相似度-bm25算法原理及实现原理
文本相似度-bm25算法原理及实现文本相似度-bm25算法原理及实现原理
  • k1,k2,b为调节因子,通常根据经验设置,一般k1=2,b=0.75;
  • fi为qi在d中的出现频率
  • qfi为qi在Query中的出现频率。
  • dl为文档d的长度
  • avgdl为所有文档的平均长度。由于绝大部分情况下,qi在Query中只会出现一次,即qfi=1,因此公式可以简化为:
文本相似度-bm25算法原理及实现文本相似度-bm25算法原理及实现原理

从K的定义中可以看到,参数b的作用是调整文档长度对相关性影响的大小。b越大,文档长度的对相关性得分的影响越大,反之越小。而文档的相对长度越长,K值将越大,则相关性得分会越小。这可以理解为,当文档较长时,包含qi的机会越大,因此,同等fi的情况下,长文档与qi的相关性应该比短文档与qi的相关性弱。

综上,BM25算法的相关性得分公式可总结为:

文本相似度-bm25算法原理及实现文本相似度-bm25算法原理及实现原理

从BM25的公式可以看到,通过使用不同的语素分析方法、语素权重判定方法,以及语素与文档的相关性判定方法,我们可以衍生出不同的搜索相关性得分计算方法,这就为我们设计算法提供了较大的灵活性。

上一篇: Weka 笔记

继续阅读