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与文档(查询文档、搜索结果文档)的相关性。
这里的IDF来源于二值独立模型
二值独立模型假设
如果一:一篇文章在由特征(term)表示的时候。以特征“出现”和“不出现”两种情况来表示,也能够理解为相关不相关。
如果二:词汇独立性
所谓独立性,是指文档里出现的单词之间没有不论什么关联。任一个单词在文章中的分布率不依赖于还有一个单词是否出现,这个如果明显与事实不符,可是为了简化计算。非常多地方须要做出独立性如果。这样的如果是普遍的。
W=文档在相关文档中出现的概率/文档在非相关文档中出现的概率
为了方便计算,对上述公式两边取log,得到:
那么怎样估算概率Si和Pi呢,假设给定用户查询。我们能确定哪些文档集合构成了相关文档集合,哪些文档构成了不相关文档集合,那么就能够用例如以下的数据对概率进行估算:
依据上表能够计算出Pi和Si的概率估值。为了避免log(0),对估值公式进行平滑操作,分子+0.5。分母+1.0
代入估值公式得到:
在我们不知道哪些文档相关。哪些文档不相关的情况下。将相关文档数R及包括查询词相关文档数r设为0。那么BIM公式退化成:
这个公式代表的含义就是。对于同一时候出如今查询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