一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种建模历史相邻查询变化的会话式检索方法与流程

2022-02-22 18:28:27 来源:中国专利 TAG:


1.本发明涉及网络搜索技术领域,尤其涉及一种建模历史相邻查询变化的会话式检索方法。


背景技术:

2.现有一些基于会话的检索模型,有些模型是分别考虑会话内的每一个查询,随后将每个查询的结果综合到一起。此外,越来越多的模型考虑历史查询序列中蕴含着重要的信息,用户在提出新的查询时往往会体现他的查询意图。因而一些模型尝试建模词级别的查询变化来提升会话式检索效果。随着深度模型的广泛应用,一些模型尝试建模语义级别的查询变化。这些模型有些是通过显式地构建一个查询变化的分布式表示,然后将该表示与候选文档进行匹配,还有一些是通过序列建模的方式来描述查询变化的过程,最终形成一个隐含的用户意图表示,再将该表示与候选文档进行交互。
3.现有的通过建模查询变化提升会话式检索效果的模型都仅仅考虑当前查询与历史查询之间的变化关系,而忽略了历史相邻查询之间的变化关系。这会导致部分蕴含在历史查询变化过程中的用户偏好信息被遗漏。


技术实现要素:

4.为此,本发明首先提出一种建模历史相邻查询变化的会话式检索方法,方法通过四个模块:词权重计算模块、基于表示的匹配模块、词级别的交互模块、文档分数计算模块构成,所述词权重计算模块建模历史相邻查询的变化关系,计算出三种词权重,并利用这三种词权重进行查询变化分类,将所述词权重计算模块的结果用于基于表示的匹配模块,从而将候选文档与会话上下文进行基于表示的匹配,同时词权重也用于词级别的交互模块,用于进行词级别的细粒度交互,分别得到基于表示的匹配与细粒度交互分数,随后通过所述文档分数计算模块的一个全连接层,计算文档分数用于搜索引擎的文档排序,最后使用多任务学习的策略同时对候选文档排序任务与查询变化分类任务进行训练。
5.所述词权重计算模块的具体实现方式为:对于每个查询或者文档中的词,通过transformers计算每个词包含上下文的语义表示:
[0006][0007][0008]
其中eq和ed分别是查询和文档中词的初始词向量,通过fasttext训练得到,e
p
是位置编码,trm是transformers模型,
[0009]
对于两个相邻的历史查询q
i-1
和qi,利用查询变化建模单元通过三种词权重来衡量它们之间的变化关系,分别是q
i-1
中每个词的移除权重qi中每个词的添加权重和保留权重所述查询变化建模单元输入除了前一个查询和后一个查询之外,还包括前
一个查询对应的用户满意点击文档,即基于这三种不同类型的词权重,可以获得对应的三种查询表示,分别是以及这三种查询表示以及两个查询对应的原始词向量表示作为输入,通过查询变化分类器来预测这一对相邻查询对应的变化类型:
[0010][0011]
所述基于表示的匹配模块在获取了三种词权重之后,首先使用一种基于表示的匹配方法,来衡量候选文档与会话上下文之间的关联程度,在三种词权重获取三种查询表示的方法的基础上,额外引入原始词向量表示获取的查询表示对于以上四种查询表示,分别使用transformer对整个查询进行建模,具体地:
[0012]
通过transformer将每个查询的表示之间互相交互,选择最后一个查询对应的表示作为整个查询序列的语义表示,类似地可以获取其他三种类型的表示
[0013][0014][0015][0016]
将这四个表示拼接在一起,通过一个全连接层,即可获取整个会话的语义表示将该表示与候选文档的表示计算相似度即可得到基于表示的匹配得分s
rep

[0017]
所述词级别的交互模块设计一个attentive kernel pooling,利用三种词权重来提取三种类型的交互特征:类似地,可以通过另外两种词权重获取另外两种交互特征和
[0018][0019][0020]
并使用普通的kernel pooling获取不加权重的交互特征
[0021]
将这四类匹配特征分别通过全连接层获得四类交互分数:
[0022][0023][0024]
通过注意力机制来计算每一个历史查询的权重,该权重需要根据历史查询与当前查询之间的关联程度来计算,以其中一类权重为例:
[0025]
[0026]
其中d为隐含层相向量的维度。用作为每个查询的权重,将每个查询得到的交互分数加权求和,得到一个综合的交互分数采用类似的方式,可以得到另外三种综合交互分数s
ad
,s
rt
,so:
[0027][0028]
所述文档分数计算模块综合之前得到的五个分数s
rep
,s
rm
,s
ad
,s
rt
,so,以及两个额外的分数s
ad
和sf,将这些分数拼接在一起通过一个全连接层即得到最后的文档得分,其中s
ad
是通过knrm模型计算得到的当前查询与候选文档的匹配得分,sf是通过相关的统计特征经过全连接层得到的分数。
[0029]
所述查询变化建模单元对于连续的两个查询qi和q
i-1
,计算三种词权重来描述这两个查询之间的变化关系,具体地,
[0030]
首先计算qi中词的保留权重,将q
i-1
中的词和d
i-1
中的词的表示连接成一个整体的序列随后计算查询qi中的每个词相比于序列h中每个词的注意力权重:
[0031][0032]
随后对这个权重进行标准化即得到词的保留权重
[0033]
在计算qi中词的添加权重时,与保留权重的计算方式相同,同样计算得到每个词的注意力权重
[0034][0035]
但是由于添加的词和之前的词相似度低,所以在标准化之前需要加一个负号:
[0036]
计算q
i-1
中词的移除权重时,只需要考虑q
i-1
与qi的区别,所以再计算q
i-1
中每个词的注意力权重时只需要考虑与qi中词的关联:
[0037][0038]
随后标准化的方式与添加权重的方式相同,得到词的移除权重:随后标准化的方式与添加权重的方式相同,得到词的移除权重:
[0039]
所述查询变化分类器将查询变化分成四类:generalization,exploitatio n,exploration和new task,其中generalization表示后一个查询比前一个查询更泛化,exploitation表示后一个查询比前一个查询更具体,exploratio n表示后一个查询探讨和前一个查询一样的话题,但是属于不同的子话题,new task表示后一个查询与前一个查询探讨完全不同的话题,通过比对后一个查询与前一个查询移除,添加和保留的部分信息,即可对查询变化进行分类;将前一个查询的移除表示与原始表示作对比得到移除信息表示
类似地,将后一个查询的添加和保留表示与原始表示作对比,得到将这三个表示拼接在一起,通过一个全连接层,得到预测的四个变化类别的概率分布。
[0040]
所述attentive kernel pooling模块具体为:计算得到一个查询与文档词的相似度矩阵m之后,通过k个核从m上提取匹配特征f={k1(m),

,kk(m)}:
[0041][0042]
其中μk和σk是核池化的参数,β
i,k
表示查询中第i个词在第k个核对应的权重,其计算方式如下:整个过程被记作f=attentive_kernel_pooling(q,d,w)。
[0043]
所述候选文档排序模型训练过程采用pairwise的方式,损失函数的设计如下:
[0044][0045]
其中r(d|q)是对r(d|q,s)的简写,s包含训练集中所有的会话,包含查询q对应的所有的点击与未点击的文档,其中d

表示点击的文档,d-表示未点击的文档;所述在查询变化分类任务使用多分类问题中常用的交叉熵损失函数:
[0046][0047]
两个任务的损失函数通过加权和的方式得到一个总体的损失函数。
[0048]
本发明所要实现的技术效果在于:
[0049]
设计了一个通过建模历史查询变化来提升会话式检索效果的模型。我们通过历史查询的变化过程来给每个历史查询赋权,并利用这些权重同时做基于表示的匹配与词级别的细粒度交互,并额外设计了一个查询变化分类任务用于增强权重的学习。本模型进行实验结果证实了模型的有效性。
[0050]
具体而言,有如下技术效果:
[0051]
(1)通过对历史查询变化的分析,抽取出三种词权重,用于刻画查询的变化。并通过查询变化分类任务来提升权重学习的效果。
[0052]
(2)将获取的词权重同时应用于基于表示的匹配与词级别的细粒度交互,用于提升会话式检索模型的效果。
附图说明
[0053]
图1历史相邻查询变化关系的作用;
[0054]
图2模型整体框架图;
具体实施方式
[0055]
以下是本发明的优选实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于此实施例。
[0056]
本发明提出了一种建模历史相邻查询变化的会话式检索方法。
[0057]
用户在一个查询会话中往往会提出多个查询,并且在每一个查询提出后也会选择满意的文档点击。对于后续的用户查询,之前的查询以及点击文档往往也是有参考价值的,这些信息可以告诉搜索引擎用户感兴趣的信息。然而并不是所有的信息都是有用的,有些信息甚至会起到误导作用。比如图一中的例子,用户当前提出的查询q3感兴趣的是伏地魔死亡的原因,而在q1中用户查过哈利波特的作者是谁。显然用户在查询q3的时候是不需要知道作者信息的,因而q1对q3有可能会有误导效果。为了区分哪些信息是有用的,以往很多模型考虑到查询变化过程的分析。然而以往的模型只考虑当前查询与历史查询之间的变化,比如图1中标号为2和3的箭头。这些模型忽略了历史查询之间的变化关系,如图中标号为1的箭头。而历史查询之间的变化关系往往会蕴含当前查询不包含的有用信息。如图,如果只关心当前查询与历史查询的关系,搜索引擎会认为harry potter这个词不符合用户的查询意图,因为在当前查询中用户删除掉了它。可实际上用户很可能是为了表达的简洁而省略了该词。事实上整个会话内用户都在查询与harry potter有关的内容。如果观察到q1和q2之间的关系,在q2中用户保留了harry potter这个词,说明该词很可能是用户关注的中心话题。因此,分析历史查询之间的变化关系能够帮助模型更准确地理解用户意图,而这在以往模型中是被忽略的。
[0058]
为了建模历史相邻查询的变化,本发明提出对任意两个相邻的查询计算三种词权重:保留权重、移除权重和添加权重。利用这三种词权重来衡量用户偏好的信息与不想要的信息。为了更好地建模历史查询变化,本发明提出使用一个查询变化分类问题,并设计了一个查询变化分类器(reformulation classifier),以三种词权重作为输入,输出变化类型。在分析过历史查询变化的三种词权重之后,利用这些权重对候选文档与会话历史做词级别的交互与语义级别的匹配。最后使用多任务学习的策略同时对候选文档排序与查询变化分类两个任务进行学习。
[0059]
在会话式检索问题中,每个查询可能对应多个点击文档。在本发明中,考虑其中一个用户满意的点击文档。具体地,对于会话的上下文s,包含历史查询与对应的满意点击文档s=[(q1,d1),

,(q
t-1
,d
t-1
)]。其中qi表示会话内第i个查询,di表示第i个查询对应的用户满意点击文档。另给定当前查询q
t
和候选文档d
t
,我们要计算出候选文档的相关度分数r(d
t
|q
t
,s)。
[0060]
模型整体结构
[0061]
模型的整体结构在图2中展示。整个模型可以被分成四部分:词权重计算(query term weighting),基于表示的匹配(representation-based matching),词级别的交互(term-based interaction)和文档分数计算(document scoring)。首先通过词权重计算模块建模历史相邻查询的变化关系,计算出三种词权重,并利用这三种词权重进行查询变化分类。随后利用这三种表示,分别将候选文档与会话上下文进行基于表示的匹配和词级别的交互,得到匹配与交互分数,最后通过一个全连接层,计算文档分数。
[0062]
词权重计算模块
[0063]
首先,对于每个查询或者文档中的词,通过transformers计算每个词包含上下文的语义表示:
[0064][0065][0066]
其中eq和ed分别是查询和文档中词的初始词向量,通过fasttext训练得到。e
p
是位置编码,trm是transformers模型的简写。
[0067]
对于两个相邻的历史查询q
i-1
和qi,通过三种词权重来衡量它们之间的变化关系,分别是q
i-1
中每个词的移除权重qi中每个词的添加权重和保留权重本发明设计了一个查询变化建模单元(qrmu)来完成这个过程。qrmu的输入除了前一个查询和后一个查询之外,还包括前一个查询对应的用户满意点击文档。即基于这三种不同类型的词权重,可以获得对应的三种查询表示,
[0068]
分别是以及用着三种查询表示以及两个查询对应的原始词向量表示作为输入,通过查询变化分类器(rc)来预测这一对相邻查询对应的变化类型:
[0069][0070]
基于表示的匹配模块
[0071]
在获取了三种词权重之后,首先使用一种基于表示的匹配方法,来衡量候选文档与会话上下文之间的关联程度。上文已经介绍过通过三种词权重获取三种查询表示的方法。额外引入原始词向量表示获取的查询表示对于以上四种查询表示,分别使用transformer对整个查询进行建模,具体地:
[0072][0073]
通过transformer可以将每个查询的表示之间互相交互。选择最后一个查询对应的表示作为整个查询序列的语义表示。类似地,可以获取其他三种类型的表示将这四个表示拼接在一起,通过一个全连接层,即可获取整个会话的语义表示将该表示与候选文档的表示计算相似度即可得到基于表示的匹配得分s
rep

[0074]
词级别的交互模块
[0075]
为了实现历史查询与候选文档之间的细粒度匹配,本发明在kernel pooling的基础上,设计了一个attentive kernel pooling,利用三种词权重来提取三种类型的交互特征:其中attentive_kernel_pooling的结构将后面介绍。类似地,可以通过另外两种词权重获取另外两种交互特征和此外,用普通的kernel pooling同样可以获取不加权重的交互特征将
这四类匹配特征分别通过全连接层可以获得四类交互分数。为了将每一个历史查询对应的交互分数综合到一起,需要通过注意力机制来计算每一个历史查询的权重。该权重需要根据历史查询与当前查询之间的关联程度来计算。以其中一类权重为例:
[0076][0077]
其中d为隐含层相向量的维度。用作为每个查询的权重,将每个查询得到的交互分数加权求和,得到一个综合的交互分数s
rm
。采用类似的方式,可以得到另外三种综合交互分数s
ad
,s
rt
,so。
[0078]
文档分数计算模块
[0079]
在最后的文档分数计算模块中,综合之前得到的五个分数s
rep
,s
rm
,s
ad
,s
rt
,so,以及两个额外的分数s
ad
和sf,将这些分数拼接在一起通过一个全连接层即得到最后的文档得分。其中s
ad
是通过knrm模型计算得到的当前查询与候选文档的匹配得分,sf是通过相关的统计特征经过全连接层得到的分数。
[0080]
查询变化建模单元(qrmu)
[0081]
对于连续的两个查询qi和q
i-1
,qrmu计算三种词权重来描述这两个查询之间的变化关系。
[0082]
首先计算qi中词的保留权重。将q
i-1
中的词和d
i-1
中的词的表示连接成一个整体的序列随后计算查询qi中的每个词相比于序列h中每个词的注意力权重:
[0083][0084]
随后对这个权重进行标准化即得到词的保留权重
[0085]
在计算qi中词的添加权重时,与保留权重的计算方式相同,同样计算得到每个词的注意力权重但是由于添加的词和之前的词相似度低,所以在标准化之前需要加一个负号:
[0086]
在计算q
i-1
中词的移除权重时,只需要考虑q
i-1
与qi的区别,所以再计算q
i-1
中每个词的注意力权重时只需要考虑与qi中词的关联:
[0087][0088]
随后标准化的方式与添加权重的方式类似,需要在权重之前添加一个负号,得到词的移除权重:
[0089]
查询变化分类器(rc)
[0090]
本发明中将查询变化分成四类:generalization,exploitation,exploration和new task。其中generalization表示后一个查询比前一个查询更泛化,exploitation表示后一个查询比前一个查询更具体,exploration表示后一个查询探讨和前一个查询一样的话题,但是属于不同的子话题。new task表示后一个查询与前一个查询探讨完全不同的话
题。通过比对后一个查询与前一个查询移除,添加和保留的部分信息,即可对查询变化进行分类。
[0091]
为了计算移除的信息,将前一个查询的移除表示与原始表示作对比得到移除信息表示类似地,将后一个查询的添加和保留表示与原始表示作对比,得到将这三个表示拼接在一起,通过一个全连接层,得到预测的四个变化类别的概率分布。
[0092]
attentive kernel pooling模块
[0093]
knrm模型中提出的kernel pooling模块不考虑查询中每一个词的权重。为了将词权重加入到kernel pooling中,我们改进来原有的算法。
[0094]
在原有算法中,计算得到一个查询与文档词的相似度矩阵m之后,通过k个核从m上提取匹配特征f={k1(m),

,kk(m)}:
[0095][0096]
其中μk和σk是核池化的参数,用于衡量不同的相似度分布。为了考虑不同词的权重,将上述公式更改为:
[0097][0098]
其中β
i,k
表示查询中第i个词在第k个核对应的权重,其计算方式如下:
[0099][0100]
整个过程被记作f=attentive_kernel_pooling(q,d,w)
[0101]
模型训练
[0102]
排序模型训练过程采用pairwise的方式,损失函数的设计如下:
[0103][0104]
其中r(d|q)是对r(d|q,s)的简写。s包含训练集中所有的会话,包含查询q对应的所有的点击与未点击的文档,其中d

表示点击的文档,d-表示未点击的文档。
[0105]
在查询变化分类任务中,使用多分类问题中常用的交叉熵损失函数:
[0106][0107]
两个任务的损失函数通过加权和的方式得到一个总体的损失函数。所有模型参数均通过反向传播算法更新。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献