当前位置: 首页 > article >正文

搜索引擎中广泛使用的文档排序算法——BM25(Best Matching 25)

在搜索场景中,BM25能计算每个文档与查询的匹配度,从中找出最相关的文档,并按相关性高低排序展示。

要理解BM25,需要掌握以下几个关键概念:

1. 词频(Term Frequency, TF):某关键词在文档中出现的次数。关键词出现越频繁,通常表示文档与查询的相关性越高。
2. 逆文档频率(Inverse Document Frequency, IDF):衡量某关键词在整个文档集合中的稀有程度。稀有关键词的区分度更高,对评分贡献大,其计算公式为:【图1】
3. 文档长度归一化(Document Length Normalization):调整文档长度对相关性评分的影响。避免长文档因为包含更多关键词而获得不公平的高分。
4. 参数 k1 和 b
- k1:控制词频对评分的影响程度。值越高,词频权重越大。
- b:控制文档长度归一化的强度。b=0时忽略文档长度,b=1时完全考虑。

BM25结合上述概念,通过以下步骤计算每篇文档的相关性得分——

计算IDF,然后计算每个关键词的得分【图2】,再将各关键词的得分相加,得到文档的总相关性得分。

举个栗子,假设有以下三个文档,查询关键词“猫 养护”:

- 文档1:包含“猫”和“养护”各2次,总长度100个词。
- 文档2:包含“猫”3次,总长度150个词。
- 文档3:包含“养护”1次,总长度80个词。

计算两个关键词的IDF【图3】后,再计算各文档的BM25得分,最终得出:

- 文档1:同时包含“猫”和“养护”,得分较高。
- 文档2:仅包含“猫”,但词频较高。
- 文档3:仅包含“养护”,且词频低,得分最低。

详细内容:

 Understanding the BM25 full text search algorithm | Evan Schwartz


http://www.kler.cn/a/413088.html

相关文章:

  • JavaScript练习2——动态“钟”的绘制
  • Android 12.0新增自定义HIDL问题记录
  • [C++ 核心编程]笔记 4.1 封装
  • 计算机基础(下)
  • js版本之ES5特性简述【String、Function、JSON、其他】(二)
  • 【消息序列】详解(7):剖析回环模式--设备测试的核心利器
  • 【从零开始的LeetCode-算法】3206. 交替组 I
  • 《Opencv》基础操作<1>
  • 天通物联网应用:首创渐进式图片压缩算法,实现1000倍高效图传,可一键拨打天通电话
  • C#开发合集
  • CentOS8.5.2111(8)LAMP部署综合实验
  • Linux之网络基础
  • 图片预览 图片上传到服务器
  • FFmpeg 简介与编译
  • 第12章 手写Spring MVC
  • Android CameraX双流更新:实现双摄像头流的便捷解决方案
  • 计算机网络头歌——单臂路由实现VLAN间通信
  • vue2 G6绘制辐射状布局图
  • OpenCV截取指定图片区域
  • spring导出多个文件,要求打包成压缩包
  • 论文笔记:Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
  • go里面 interface 是否为nil
  • 基于STM32的智能家居电器控制系统
  • 林业产品智能推荐引擎:Spring Boot篇
  • django小项目
  • 【微信小程序】- 位置权限