如何使用概率模型中的 BM25 算法进行打分?

简介: BM25是一种基于概率模型的文本相关性打分算法,可视为TF-IDF的升级版。它综合考虑词频(TF)、逆文档频率(IDF)、文档长度及查询词频,并引入非线性增长与饱和机制。通过参数k1、k2和b调节词频权重、文档长度影响和查询词权重,使评分更精准。广泛应用于Elasticsearch、Lucene等搜索引擎中。

不过,在实际使用中,我们往往不会直接使用 TF-IDF 来计算相关性,而是会以 TF-IDF 为基础,使用向量模型或者概率模型等更复杂的算法来打分。比如说,概率模型中的 BM25(Best Matching 25)算法,这个经典算法就可以看作是 TF-IDF 算法的一种升级。接下来,我们就一起来看看,BM25 算法是怎么打分的。

BM25 算法的一个重要的设计思想是,它认为词频和相关性的关系并不是线性的。也就是说,随着词频的增加,相关性的增加会越来越不明显,并且还会有一个阈值上限。当词频达到阈值以后,那相关性就不会再增长了。

因此,BM25 对于 TF 的使用,设立了一个公式,公式如下:

在这个公式中,随着 tf 的值逐步变大,权重会趋向于 k1 + 1 这个固定的阈值上限(将公式的分子分母同时除以 tf,就能看出这个上限)。其中,k1 是可以人工调整的参数。k1 越大,权重上限越大,收敛速度越慢,表示 tf 越重要。在极端情况下,也就是当 k1 = 0 时,就表示 tf 不重要。比如,在下图中,当 k1 = 3 就比 k1 = 1.2 时的权重上限要高很多。那按照经验来说,我们会把 k1 设为 1.2。

除了考虑词频,BM25 算法还考虑了文档长度的影响,也就是同样一个词项,如果在两篇文档中出现了相同的次数,但一篇文档比较长,而另一篇文档比较短,那一般来说,短文档中这个词项会更重要。这个时候,我们需要在上面的公式中,加入文档长度相关的因子。那么,整个公式就会被改造成如下的样子:

你会看到,分母中的 k1 部分被乘上了文档长度的权重。其中,l 表示当前文档的长度,而 L 表示全部文档的平均长度。l 越长,分母中的 k1 就会越大,整体的相关性权重就会越小。

这个公式中除了 k1,还有一个可以人工调整的参数 b。它的取值范围是 0 到 1,它 代表了文档长度的重要性。当 b 取 0 时,我们可以完全不考虑文档长度的影响;而当 b 取 1 时,k1 的重要性要按照文档长度进行等比例缩放。按照经验,我们会把 b 设置为 0.75,这样的计算效果会比较好。

除此以外,如果查询词比较复杂,比如说一个词项会重复出现,那我们也可以把它看作是一个短文档,用类似的方法计算词项在查询词中的权重。举个例子,如果我们的查询词是「极客们的极客时间课程」,那么「极客」这个词项,其实在查询词中就出现了两次,它的权重应该比「时间」「课程」这些只出现一次的词项更重要。因此,BM25 对词项在查询词中的权重计算公式如下:

其中 tfq 表示词项在查询词 q 中的词频,而 k2 是可以人工调整的参数,它和 k1 的参数作用是类似的。由于查询词一般不会太长,所以词频也不会很大,因此,我们没必要像对待文档一下,用 k1 = 1.2 这么小的范围对它进行控制。我们可以放大词频的作用,把 k2 设置在 0~10 之间。极端情况下,也就是当 k2 取 0 时,表示我们可以完全不考虑查询词中的词项权重。

好了,前面我们说了这么多种权重公式,有基础的权重公式、文档中词项的权重公式和查询词中词项的权重公式。那在实际使用 BM25 算法打分的时候,我们该怎么使用这些公式呢?其实,我们可以回顾一下标准的 TF-IDF,把其中的 TF 进行扩展,变为「文档中词项权重」和「查询词中词项权重」的乘积。这样,我们就得到了 BM25 算法计算一个词项和指定文档相关性的打分公式,公式如下:

你会看到,它由 IDF、文档中词项权重以及查询词中词项权重这三部分共同组成。

如果一个查询词 q 中有多个词项 t,那我们就要把每一个词项 t 和文档 d 的相关性都计算出来,最后累加。这样,我们就得到了这个查询词 q 和文档 d 的相关性打分结果,我们用 score(q,d) 来表示,公式如下:

这就是完整的 BM25 算法的表达式了。尽管这个公式看起来比较复杂,但是经过我们刚才一步一步的拆解,你应该可以很好地理解它了,它其实就是对 TF-IDF 的算法中的 TF 做了更细致的处理而已。其实,BM25 中的 IDF 的部分,我们也还可以优化,比如,基于二值独立模型对它进行退化处理(这是另一个分析相关性的模型,这里就不具体展开说了)之后,我们就可以得到一个和 IDF 相似的优化表示,公式如下:

你可以将它视为 IDF 的变体,用来替换公式中原有的 IDF 部分。

总结来说,BM25 算法就是一个对查询词和文档的相关性进行打分的概率模型算法。BM25 算法考虑了四个因子,分别为 IDF、文档长度、文档中的词频以及查询词中的词频。并且,公式中还加入了 3 个可以人工调整大小的参数,分别是 :k1、k2 和 b。

因此,BM25 算法的效果比 TF-IDF 更好,应用也更广泛。比如说,在 Lucene 和 Elastic Search 这些搜索框架,以及 Google 这类常见的搜索引擎中,就都支持 BM25 排序。不过要用好它,你需要结合我们今天讲的内容,更清楚地理解它的原理。这样才能根据不同的场景,去调整相应的参数,从而取得更好的效果。

相关文章
|
2月前
|
人工智能 安全 算法
一文读懂 Graphify 知识图谱
Graphify 是一款开源、本地优先的多模态知识图谱工具,支持一键将代码/文档/PDF/图片等全量项目材料自动构建成可查询、持久化图谱,降低大模型71.5倍Token消耗,零向量库依赖,安全可控、增量更新,广泛用于AI编程助手增强与大型项目知识管理。(239字)
608 1
|
8月前
|
缓存 监控 安全
知识图谱与大模型:谁将引领未来发展?
本文对比了知识图谱与大模型的技术优劣。知识图谱逻辑清晰、可解释性强但构建繁琐;大模型灵活高效却存在黑盒与幻觉风险。实际工作中,二者并非对立,推荐采用RAG等融合架构,用图谱提供可靠支撑,用大模型快速生成,以兼顾系统可靠性与迭代效率。
|
Java 数据安全/隐私保护 Docker
Docker Desktop 启动报错 Unexpected WSL error 问题解决
Docker Desktop 启动报错 Unexpected WSL error 问题解决
1355 0
|
5月前
|
人工智能 前端开发 Shell
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(1)The Agent Loop (智能体循环)
本专栏精讲AI智能体核心——Agent Loop循环机制,基于开源项目learn-claude-code,用不到50行Python代码实现ReAct范式(思考→行动→观察)。含逐行中文注释、踩坑记录与Bash工具实战,助新手快速入门AI Agent开发。(239字)
1903 2
|
2月前
|
人工智能 缓存 自然语言处理
阿里云百炼Token Plan团队版指南:按Credits计费、标准高级和尊享坐席收费价格及使用方法
阿里云百炼Token Plan团队版是面向企业/团队的AI大模型订阅服务,按Credits统一计费,支持文本与图像生成多模型灵活切换。提供标准(198元/月,2.5万Credits)、高级(698元)、尊享(1398元)三档坐席,兼容OpenClaw、Hermes Agent等主流工具,承诺数据不用于训练,保障安全与稳定。快速体验TokenPlan:https://t.aliyun.com/U/fPVHqY
|
2月前
|
人工智能 数据可视化 Linux
Markdown 转 Word 工程化实践:从 AI 内容到可交付 DOCX 的 几种方案
Markdown转Word仍高频,主因AI生成内容含公式、表格、代码等,直接粘贴易错乱。本文详解DS随心转(零配置/多端支持)、Pandoc(工程化/批量)、Typora(可视化/单篇)等5种方案,并附实操步骤与安全建议。
670 0
|
5月前
|
存储 关系型数据库 数据库
OpenClaw三级记忆系统实现揭秘:向量数据库+关系型数据库的混合存储方案
OpenClaw创新采用三级记忆架构(短期日志、近端会话、长期知识),以本地SQLite+向量索引实现高效检索,支持BM25与向量混合搜索,并通过Markdown文件确保记忆透明可审计。零运维、全离线、可降级,兼顾性能与可控性。
|
4月前
|
存储 搜索推荐 Python
TorchRec大量使用Jagged Tensor
Jagged Tensor(锯齿张量)是专为变长序列设计的紧凑存储格式,用values+lengths/offsets替代padding,显著节省内存与计算。广泛应用于推荐系统中用户行为、多值标签等不等长特征处理,如HSTU模型中的拼接、拆分与矩阵乘法操作。
472 8
|
11月前
|
JavaScript 前端开发 编译器
Vue 3:现代前端开发的新范式
Vue 3:现代前端开发的新范式
432 104
|
8月前
|
人工智能 自然语言处理 Cloud Native
AI数据分析师:阿里云AI认证 vs CAIE AI认证 ,企业更认哪个?
在AI技术全面渗透企业运营、数据驱动决策成为核心竞争力的背景下,AI数据分析师作为衔接技术与业务的关键角色,其专业能力认证已成为企业筛选人才的重要标尺。CAIE(注册人工智能工程师)AI认证与阿里云AI认证是当前国内市场关注度较高的两类认证,但二者的定位、知识体系与适配场景存在显著差异,企业对其认可程度也因行业属性、业务需求不同而有所分化。本文将从认证核心价值、企业认可逻辑、适配场景三个维度,拆解两类认证的企业认可度差异,为AI数据分析师的职业发展与认证选择提供参考。