美文网首页
bm25算法详解

bm25算法详解

作者: 又双叒叕苟了一天 | 来源:发表于2024-02-18 15:32 被阅读0次

    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算法的使用

    相关文章

      网友评论

          本文标题:bm25算法详解

          本文链接:https://www.haomeiwen.com/subject/dzcmadtx.html