Context-Aware Sentence/Passage Term Importance Estimation For First Stage Retrieval
发布时间(2019)
上下文感知
词汇重要性评估
第一阶段检索的上下文感知 句子/段落 术语重要性估计
摘要
1)将密集上下文表示 --》上下文感知的 term 权重
2)权重用途
a)passage:倒排索引存储 term 权重用来检索
b)query:加权的 bow
词频是识别查询或文档中术语重要性的常用方法。但它是一种微弱的信号,尤其是当频率分布平坦时,例如在长查询或文本为句子/段落长度的短文档中。本文提出了一种深度语境化术语权重框架,该框架学习将 BERT 的语境化文本表示映射到句子和段落的上下文感知术语权重。 当应用于段落时,DeepCT-Index 会生成可存储在普通倒排索引中以供段落检索的术语权重。 当应用于查询文本时,DeepCT-Query 会生成加权词袋查询。这两种类型的术语权重都可以由典型的第一阶段检索算法直接使用。这是新颖的,因为大多数基于深度神经网络的排名模型具有更高的计算成本,因此仅限于后期排名器。 在四个数据集上的实验表明,DeepCT 的深度语境化文本理解极大地提高了第一阶段检索算法的准确性。
1 引言
监督学习,学到两个东西:
1)上下文的词表示
2)映射函数:词表示--》术语权重
因为词表示因上下文而异,所以术语权重也会因为上下文不同而不同
用途:
1)段落检索所需的必要段落术语
该过程离线完成:基于上下文的段落 term 权重被缩放为 tf 类整数,这些整数存储在普通倒排索引中
2)长查询中的重要查询词
使用来自相关查询-文档对的信号训练 DeepCT,根据查询术语被相关文档提及的可能性对其进行加权。预测结果用于生成加权查询
2 相关工作
两种类型的工作是相关的:术语加权和早期排名的神经方法。
词权重。词袋检索模型(例如 BM25 [26] 和查询似然法 [17])因其效率和效果而成为现代搜索引擎的基础。大多数检索模型使用基于频率的信号(例如 astf、ctf 和 df)来估计每个词对文本(查询、文档)的表示程度。大量研究文献研究了如何更好地估计词的重要性(例如 [2、3、5、18、27、36]),但基于频率的信号在行业和学术界仍然占主导地位。
对于文档术语加权,最广泛使用的基于频率的模型替代方案是基于图的方法 [5, 18, 27]。 基于图的方法构建文档图,其中节点表示术语,边表示最大距离内的术语共现。术语通过 PageRank 等图排名算法进行排名,并将分数编入索引以供检索 [5, 27]。
最近,一些神经 IR 方法研究了来自词嵌入的文档术语权重 [10],因为词嵌入能够对词义的某些方面进行编码,而这些方面对于确定单词的重要性很有用。它们将术语门控子网络添加到神经重排序器中,从词嵌入中学习全局 idf 类术语权重。目前尚不清楚它们是否可以改进初始排序阶段
对于查询词加权,有一条研究路线专注于基于特征的方法 [2–4]。它们需要针对文档集合运行查询以生成特征。与基于频率的查询词加权相比,这些方法提高了搜索准确率,但使用伪相关反馈会导致额外的计算成本。为了仅从文本内容预测查询词权重,Zheng 和 Callan [36] 提出了一种基于词嵌入的方法,称为 DeepTR。DeepTR 使用术语的 word2vec [19] 嵌入和平均查询嵌入之间的差异为每个查询词构建一个特征向量。然后,它学习一个回归模型,将特征向量映射到术语的地面真实权重(术语召回权重 [35])。估计的权重用于生成可在第一阶段检索中搜索的词袋查询。后来,Guo 等人 [13] 在神经重排器中使用了类似的基于词嵌入的查询词加权方法
如上所述,在文档和查询术语加权问题中,词嵌入由于其能够对文本含义的某些方面进行编码而受到越来越多的关注 [10, 13, 36]。 然而,基于词嵌入的方法在捕获上下文时面临一个关键问题,因为经典的词嵌入与上下文无关——无论文本上下文如何,单词的嵌入始终相同。最近,提出了语境化的神经语言模型来对语言上下文进行建模 [11, 25]。在语境化的神经语言模型中,单词的表示是整个文本输入的函数。这些表示被证明可以捕获文本内容中单词的某些句法特征和语义特征 [32]。目前,表现最好的神经语言模型是 BERT [11]。BERT 在 IR 方面受到了广泛关注,主要集中在将其用作黑盒重排模型来预测查询文档相关性分数 [8, 22]。这项工作试图利用 BERT 的优势来明确模拟查询/文档术语的重要性,以实现高效的第一阶段检索。
早期排名的神经方法。大多数神经排名模型使用连续表示,使查询能够在一定程度上匹配每个文档,这使得它们对于第一阶段排名器来说不切实际。最近的研究以两种方式解决了这个效率问题,均使用潜在表示。一种方法是学习查询和文档的低维密集嵌入,支持使用嵌入空间中的近似最近邻搜索进行快速检索 [1],但这存在效率与准确性之间的权衡 [6]。第二种方法是学习高维但稀疏的潜在表示,其中查询和文档由一组“潜在词”表示 [28, 34]。
稀疏的“潜在词”允许倒排索引样式的查找,这种查找方式很高效,但也引入了所有受控词汇表中都存在的特异性与详尽性之间的权衡 [29]。 最近,Nogueira 等人 [23] 提出了 Doc2Query,它使用神经模型来修改基于单词的离散文档表示。它使用神经机器翻译从文档中生成潜在查询,并将这些查询作为文档扩展术语进行索引。我们不知道其他第一阶段神经模型使用现代搜索引擎所依赖的基于单词的离散文本表示和大型词汇表。
3 深度语境化文档和查询词加权
DeepCT用于passage:
1)损失:目标权重和实际权重(token的嵌入经过线性层得到)之间的均方差损失。
2)如何衡量目标权重:query term recall = (包含 toekn-t 的 query 集合)/(与某个 passage 相关的 query 集合)
假设:出现在查询中的词比文档中其他词更重要
3)流程:训练 --- 推理 --- 推理结果*100建立 term 的索引 --- 主要是使用新的 TF-deepct 替换原有 index 的 TF
DeepCT用于query:
1)query term 加权
2)如何衡量目标权重:term recall = (包含 toekn-t 的 passage 集合)/(与某个 query 相关的 passage 集合)
假设:如果一个查询术语被更多相关文档提及,那么它就更重要
3)流程:训练 --- 推理 --- BOW-query / SDM-query
本节介绍深度语境化词加权框架(DeepCT),以及如何使用它来加权查询词(DeepCT-Query)和索引文档(DeepCT-Index)。
3.1 DeepCT框架
DeepCT 包括两个主要部分:通过 BERT 生成上下文词嵌入,以及通过线性回归预测术语权重。
语境化词向量生成。要估计某个单词在特定文本中的重要性,最关键的问题是生成表征单词与文本上下文关系的特征。最近的语境化神经语言模型(如 ELMo [25] 和 BERT [11])已被证明可以通过深度神经网络捕捉此类属性。DeepCT 利用性能最佳的模型之一 BERT 来提取单词的上下文特征。BERT 使用注意力机制,其中一个单词会根据其对同一文本中其他每个单词的注意力逐渐吸收上下文信息。Devlin 等人 [11] 提供了更多细节。
映射到目标权重。上下文化的词向量是一个特征向量,它表征单词在给定上下文中的句法和语义角色。DeepCT 将特征线性组合成单词重要性分数:
损失:目标权重和实际权重(token的嵌入经过线性层得到)之间的均方差损失。
BERT 的标记化步骤会为未见过的单词生成子词(例如,“DeepCT”被标记成“deep”和“##ct”)。我们使用第一个子词的权重作为整个单词的权重;在计算 MSE 损失时,其他子词会被屏蔽掉。
DeepCT 模型从 BERT 到回归层都进行了端到端优化。BERT 组件使用预训练的 BERT 模型进行初始化,以减少过度拟合。它经过微调,以使上下文化的词向量与术语预测任务保持一致。 最后的回归层是从头开始学习的。 DeepCT 是一个通用框架,可以根据语言上下文学习术语权重。DeepCT 可以根据定义基本事实术语权重的方式学习术语重要性的不同定义。预测的术语权重也可以根据任务以不同的方式使用。下面,我们描述了两种使用 DeepCT 框架来改进第一阶段检索的方法。
3.2 使用 DeepCT 索引段落
DeepCT 的一个新用途是识别对段落或段落长文档的含义至关重要的术语,以便高效且有效地检索段落/短文档。在本文中,我们将段落检索中的段落和短文档检索中的段落长文档都称为“段落”。
如表 1 中的“胃”示例所示,经典的词频信号无法判断文本是以某个术语为中心,还是在讨论其他主题时仅提及该术语。 这个问题在第一阶段的全集排名中尤其困难,因为复杂的特征和模型应用起来成本太高。 DeepCT-Index 使用 DeepCT 来加权段落术语,并将权重存储在典型的倒排索引中。
用于训练 DeepCT 的目标术语权重。适当的目标术语权重应反映术语对段落是否必不可少。我们提出查询术语召回率作为对基本事实段落术语重要性的估计:
Qd 是判断段落 d 相关的查询集。 Qd,t 是包含术语 t 的 Qd 子集,QT R(t,d) 是 d 中 t 的查询术语召回权重。QT R 的范围为 [0, 1]。 查询术语召回基于搜索查询可以反映文档关键思想的假设。出现在相关查询中的单词比文档中的其他单词更重要。 训练需要相关的查询-段落对。该模型获取段落的文本内容,进行预测,并使用从其相关查询生成的目标权重计算损失。 在推理过程中,模型只需要段落。
Qd 是段落 d 被判定为相关的查询集。 Qd,t 是包含术语 t 的 Qd 子集,QT R(t,d) 是 d 中 t 的查询术语召回权重。QT R 的范围为 [0, 1]。 查询术语召回基于搜索查询可以反映文档的关键思想的假设。出现在相关查询中的单词比文档中的其他单词更重要。
训练需要相关的查询-段落对。该模型获取段落的文本内容,进行预测,并使用从其相关查询生成的目标权重计算损失。 在推理过程中,模型只需要段落
使用预测的术语权重进行索引。一旦 DeepCT 学习了模型参数,它就可以对任何段落进行估算,而无需查询。这允许在离线索引期间计算和存储估计的术语权重。在线服务可以有效地搜索索引。 我们将训练好的 DeepCT 模型应用于集合中的所有段落。预测的权重从 [0…1] 范围缩放到可以与现有检索模型一起使用的整数范围。我们将这个权重称为 TFDeepCT,以表示它是表示段落 d 中术语 t 重要性的另一种方式:
用TFDeepCT替代倒排索引中原有的TF字段,词条t的倒排由[docid(d),TF(t,d)]变为[docid(d),TFDeepCT(t,d)]。新索引DeepCT-Index可由主流的词袋检索模型(如BM25)或查询似然模型(QL)进行搜索。基于上下文的词权重TFDeepCT有望使检索模型偏向段落中的中心词,避免检索到偏离主题的段落。
3.3 使用 DeepCT 进行查询词加权
DeepCT 在 IR 中的另一种直接用途是加权长查询中的查询词。对于提及许多术语和概念的长查询,确定哪些是中心非常重要。例如,给定查询“查找在美国及其领土的当前边界内发生的火山活动位置”,理想的系统会理解“火山活动”是关键概念,而“美国边界”在某些语料库中可能不是必需的。Zheng 和 Callan [36] 提出了一种基于 word2vec 的查询词重新加权框架,称为 DeepTR,它可以有效地重新加权词袋查询。我们遵循 DeepTR 框架,但用 DeepCT 替换了基于 word2vec 的模型。我们将提出的方法称为 DeepCT-Query
使用预测的术语权重重新加权查询。当收到查询时(在线),训练后的模型用于预测每个术语的重要性权重。按照 DeepTR [36],我们使用估计的查询术语权重来生成词袋查询 (BOW) 和顺序依赖模型查询 (SDM)。例如,在 Indri [31] 查询语言中,原始 BOW 查询“apple pie”被重新表述为 #weight(0.8 apple 0.7 pie)3,预测权重为 apple:0.8, pie:0.7。顺序依赖模型将窗口内的二元词组和单词共现添加到查询中。我们使用重新加权的 BOW 查询来替换 SDM 查询的词袋部分
4 DeepCT-Index 的实验方法
本节介绍第二项任务的实验方法——段落术语加权和索引。
数据集:BERT 的当前实现支持最多 512 个标记的文本,因此我们选择了两个主要由段落组成的集合:MS MARCO [21] 和 TREC-CAR [12]。 段落和短文档也是按词频加权效果较差的情况,因为 tf 分布趋于平坦。实验设置主要遵循以前的神经段落排名/重新排名研究中使用的方法 [22, 23]
MS MARCO [21] 是一个问题转段落检索数据集,包含 8.8M 段落。平均段落长度约为 55 个单词。训练集包含大约 0.5M 对查询和相关段落。平均每个查询都有一个相关段落。 开发 (dev) 集包含 6,980 个查询及其相关性标签。测试集包含 6,900 个查询,但相关性标签被 Microsoft 隐藏。因此,开发集是我们的主要评估集。在一些实验中,我们还通过将我们的排名提交给 MS MARCO 竞赛来对测试集进行评估。
TREC-CAR [12] 包含 29.7M 篇英文维基百科段落,平均长度为 61 个单词。查询和相关段落是合成生成的。查询是维基百科文章标题与其某个章节标题的连接。 根据先前的研究 [22, 23],我们使用自动相关性判断,将章节内的段落视为与查询相关。训练集和验证集分别有 3.3M 个查询-段落对和 0.8M 个对。测试查询集包含 1,860 个查询,平均每个查询有 2.5 个相关段落。
基线:实验采用三种基线和三种实验索引方法进行,如下所述
索引、检索和评估:第一阶段排名由两种流行的检索模型完成:BM25 和带有 Jelinek-Mercer 平滑 (QL) 的查询可能性。我们使用了 Anserini 工具包实现。我们通过对来自训练集的 500 个查询进行参数扫描,对 BM25 参数 k1 和 b 以及 QL 平滑因子 λ 进行了微调。重新排名由两个重新排名器完成:Conv-KNRM [9] 和 BERT 重新排名器 [22]。我们使用了作者提供的经过训练的重新排名器,并将它们应用于从第一阶段排名中重新排名多达 1000 个段落。 排名/重新排名结果通过 10 个段落的平均倒数排名 (MRR@10) 进行评估,这是 MS MARCO 的官方评估指标。对于 TREC-CAR,我们还按照以前的研究中使用的评估方法报告了深度 1,000 的 MAP [22, 23]。
DeepCT 设置:DeepCT-Index 的 BERT 部分使用预训练参数初始化。对于 MS MARCO,我们使用了官方预训练的 BERT(无大小写,基础模型)[11]。TREC-CAR 无法使用官方模型,因为其测试文档与 BERT 的预训练文档重叠。我们使用了 Nogueira 和 Cho [22] 的 BERT 模型,其中重叠文档已从预训练数据中删除。初始化后,DeepCT 在我们的数据集的训练分割上训练 3 个 epoch,使用 2e −5 的学习率和 128 个 token 的最大输入文本长度。
5 DeepCT-Index 的实验结果
接下来的两小节描述了使用 DeepCT-Index 索引研究第一阶段搜索准确性的实验,以及 DeepCTIndex 术语权重有效的原因。
5.1 DeepCT-Index 检索准确率
本节将研究 DeepCT-Index 是否比基线词加权方法提高了第一阶段检索准确率。然后将 DeepCT-Index 的第一阶段检索准确率与几个单阶段/多阶段竞争搜索系统进行比较。最后,研究使用 DeepCT-Index 的第一阶段排序器对多阶段搜索系统端到端准确率的影响。
DeepCT-Index 检索性能
表 2 显示了 BM25 和 QL 使用六种方法生成的索引的第一阶段检索准确率。TextRank 索引未能击败常见的 tf 索引。Doc2Query 索引对 MS MARCO 有效,但对 TREC-CAR 仅略胜一筹
DeepCT-Index 的表现远超基线。它在 MS MARCO 上将 BM25 提高了 27%,在 TREC-CAR 上提高了 46%。 它在 QL 上也取得了类似的进步,表明 DeepCT-Index 对不同的检索模型都很有用。胜负分析显示,DeepCT-Index 改进了 25-35% 的查询,并降低了 8-16%。
DeepCT-Index 也大幅超越了神经基线 Doc2Query。DeepCT-Index 和 Doc2Query 使用相同的数据进行训练,证明了 DeepCT-Index 的显式术语加权优于 Doc2Query 通过段落扩展进行的隐式术语加权。
DeepCTW-Index 和 DeepCTE-Index 的结果证明了上下文的重要性。非上下文 word2vec 嵌入产生的术语权重不如 tf 有效。ELMo 产生了更有效的术语权重,但 BERT 对上下文的更强利用产生了最有效的权重。这些结果还展示了 DeepCT 框架的通用性。
使用 DeepCT-Index 进行第一阶段搜索与重新排名
我们通过参加 MS MARCO 竞赛,进一步将基于 DeepCT-Index 的 BM25 检索与多个竞赛系统进行了比较。表 3 显示了 MS MARCO 排行榜6 的结果。它首先列出了 2 个重要的第一阶段排序器:官方标准 BM25 和 Doc2Query BM25 [23]。DeepCT-Index BM25 的表现优于两者。 表 3 还列出了基于特征的学习排序、之前最先进的神经重排序器(非集成版本)和基于 BERT 的重排序器的代表性重排序方法。FastText+ConvKNRM [14] 是排行榜上最好的非 BERT 模型。BERT Re-Ranker [22] 使用 BERT 作为黑盒模型,它接受查询段落对并输出相关性分数;BERT 系列中最近提出的大多数重排序器 [8, 22] 都是基于这种方法的。 所有多阶段系统均使用官方 BM25 进行第一阶段排名,并应用重新排名器对前 1000 篇文章的排名进行微调。
DeepCT-Index BM25 优于几种重新排序流程。 它比基于特征的学习排序更准确,后者是现代搜索引擎中广泛使用的重新排序方法。它也比流行的神经重新排序模型 K-NRM [33] 更准确。与 Duet V2(官方重新排序基线)和 Conv-KNRM [9] 相比,DeepCT-Index BM25 实现了类似的准确度,同时效率更高,因为它不需要重新排序阶段。这些结果表明,可以使用 DeepCT-Index 用单阶段检索取代一些流水线排名系统。
最后,像 BERT Re-Ranker 这样的强神经重排器比 DeepCT-Index BM25 更有效。这些模型在查询和段落词之间生成高质量的软匹配信号(例如“hotel”到“motel”)。相比之下,DeepCT-Index BM25 仅精确匹配术语,提供的证据要少得多
DeepCT-Index 作为重新排序系统的第一阶段
下一个实验检查 DeepCT-Index BM25 产生的第一阶段排名是否可以改善后期重新排序器。表 4 报告了应用于从 DeepCT-Index 和 tf 索引检索到的候选段落的两个重新排序器的性能。重新排序器是根据它们在 MSMARCO 排行榜上的表现选择的(表 4):Conv-KNRM [9],具有中等准确度,BERT Re-Ranker [22],具有高精度。我们测试了各种重新排序深度。在较浅的深度上进行重新排序效率更高,但可能会错过更多相关段落。
总结
关于段落术语权重的先前研究很多,但如何有效地对特定段落中的单词语法和语义进行建模尚不清楚。我们的结果表明,深度、情境化的神经语言模型能够捕捉到一些所需的属性,并可用于为段落索引生成有效的术语权重。DeepCT-Index 上的 BM25 检索比基于 tf 的传统索引准确率高 25%,并且比一些广泛使用的多阶段检索系统更准确。改进的第一阶段排名进一步提高了下游重新排名器的有效性和效率。
5.2 理解有效性的来源
本节旨在通过几项分析来了解 DeepCT-Index 有效性的来源。 表 5 可视化了几个案例中的 DeepCT-Index 权重。每个案例都有一个查询、一个相关段落和一个提到查询概念但实际上与主题无关的非相关段落。热图可视化了 DeepCT-Index 中的术语权重。权重由段落中所有术语权重的总和归一化,以反映段落中术语的相对重要性。
强调中心词,抑制非中心词
DeepCT 能够识别与文本主题相关的术语。在表 5 中的第一个查询中,两个段落都提到了“susan boyle”。在相关段落中,DeepCT-Index 识别出主题是“susan boyle”,并将几乎所有权重都放在这两个术语上。 离题段落是关于“troll”的定义,而“susan boyle”用于示例中。DeepCT-Index 成功识别出中心概念“troll”,并抑制其他非主题术语;不到 10% 的权重归于“susan boyle”。使用新的权重后,查询和离题段落之间的 BM25 分数大大降低。在表 5 中的其他案例中也可以看到类似的行为。
图 1 比较了 DeepCT-Index 和 tf index 的词权重分布。它绘制了每个段落中权重最高的词的平均权重、权重第二高的词的平均权重等等。原始的 tf 分布是平坦的。DeepCT-Index 为一些中心词分配了高权重,导致词权重分布出现偏差。这种偏差的分布证实了我们从案例研究中观察到的现象,即 DeepCT-Index 极力强调一些中心词,而抑制其他词。
DeepCT 对中心词的强烈偏向解释了它的有效性:提升主题词并抑制非主题词。这也是错误的来源。在许多失败的案例中,DeepCT-Index 正确地识别了中心段落词,但查询的答案在段落的非中心部分中被提及。DeepCT-Index 降低了这些部分的权重甚至忽略了这些部分,导致相关段落的排名较低。如何降低丢失有用但非中心信息的风险值得探索。
基于上下文的权重 vs 基于频率的权重
表 5 中的示例还表明,DeepCT-Index 生成的术语权重基于上下文含义而非频率。即使术语出现频率很高,其权重也可能很低(例如,在“基因组学”的最后一段中,“DNA”被认为不重要,尽管它被提及了 3 次)。即使 tf 相同,同一术语在不同段落中的权重也会大不相同。这种独立于频率信号的程度在以前的术语加权方法中并不常见;据报道,即使是 Word2Vec [19] 和 Glove [24] 等语义文本表示也与术语频率具有高度相关性 [30]。
6 DeepCT-Query 的实验方法和结果
本节介绍查询词加权任务的实验方法和结果。该方法遵循[36]中使用的设置。
数据集:我们使用了 Robust04 和 Gov2 TREC 集合。 Robust04 是一个新闻语料库,包含 0.5M 份文档和 249 个测试主题。 Gov2 是一个网络集合,包含 25M 份网页和 150 个测试主题。 每个测试主题有 3 种类型的查询:短标题查询、句子长查询描述和段落长查询叙述。
基线:实验使用了 6 个基线,它们使用了两种形式的查询结构(BOW、SDM)和三种类型的术语权重(tf、DeepTR、Oracle)。BOW 和 SDM 代表词袋查询和顺序依赖查询 [17]。tf 是经典的查询术语频率权重。DeepTR 是之前最先进的查询加权方法 [36]。它使用单词自身嵌入和查询的平均嵌入之间的差异来提取单词特征。这些特征被线性组合以产生术语权重。DeepTR 在术语召回率上进行监督训练(等式 3)。Oracle 根据基本事实术语召回率权重对查询术语进行加权;它反映了 DeepTR 和 DeepCT-Query 在做出完美预测的情况下可以实现多少,从而估计了上限。
索引、检索和评估:按照郑和卡兰[36]的做法,我们使用了 Indri 搜索引擎7,并进行了标准词干提取和停用词过滤。我们使用 5 倍交叉验证训练和评估 DeepCT-Query 和 DeepTR。郑和卡兰[36] 表示查询似然 (QL) 模型的表现略优于 BM25,因此我们使用 QL 来搜索索引。使用标准 TREC 指标评估检索结果:NDCG@20 和 MAP@1000。
DeepCT 设置:DeepCT 的 BERT 部分使用官方预训练的 BERT(无大小写,基础模型)[11] 进行初始化。DeepCT(包括 BERT 层和最后的回归层)进行了端到端微调。该模型训练了 10 个 epoch。我们使用的学习率为 2e −5 。查询标题、描述和叙述的最大输入文本长度分别为 30、50 和 100 个标记。
结果。结果列于表 6 中。短标题查询未从术语加权方法中受益。标题查询通常由几个必不可少的关键字组成,因此重新加权不太重要。此外,DeepCT 没有太多上下文来利用来估计术语重要性。查询的外部信息(例如伪相关反馈 [16])可能是理解短查询所必需的。
描述和叙述查询提到了许多术语和概念;在检索过程中,确定哪些是核心非常重要。加权查询比非加权查询更有效。在大多数情况下,DeepCT-Query 比 DeepTR 更准确。 DeepCT-Query 与 DeepTR 的不同之处在于它们如何根据上下文表示术语。结果表明,DeepCT-Query 更好地反映了单词在查询中的作用。叙述查询的改进比描述查询更大。结果表明,对于短句,简单的上下文建模可能有效。但对于更复杂的查询,像 BERT 这样的深度语言建模组件可以带来更好的搜索结果。
7 结论
最近,许多研究都集中在多阶段搜索引擎的后期阶段。大多数第一阶段排名器都是使用词频信号的较旧但高效的词袋检索模型。然而,基于频率的词权重不一定能反映词在查询和文档中的重要性,尤其是当频率分布平坦时,例如在句子长度的查询或段落长度的文档中。更准确的词重要性估计需要系统了解每个词在每个特定上下文中扮演的角色。本文介绍了 DeepCT,这是一种新颖的上下文感知词权重方法,可以更好地估计第一阶段词袋检索系统的词重要性。
DeepCT 框架建立在 BERT [11] 的基础上,BERT 是一种最新的深度神经语言模型。在 BERT 中,单词的嵌入会逐渐“吸收”输入文本中其他相关单词的信息,并生成一个新的单词嵌入,该嵌入在特定上下文中表征该单词。DeepCT 使用 BERT 提取基于上下文的术语特征,并学习使用这些特征来预测每个术语在监督的每个标记回归任务中的重要性。训练信号是从基于相关性的查询文档对中挖掘出来的,因此预测的术语权重与检索任务保持一致。
DeepCT 的一个用途是 DeepCT-Index,它对文档术语进行加权。DeepCT 生成整数术语权重,这些权重可以存储在典型的倒排索引中,并与流行的第一阶段检索模型(如 BM25 和查询可能性)兼容。DeepCT 的另一个用途是 DeepCT-Query,它对查询术语进行加权。实验结果表明,DeepCT-Query 极大地提高了较长查询的准确率,因为它能够在复杂的上下文中识别中心查询术语。
实验结果表明,DeepCT-Index 将两种流行的第一阶段检索算法的准确率提高了 50%。 在 DeepCT-Index 上运行 BM25 的效果可以与之前几种使用知识库、机器学习和大量训练数据的最先进的多阶段搜索系统相媲美。 DeepCT-Index 实现的更高质量的排名改善了后期重新排名器的准确率/效率权衡。最先进的基于 BERT 的重新排名器在候选文档数量减少 5 倍的情况下实现了类似的准确率,这使得这种计算密集型重新排名器在延迟/资源敏感型系统中更加实用。 尽管在开发更好的 IR 神经排名模型方面已经取得了很大进展,但计算复杂性通常会将这些模型限制在重新排名阶段。DeepCT 成功地将文本理解能力从深度神经网络转移到简单信号中,这些信号可以被早期排名系统有效利用并提高其性能。 分析表明,DeepCT 相较于传统词加权方法的主要优势在于:DeepCT 可以找到文本中最核心的词,即使这些词只被提及一次。非中心词即使在文本中被频繁提及,也会被抑制。这种行为在以前的词加权方法中并不常见。我们认为 DeepCT 是从“频率”到“含义”的令人鼓舞的一步。