什么是 Elasticsearch 中的 BM25 算法?与传统的 TF-IDF 算法相比,它有哪些改进?

Sherwin.Wei Lv8

什么是 Elasticsearch 中的 BM25 算法?与传统的 TF-IDF 算法相比,它有哪些改进?

回答重点

BM25(Okapi BM25)是一种基于概率检索模型的文档评分函数,用于评估文档与查询词之间的相关性。它通常用于全文搜索引擎,比如 Elasticsearch。BM25 是 TF-IDF 的改进版,通过更好地适应查询词频和文档长度,来提高搜索结果的质量和精确度。

与传统的 TF-IDF 算法相比,BM25 主要有以下改进:
1)它通过引入两个可调参数 (k_1) 和 (b),可以更灵活地控制词频和文档长度对评分的影响。
2)BM25 对词频进行了平滑处理,避免词频过高的词对评分的影响过大。
3)通过考虑文档长度,BM25 可以避免短文档在排序时的劣势。

扩展知识

1)TF-IDF 简介:

  • TF-IDF 是一种用来评估一个词在一个文档或文档集合中重要程度的统计方法。
  • TF(Term Frequency,词频):衡量词语在文档中出现的频率。例如,词语“猫”在某篇文章中出现次数为 5 次。
  • IDF(Inverse Document Frequency,逆文档频率):衡量词语在所有文档中出现的稀有程度。例如,假设有 100 篇文章,而“猫”只出现过 10 篇,那么“猫”的逆文档频率较高。
  • 计算公式:TF-IDF = TF * IDF。

2)BM25 评分公式:

  • BM25 基于 Term Frequency 和 Inverse Document Frequency 的基础,但在此之上增加了更多的细节修正。例如:
    [
    \text{score}(D, Q) = \sum_{t \in Q} \text{IDF}(t) \cdot \frac{\text{TF}(t, D) \cdot (k_1 + 1)}{\text{TF}(t, D) + k_1 \cdot (1 - b + b \cdot \frac{|D|}{\text{avgdl}})}
    ]
  • 其中:
    • (\text{TF}(t, D)) 是词 t 在文档 D 中的词频。
    • (\text{IDF}(t)) 是词 t 的逆文档频率。
    • (k_1)(通常设置在 [1.2, 2.0] 之间)是控制词频饱和程度的参数。
    • (b)(通常在 0.75 左右)是控制文档长度正常化的参数。
    • (|D|) 是文档 D 的长度(即词的总次数)。
    • (\text{avgdl}) 是文档集合的平均长度。

3)BM25 的优势:

  • 词频平滑处理(Term Frequency Smoothing):在 TF-IDF 中,词频较高的词会对评分产生过大的影响,而 BM25 通过平滑函数有效地降低了这种影响,使得评分更加平衡。
  • 文档长度考虑(Document Length Normalization):BM25 引入对文档长度的归一化处理,使同一个词在较短文档中的权重与在较长文档中计算的权重区别对待,这样可以避免短文档被不公平地排在较后位置。

4)实际应用中的参数调优:

  • (k_1) 和 (b) 是 BM25 中两个灵活参数,不同数据集需要对这些参数进行微调才能得到最优效果。
  • 一般情况下,(k_1) 设置在 1.2 到 2.0 之间,(b) 在 0.75 左右。
Comments
On this page
什么是 Elasticsearch 中的 BM25 算法?与传统的 TF-IDF 算法相比,它有哪些改进?