bm25算法详解

bm25算法是TF-IDF算法的改进版本,考虑了查询中单词在文档中出现的频率、单词自身的重要性和文档的长度
应用:信息检索领域的排名函数

公式

Score(D,Q)=\sum_{i=1}^nIDF(q_i)\cdot\frac{f(q_i,D)\cdot(k_1+1)}{f(q_i,D)+k_i1(1-b+b\frac{|D|}{avgdl})}
说明:

  1. Score(D,Q)表示查询Q文档D的匹配分
  2. 首先对查询D进行分词,获得每个单词q_i
  3. 计算单词q_i的逆文档频率IDF(q_i)=\log(\frac{N-n(q_i)+0.5}{n(q_i)+0.5}+1),其中N为文档总数(常量),n(q_i)是包含单词q_i的文档数,意味着出现单词q_i的文档数越多,单词越不重要。例如:the,is,是,的这些单词。
  4. f(q_i,D)表示单词q_i在文档D中出现的频率,出现的频率越高,说明匹配分越高。
  5. k_1:正系数,控制词频的饱和度,取值范围[1.2,2]。k_1越大,词频,即单词q_i在文档D中出现的频率越大,文档D的匹配分数越高
  6. b:通常设置为0.75,取值范围[0,1],控制文档长度对评分的影响,b越大影响越大,0时没有影响。文档长度越大,评分越低。avgdl为所有文档的平均长度,为常量。|D|为文档D的长度。|D|越大,分母越大,则分数越低。

与TFIDF的区别

公式

\mathrm{tfidf_{i,j}}=\mathrm{idf_{i,j}}\cdot\mathrm{tf_{i,j}}=\lg\frac{|D|}{|\{j:t_i\in d_j\}|}\cdot \frac{n_{i,j}}{\sum_kn_{i,k}}

  1. \mathrm{tf_{i,j}}表示单词n_{i,j}的词频,词频越高,重要性越高
  2. \mathrm{tfidf_{i,j}}表示单词n_{i,j}在所有文档中出现的频率的倒数,再以log为底数得到,出现的频率越高,越不重要
  3. bm25相对tfidf,引入了系数k1,b,衡量了tf和文档长度对评分的影响

Best Matching 25 其中25的含义是此算法经过 25 次迭代调整之后得到的,这也是这个匹配算法经久不衰的原因。

参考文章

RAG提效利器——BM25检索算法原理和Python实现
科普一下Elasticsearch中BM25算法的使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. bm25 是什么? bm25 是一种用来评价搜索词和文档之间相关性的算法,它是一种基于概率检索模型提出的算法...
    山的那边是什么_阅读 29,702评论 0 3
  • 1,TF−IDF算法 TF是指归一化后的词频,IDF是指逆文档频率。给定一个文档集合D,有d1,d2,d3,......
    sudop阅读 11,643评论 0 4
  • TFIDF 先复习一下 tfidf,tf是词频,即某个词 i 在 文章 j 中出现的频率。分母是文章中所有词的个数...
    xieyan0811阅读 3,649评论 0 0
  • 背景:延续上篇写了TF/IDF的公式解析,本篇为BM25解析简单介绍。BM25起源于 概率相关性模型,而不是矢量空...
    双人余_先生阅读 5,019评论 0 0
  • TF-IDF和BM25搜索引擎排序中常用到的两种Score计算方式,用于评估两个文档的相关度。本文会介绍下两种算法...
    游杜渐阅读 5,637评论 0 0

友情链接更多精彩内容