算法说明
BM25(Best Matching 25)是一种信息检索领域的排名算法,用于计算查询(Query)与文档(Document)之间的相关性得分。它改进了传统的TF-IDF算法,引入文档长度归一化和词频饱和机制,使检索结果更准确。
公式表示:
其中:
-f(qi,D) 是词项 qi在文档 D中的出现次数(TF),
- N 是文档总数,
- n(qi) 是包含词项 qi的文档数,
- ∣D∣是文档 D的长度,
- avgdl 是所有文档的平均长度,
- k1 和 b是调整参数,通常设置为 k1=1.2和 b=0.75 。
简单示例
假设我们有以下文档集合:
文档1:"我喜欢编程"
- 文档2:"编程很有趣"
- 查询:"他喜欢编程"
步骤:
- 分词:将文档和查询拆分为词。
- 文档1:["我", "喜欢", "编程"]
- 文档2:["编程", "很", "有趣"]
- 查询:["他", "喜欢", "编程"]
- 计算BM25得分:使用
rank_bm25库计算每个文档与查询的相关性。
代码实现
CodeBlock Loading...
结果如下:
CodeBlock Loading...