算法分析
代码链接:
BM25检索
BM25-ADPT和BM25T
DocT5query
前导参数含义:
- 𝑓(𝑡,𝐷):词 𝑡在文档 𝐷中的词频
- ∣D∣: 文档长度
- avgdl: 平均文档长度
- k1∈[1.2,2.0]: 控制词频饱和程度
- b∈[0,1]: 控制长度归一化程度
1. BM25
- 提出年份: 1994
- 特点: 经典的概率检索模型,基于词频(TF)、逆文档频率(IDF)和文档长度归一化,平衡查询词与文档的相关性,广泛用于信息检索。
- 原理:
- BM25 基于词袋模型,计算查询词在文档中的加权得分。
- 得分公式结合 TF(词频)、IDF(衡量词的区分度)和文档长度归一化(避免偏向长文档)。通过调参(如 k1 控制 TF 饱和度,b 控制长度归一化),模型优化相关性排名。
- 检索示例: 查询“深度学习简介”分解为词“深度”“学习”“简介”,文档包含这些词的频率和 IDF 计算得分,排名靠前文档为包含高频查询词的短文档。
- 优化内容:
- 参数调优: 调整 k1(TF 饱和度)和 b(长度归一化)以适配不同语料。
- IDF 优化: 使用平滑 IDF(如加 1)避免零分问题。
- 可能的优化方向: 引入语义信息(如词嵌入);优化大规模语料的计算效率。
- 优点:
- 计算简单,效率高。
- 广泛适用于文本检索任务。
- 对短查询鲁棒性强。
- 缺点:
- 忽略语义关系,仅基于词频。
- 对长文档或复杂查询性能有限。
- 需手动调参。
- 应用场景: 搜索引擎、文档检索、开放域问答的初筛。
2. Okapi BM25(替代基础BM25)
-
提出年份: 1998 (基于 BM25 的实现,Okapi 系统首次广泛应用)
-
特点: BM25 的具体实现版本,优化了参数设置和 IDF 计算,强调实践中的高效性和鲁棒性,广泛用于早期信息检索系统。
-
原理:
- Okapi BM25 是 BM25 的一个变体,核心公式与 BM25 一致,但实现上优化了参数默认值(如 k1=1.2,b=0.75)和 IDF 平滑方式(+0.5 出现在分子和分母中,整体+1)。
- 得分基于查询词的 TF、IDF 和文档长度归一化,强调实际系统中的可调性。
-平滑方式的IDF :
-
检索示例: 查询“神经网络原理”分解为词“神经”“网络”“原理”,文档得分基于优化后的 IDF 和默认参数,排名靠前文档为包含查询词的适中长度文档。
-
优化内容:
- 默认参数: 固定 k1=1.2,b=0.75,简化部署。
- IDF 平滑: 使用更鲁棒的平滑方式(如加 0.5)处理稀有词。
- 可能的优化方向: 适配特定领域语料(如医疗、法律);结合语义特征。
-
优点:
- 参数优化,易于部署。
- 在中小规模语料上表现稳定。
- 计算效率高。
-
缺点:
- 仍缺乏语义理解。
- 参数固定可能不适配所有场景。
- 对复杂查询表现一般。
-
应用场景: 传统搜索引擎、学术文献检索、初筛任务。
3. BM25L
-
提出年份: 2010
-
特点: BM25 的变体,优化文档长度归一化,引入非线性长度惩罚,减少对短文档的偏见,适合长文档检索。
-
原理:
- BM25L 修改了 BM25 的长度归一化公式,引入非线性因子(基于文档长度与平均长度的对数差),降低对短文档的过度偏好。得分仍基于 TF、IDF 和优化后的长度归一化。
-
检索示例: 查询“深度学习应用”分解为词“深度”“学习”“应用”,长文档因非线性归一化获得更公平的得分,排名更均衡。
-
优化内容:
- 非线性长度归一化: 减少短文档偏见,适配长文档,因此特别适合处理极短或极长文档。
- 参数调整: 优化 k1 和 b 以平衡 TF 和长度影响。
- 可能的优化方向: 结合语义嵌入;优化大规模长文档的索引效率。
-
优点:
- 适于长文档检索。
- 长度归一化更合理。
- 保留 BM25 的高效性。
-
缺点:
- 仍无语义理解。
- 参数调优复杂。
- 对短查询敏感性稍弱。
-
应用场景: 长文档检索(如学术论文、技术文档)、开放域问答。
4. BM25+
-
提出年份: 2010 (推测,与 BM25L 同期提出)
-
特点: BM25 的扩展,引入下限 TF 因子,避免零分问题,增强对稀有词的鲁棒性,适合稀疏语料。
-
原理:
- BM25+ 在 BM25 基础上为 TF 项添加下限因子(如 δ=1),确保稀有词在短文档中不会被过度惩罚。得分公式仍基于 TF、IDF 和文档长度归一化,但对低频词更友好。
- 𝛿: 常数偏移项:
-
检索示例: 查询“深度学习框架”包含稀有词“框架”,短文档因下限因子获得非零得分,排名更合理。
-
优化内容:
- 下限 TF 因子: 避免稀有词零分,提升鲁棒性。
- 参数优化: 调整 δ 和 k1 以平衡稀有词和常见词。
- 可能的优化方向: 结合语义模型;优化大规模稀疏语料的计算。
-
优点:
- 对稀有词和短文档更鲁棒。
- 简单易实现。
- 适于稀疏语料。
-
缺点:
- 语义理解不足。
- 下限因子可能引入噪声。
- 需调参优化。
-
应用场景: 稀疏语料检索(如专利、法律文档)、开放域问答。
5. BM25-ADPT
- 提出年份: 2016 (推测,基于自适应调参研究)
- 特点: BM25 的自适应变体,通过语料特性动态调整参数(如 k1、b),减少手动调参,适合异构语料。
- 原理:
-
BM25-ADPT 基于 BM25,动态估计参数 k1 和 b(如基于语料的文档长度分布或词频统计)。得分公式与 BM25 一致,但参数自适应提升了跨语料的通用性。
-
k1(t),b(t) 对每个词动态学习得到:
-
- 检索示例: 查询“机器学习算法”在新闻语料中,模型根据短文档特性调整 b 值,排名更贴合语料特性。
- 优化内容:
- 自适应参数: 根据语料特性动态调整 k1 和 b。
- 语料分析: 使用统计方法(如文档长度分布)优化参数。
- 可能的优化方向: 引入机器学习预测参数;结合语义特征。
- 优点:
- 减少手动调参,提升通用性。
- 适于异构语料。
- 保留 BM25 高效性。
- 缺点:
- 自适应算法增加复杂性。
- 仍缺乏语义理解。
- 对极小语料效果有限。
- 应用场景: 异构语料检索(如新闻、社交媒体)、搜索引擎。
6. BM25T
-
提出年份: 2018
-
特点: BM25 的变体,结合词翻译模型为查询词分配权重,增强跨语言和同义词检索能力,适合多语言场景。
-
原理:
- BM25T 在 BM25 基础上引入词翻译模型(如基于统计或神经网络的翻译概率),为查询词分配不同权重,扩展查询的语义范围。得分公式基于加权 TF、IDF 和文档长度归一化。
门控函数:调整频率对匹配得分的影响,使其在频率过高时不失控。
-
检索示例: 查询“深度学习”通过翻译模型扩展为“deep learning”“神经网络”,文档包含扩展词的得分更高,排名更准确。
-
优化内容:
- 词翻译模型: 为查询词分配语义权重,增强同义词匹配。
- 权重调优: 优化翻译概率和 BM25 参数的结合。
- 可能的优化方向: 引入神经翻译模型;优化跨语言语料的计算效率。
-
优点:
- 增强跨语言和同义词检索。
- 适于多语言场景。
- 保留 BM25 的高效性。
-
缺点:
- 依赖翻译模型质量。
- 计算复杂度略增。
- 语义理解仍有限。
-
应用场景: 跨语言检索、多语言问答、搜索引擎。
7. DocT5query
- 提出年份: 2020
- 特点: 基于深度学习的查询生成模型,使用 T5 生成文档的伪查询,增强传统检索(如 BM25)的训练数据,特别适于数据稀缺场景。
- 原理:
- DocT5query 使用 T5(基于 Transformer 的 seq2seq 模型)为每个文档生成多个伪查询,这些伪查询与文档配对,增强训练数据。
- 伪查询可用于传统检索(如 BM25)或密集检索的预处理。
- 训练时,(可选择)微调模型优化生成损失。
- 检索时,伪查询提升文档相关性。
- New Document=Original Text+Generated Queries
- 深度学习检索示例: 以 T5 为例,输入文档“深度学习基础”,编码器生成语义表示,解码器通过多头注意力生成伪查询“深度学习是什么”,伪查询结合 BM25 检索相关文档。
- 优化内容:
- 伪查询生成: 生成高质量伪查询,缓解数据稀缺。
- 结合传统检索: 伪查询增强 BM25 等模型的召回率。
- 可能的优化方向: 提高伪查询多样性;减少生成模型的计算成本。
- 优点:
- 伪查询显著提升召回率。
- 适于数据稀缺和多语言场景。
- 与 BM25 等传统模型无缝结合。
- 缺点:
- 依赖 T5 模型,计算成本高。
- 伪查询质量影响性能。
- 需额外生成步骤。
- 应用场景: 数据增强、开放域问答、多语言检索。
对比表
维度 | BM25 | Okapi BM25 | BM25L | BM25+ | BM25-ADPT | BM25T | DocT5query |
---|---|---|---|---|---|---|---|
提出年份 | 1994 | 1998 | 2010 | 2010 | 2016 | 2018 | 2020 |
特点 | 经典概率检索模型,基于 TF、IDF 和文档长度归一化。 | BM25 的实现版本,优化参数和 IDF 计算,强调实践鲁棒性。 | 优化长度归一化,引入非线性惩罚,适于长文档。 | 引入下限 TF 因子,增强稀有词鲁棒性,适于稀疏语料。 | 自适应参数调整,减少手动调参,适于异构语料。 | 结合词翻译模型,增强跨语言和同义词检索。 | 使用 T5 生成伪查询,增强传统检索的训练数据。 |
原理 | 基于词袋模型,计算查询词的 TF、IDF 和长度归一化得分。 | 优化 BM25 的参数和 IDF 平滑,计算得分。 | 修改长度归一化,引入非线性因子。 | 为 TF 项添加下限因子,避免零分。 | 动态估计 k1 和 b,计算得分。 | 引入词翻译模型加权查询词。 | T5 生成伪查询,增强训练数据。 |
优化内容 | - 参数调优 (k1, b)。 - IDF 优化。 - 可能的优化: 引入语义信息。 | - 默认参数。 - IDF 平滑。 - 可能的优化: 适配领域语料。 | - 非线性长度归一化。 - 参数调整。 - 可能的优化: 结合语义嵌入。 | - 下限 TF 因子。 - 参数优化。 - 可能的优化: 结合语义模型。 | - 自适应参数。 - 语料分析。 - 可能的优化: 机器学习预测参数。 | - 词翻译模型。 - 权重调优。 - 可能的优化: 神经翻译模型。 | - 伪查询生成。 - 结合传统检索。 - 可能的优化: 提高伪查询多样性。 |
优点 | - 计算简单,效率高。 - 短查询鲁棒性强。 - 广泛适用。 | - 参数优化,易部署。 - 中小规模语料稳定。 - 效率高。 | - 适于长文档。 - 长度归一化合理。 - 高效性强。 | - 稀有词鲁棒。 - 简单易实现。 - 适于稀疏语料。 | - 减少调参,通用性强。 - 适于异构语料。 - 高效性强。 | - 增强跨语言检索。 - 适于多语言场景。 - 高效性强。 | - 提升召回率。 - 适于数据稀缺和多语言。 - 结合传统模型。 |
缺点 | - 忽略语义。 - 长文档性能有限。 - 需手动调参。 | - 缺乏语义理解。 - 参数固定不适配所有场景。 - 复杂查询表现一般。 | - 无语义理解。 - 参数调优复杂。 - 短查询敏感性稍弱。 | - 语义理解不足。 - 下限因子可能引入噪声。 - 需调参。 | - 自适应算法复杂。 - 缺乏语义理解。 - 极小语料效果有限。 | - 依赖翻译模型。 - 复杂度略增。 - 语义理解有限。 | - 计算成本高。 - 伪查询质量影响性能。 - 需额外生成步骤。 |
应用场景 | 搜索引擎、文档检索、开放域问答初筛。 | 传统搜索引擎、学术文献检索、初筛任务。 | 长文档检索(学术论文、技术文档)、开放域问答。 | 稀疏语料检索(专利、法律文档)、开放域问答。 | 异构语料检索(新闻、社交媒体)、搜索引擎。 | 跨语言检索、多语言问答、搜索引擎。 | 数据增强、开放域问答、多语言检索。 |