BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

本文聚焦于bm25算法,重点讲解:

①bm25算法的推导过程

②bm25和tfidf的区别

③lucene中的bm25

④如何在solr中使用bm25算法

 

BM25简介

solr BM25(best match)是一种信息检索模型,属于二值独立概率模型。 

IR模型分类

基于集合论的IR模型:布尔模型

基于代数论的IR模型:向量空间模型/潜性语义索引模型

基于概率统计的IR模型:回归模型/二值独立概率模型/基于统计语言建模的IR模型

 

 

公式推导

BM25分值与term的两个特征有关:一是term的权重,二是term与文档(查询文档、搜索结果文档)的相关性。

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

这里的IDF来源于二值独立模型

二值独立模型假设

如果一:一篇文章在由特征(term)表示的时候。以特征“出现”和“不出现”两种情况来表示,也能够理解为相关不相关。

 

如果二:词汇独立性

 

    所谓独立性,是指文档里出现的单词之间没有不论什么关联。任一个单词在文章中的分布率不依赖于还有一个单词是否出现,这个如果明显与事实不符,可是为了简化计算。非常多地方须要做出独立性如果。这样的如果是普遍的。

W=文档在相关文档中出现的概率/文档在非相关文档中出现的概率

 

 

 

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

为了方便计算,对上述公式两边取log,得到:

 

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

那么怎样估算概率Si和Pi呢,假设给定用户查询。我们能确定哪些文档集合构成了相关文档集合,哪些文档构成了不相关文档集合,那么就能够用例如以下的数据对概率进行估算:

 

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

 

依据上表能够计算出Pi和Si的概率估值。为了避免log(0),对估值公式进行平滑操作,分子+0.5。分母+1.0

 

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

代入估值公式得到:

 

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

 

在我们不知道哪些文档相关。哪些文档不相关的情况下。将相关文档数R及包括查询词相关文档数r设为0。那么BIM公式退化成:

BM25算法推导 , lucene bm25 , solr bm25 , bm25 vs tfidf

 这个公式代表的含义就是。对于同一时候出如今查询Q和文档D中的单词,累加每一个单词的估值结果就是文档D和查询Q的相关性度量,在预先不知道哪些文档相关哪些文档不相关的情况下。能够使用固定值取代,这样的情况下该公式等价于向量空间模型(VSM)中的IDF因子。

 

 

solr验证

7.7496266 = sum of:
      7.7496266 = weight(default_search:apple in 58214) [BM25Similarity], result of:
          7.7496266 = score(doc=58214,freq=4.0 = termFreq=4.0

), product of:
               4.3986993 = idf(docFreq=63357, maxDocs=5153814)
               1.7617996 = tfNorm, computed from:
                     4.0 = termFreq=4.0
                     2.0 = parameter k1
                     0.5 = parameter b
                     90.458496 = avgFieldLength
                     163.84 = fieldLength

 

BM25 k b 参数调优

k取值越大,tf影响越大,分值越大;

b取值于0,1之间,b越大,对文档长度惩罚越大;

经验k=1.2,b=0.75效果最好。

 

 

 

 

资源

现代信息检索

http://www.tao-sou.com/744.html

https://www.cnblogs.com/liguangsunls/p/6722444.html

https://en.wikipedia.org/wiki/Okapi_BM25