搜索引擎中广泛使用的文档排序算法——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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/922395.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jupyter Notebook的安装和配置提示功能

Python开发环境搭建conda管理环境-CSDN博客 安装anaconda和对接到编译器的教程可以看上面这一篇 Jupyter Notebook是一种交互式计算环境,它允许用户在单个文档中编写和执行代码、方程、可视化和文本。与其他编译器相比,Jupyter Notebook的突出点在于其交…

Oracle SQL*Plus中的SET VERIFY

在 Oracle SQL*Plus 中,SET VERIFY ON 和 SET VERIFY OFF 是两个用于控制命令执行前后显示变量值的命令。这些命令主要用于调试和验证 SQL 脚本中的变量替换情况。 一、参数说明 1.1 SET VERIFY ON 作用:启用变量替换的验证功能。当启用时,S…

【C】错误的变量定义导致sprintf()‌输出错误

问题描述 刚刚写一个用AT指令透传相关的函数,需要用到sprintf()‌拼接字符串。 结果发现sprintf()‌拼接出来的内容是错误的,简化后的代码如下: const char AT_CIPSEND_FIX_LENGTH_HEADER[11] "ATCIPSEND"; // 错误的&#xff0…

【PHP】部署和发布PHP网站到IIS服务器

欢迎来到《小5讲堂》 这是《PHP》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言安装PHP稳定版本线程安全版解压使用 PHP配置配置文件扩展文件路径…

Docker安装RabbitMq详细教程

1.1通过Docker pull RabbitMq docker pull rabbitmq 1.2 获取镜像 docker images 注:执行1.3之前请使用以下命令创建docker网络 docker network create tm 1.3运行命令启动参数 docker run \-e RABBITMQ_DEFAULT_USERrabbitmq \-e RABBITMQ_DEFAULT_PASSrabbitm…

华为ENSP--IP编址及静态路由配置

项目拓扑 项目任务 一、基础配置和IP编址 在AR1、AR2、AR3上配置设备名称和IP地址 # AR1配置 [AR1]interface GigabitEthernet 0/0/0 [AR1-GigabitEthernet0/0/0]ip address 10.0.13.1 24 [AR1-GigabitEthernet0/0/0]q [AR1]interface GigabitEthernet 0/0/1 [AR1-GigabitEth…

老北京香酥芝麻饼

宝安石岩上屋大道有一家老北京香酥芝麻饼,不仅很好吃,还分量特别厚实。应该这家老店,在上屋大道很多人知道和吃过。我每周末都会去买回去给家人一起吃。工作日由于上下班,想买也买不了,因为太晚去老板就收摊了。就像早…

对于相对速度的重新理解 - 2

回到先前说的,先令真空光速为标准光速, 光子的绝对速度 范围, 物质粒子的 范围, 这样的话,我们就可以根据 和 ,把速度分成3个段, 这样就可以出现速度和它的负值,也就是速度的矢量具…

GWO-SVMD分解 | Matlab实现GWO-SVMD灰狼算法优化逐次变分模态分解

GWO-SVMD分解 | Matlab实现GWO-SVMD灰狼算法优化逐次变分模态分解 目录 GWO-SVMD分解 | Matlab实现GWO-SVMD灰狼算法优化逐次变分模态分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 GWO-SVMD灰狼算法优化逐次变分模态分解 内有15种用以优化svmd的适应度函数&#…

初识Linux—— 基本指令(下)

前言: 本篇继续来学习Linux的基础指令,继续加油!!! 本篇文章对于图片即内容详解,已同步到本人gitee:Linux学习: Linux学习与知识讲解 Linux指令 1、查看文件内容的指令 cat ​ cat 查看文件…

在SQLyog中导入和导出数据库

导入 假如我要导入一个xxx.sql,我就先创建一个叫做xxx的数据库。 然后右键点击导入、执行SQL脚本 选择要导入的数据库文件的位置,点击执行即可 注意: 导入之后记得刷新一下导出 选择你要导出的数据库 右键选择:备份/导出、…

如何进行高级红队测试:OpenAI的实践与方法

随着人工智能(AI)技术的迅猛发展,AI模型的安全性和可靠性已经成为业界关注的核心问题之一。为了确保AI系统在实际应用中的安全性,红队测试作为一种有效的安全评估方法,得到了广泛应用。近日,OpenAI发布了两…

ES 基本使用与二次封装

概述 基本了解 Elasticsearch 是一个开源的分布式搜索和分析引擎,基于 Apache Lucene 构建。它提供了对海量数据的快速全文搜索、结构化搜索和分析功能,是目前流行的大数据处理工具之一。主要特点即高效搜索、分布式存储、拓展性强 核心功能 全文搜索:…

Java项目实战II基于SPringBoot的玩具销售商城管理系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着儿童娱乐与教育需求的…

Python安装出现严重错误的解决方法_0x80070643-安装时发生严重错误

使用这个软件MicrosoftProgram_Install_and_Uninstall.meta.diagcab把关于Python一个个组件全部删除,然后就能够重新安装Python了 修复阻止程序安装或删除的问题 - Microsoft 支持 这里下载

Java语言编程,通过阿里云mongo数据库监控实现数据库的连接池优化

一、背景 线上程序连接mongos超时,mongo监控显示连接数已使用100%。 java程序报错信息: org.mongodb.driver.connection: Closed connection [connectionId{localValue:1480}] to 192.168.10.16:3717 because there was a socket exception raised by…

微信小程序全局配置:导航栏、下拉刷新与上拉触底设置教程

微信小程序全局配置:导航栏、下拉刷新与上拉触底设置教程 引言 微信小程序作为一种新兴的轻量级应用,凭借其便捷性和丰富的功能受到了广泛的欢迎。在开发小程序的过程中,合理配置全局属性是提升用户体验的关键。本文将深入探讨小程序的全局配置中的window选项,重点介绍导…

YOLOv11融合[ECCV 2018]RCAN中的RCAB模块及相关改进思路

YOLOv11v10v8使用教程: YOLOv11入门到入土使用教程 YOLOv11改进汇总贴:YOLOv11及自研模型更新汇总 《Image Super-Resolution Using Very Deep Residual Channel Attention Networks》 一、 模块介绍 论文链接:https://arxiv.org/abs/1807…

linux ubuntu的脚本知

目录 一、变量的引用 二、判断指定的文件是否存在 三、判断目录是否存在 四、判断最近一次命令执行是否成功 五、一些比较符号 六、"文件"的读取和写入 七、echo打印输出 八、ubuntu切换到root用户 N、其它可以参考的网址 脚本功能强大,用起来也…

前端:JavaScript (学习笔记)【2】

目录 一,数组的使用 1,数组的创建 [ ] 2,数组的元素和长度 3,数组的遍历方式 4,数组的常用方法 二,JavaScript中的对象 1,常用对象 (1)String和java中的Stri…