预训练在Sparse retrieval的应用

         Sparse retrieval models主要通过获得更好的文本表示来提升检索效果,比如传统term-based方法中的bag-of-words (BoW)表示或者"latent word"空间的表示。通过这种方式,查询和文档可以通过sparse embeddings表示,即只有少部分维度非0。这种稀疏表示得到了广泛的关注,因为它可以构建倒排索引用于高效的检索。
        随着PTMs的发展,预训练模型被广泛用于提升sparse retrieval模型的容量。我们将这些预训练模型分成四类,包括term re-weighting, document expansion, expansion + re-weighting和sparse representation learning。

1. Term Re-weighting

1.1 DeepCT 

【Introduction】

        在搜索引擎的第一阶段检索过程中,传统的方法通常使用布尔模型,概率模型或者是向量空间的BOW模型,这些模型会基于倒排索引捕捉一些信息。在这些第一阶段检索模型中,一个比较重要的问题是如何衡量查询和文档中的term weight。通常使用query term frequency (tf)来表达context-specific的权重,用inverse document frequency (idf)来表达全局的权重。这些基于frequency的方法取得了一定的成功,但是这种方法比较简单粗暴,没有对于文本语义的理解。当遇到比较短的文档时,term frequency分布比较均匀时,信息量会十分有限,不具备区分度。为了确定某个term是否是一段话所表达的核心含义,不仅仅要看它的词频,更要考虑整段文本的语义,才能判断这个term究竟有多么重要。

        随着contextualized word representation技术的广泛应用(ELMo, BERT),文本语义理解建模能力有显著提升。每个term最终可以得到一个包含整个文本语义以及句法的表示。本文就展示了如何通过这个contextualized word representation来提升第一阶段检索模型。本文提出Deep Contextualized Term Weighting framework (DeepCT),通过有监督的方式训练一个BERT-based模型来学习term的contextualized representation,并且得到一个将representation映射到term weights的函数。DeepCT在不同的语境下,可以给同一个词生成不同的term weights。这样在一些频率均匀分布的文本(短文档或者长query)中,可以帮助生成更有代表性的term weights。

        DeepCT有两个应用场景。其一是识别文档中的重要term用于passage retrieval,在passage长度的文档内使用term-frequency的方式得到的词权重分布较为均匀,文章设计了DeepCT-Index用于离线计算terms的权重并构建索引。训练过程使用DeepCT来预测passage中的每个词是否会出现在相关的查询中,训练完成后的模型用于文档集的所有文档上,整个过程与查询无关。经过DeepCT-Index计算得到的词权重被存入倒排索引中供第一阶段检索模型使用。另一个场景用于识别长query中代表性的term。对于一些包含很多term或者概念的查询,需要判断哪些是最核心的。本文提出DeepCT-Query,通过query-doc pair的相关性标注训练一个DeepCT,通过预测query中每个词在文档中被提及的概率,来生成词权重。这些query词权重可以用于一些诸如BM25和query likelihood的检索模型。实验表明了DeepCT可以生成查询和文档内词的高质量表示,最核心的贡献在于,DeepCT帮助搜索引擎更多地根据词意来确定词的重要度,而非频率。

【Model Structure】

        DeepCT的模型包括generating contextualized word embedding和predicting term weights两个组件。其中生成词表示的部分使用的就是BERT,预测词权重就是一个简单的线性层,将词的表示通过线性映射加偏置得到一个权重分数。训练过程相当于在每个词上都是一个回归任务,将预测的权重分数与groud-truth权重分数计算MSE损失函数。BERT使用训练好的参数来初始化,之后使用上述训练任务做fine-tune。DeepCT是一个学习词权重的通用框架,根据不同的任务可以设置不同的ground-true词权重计算方式,从而训练不同的目标。下面介绍的DeepCT-Index和DeepCT-Query就是两个不同的应用场景。

        DeepCT-Index用于计算document中词权重,Target term weights (即训练DeepCT用的ground truth)的计算方式为:

 分母是与文档d相关的query集合大小,分子是集合中包含词t的子集大小。QTR(query term recall)的取值范围为[0,1],该值越大,说明词t在用户进行检索行为时最能代表该文档,最有可能与查询词匹配成功。训练完成之后,可以用训练好的模型来构建索引,文中采用的方式是将DeepIndex预测的词频放大100倍四舍五入得到一个整数,替代之前用词频表示的词权重。

        DeepCT-Query模型用于给query词预测权重,Target term weights的计算方式为:

分母是与查询相关的文档集大小,分子是D_q中包含词t的子集大小。TR(term recall)表示查询词的重要程度,TR越高,说明该词更可能出现在相关文档中。训练阶段同样使用相关的q-d pair,预测的时候只需要query不需要文档。

1.2 HDCT

        原理同DeepCT一致,差别在于要获取document-level term weight,因此需要将passage-level的contextualized term weights组合获取document-level的词权重。另外,fine-tune BERT需要词权重标注,文中提出了三种自动计算目标词权重的策略。

        首先对于给定的文档,将其分成若干长度为300左右的passage。随后对每个passage,采用和DeepCT一样的结构,得到预测的target t

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值