掌桥专利:专业的专利平台
掌桥专利
首页

一种利用个人词向量消除关键词歧义的个性化搜索模型

文献发布时间:2023-06-19 09:26:02


一种利用个人词向量消除关键词歧义的个性化搜索模型

技术领域

本发明涉及人工智能领域,尤其涉及一种利用个人词向量消除关键词歧义的个性化搜索模型。

背景技术

在日常生活中,搜索引擎的应用越来越广泛,人们对于搜索结果的要求也越来越高。搜索结果个性化对于有歧义的查询来说非常重要,针对同一个查询为具有不同兴趣爱好的用户返回不同的搜索结果可以极大地提升用户使用搜索引擎的体验。个性化搜索是为了解决用户输入的查询具有歧义这一普遍存在的问题而提出的,主要是基于用户的兴趣针对同一个查询为不用的用户返回不一样的检索结果。那么,实现个性化搜索的关键就在于如何挖掘用户的兴趣以推断用户当前查询所表达的查询意图。目前已有的方法主要通过为用户建立兴趣画像来明确用户兴趣。建模用户兴趣画像的方法有很多,根据画像是否是通过学习获得的可以将现有方法分为以下两大类:传统个性化搜索模型和基于学习的个性化搜索模型。

传统的个性化搜索模型主要采用两种方法来获得用户兴趣画像。一种是利用话题模型(Topic Model)从用户历史点击过的文档中抽取话题,并根据这些话题在话题空间中建立用户的兴趣画像[1,2]。另一种则是采用特征工程,从用户的查询历史中抽取一系列与用户兴趣相关的特征来构成用户兴趣的表示向量[3]。然而,这些传统方法都是基于经验对用户兴趣进行建模,对于特征合理性和有效性的要求极高,而且得到的兴趣向量涵盖范围也很有限。为了解决这些问题,一系列基于学习(深度学习)的个性化搜索模型陆续被提出。其中一部分模型不显式地设计特征来表示用户兴趣,而是直接从用户的查询日志中学习得到用户兴趣的表示向量[6];还有一部分模型则是直接利用单个用户的查询日志作为训练数据来训练满足个性化搜索的个人搜索模型[4,5]。

此外,在建立用户画像的基础上,也有一些研究工作从其他角度出发来提升个性化搜索的效果。比如,利用对抗生成网络来增强个性化搜索模型的训练数据[8];利用强化学习框架来跟踪用户和搜索引擎的整个交互过程,以便捕捉用户兴趣动态变化的性质并持续地更新个性化排序模型[9];捕捉用户在查询过程中的再查找(Re-finding)行为来辅助当前查询排序[7,10]等。

目前已有的个性化搜索模型大部分都是先基于用户的查询历史构建用户兴趣画像,然后再计算文档与用户兴趣画像的匹配程度来实现重排。这些模型不是从明确用户使用当前查询本身想要表达的查询意图出发,而是利用用户兴趣画像来辅助实现个性化排序。其实很多查询关键词通常具有歧义,拥有不同知识背景和兴趣爱好的用户对同一个查询关键词往往有各自不同的理解,在使用相同的查询关键词时想要表达的查询意图也不相同。比如查询关键词“苹果”,一个果农通常了解和使用的是“水果苹果”这一层含义,而如果是一个IT工程师则倾向于了解和使用“苹果公司、苹果产品”这一层含义。因此,对于不同的用户而言,同一个查询关键词所具有的语义应该是不同的。

我们希望直接从查询本身出发,获得查询关键词的个性化表示向量,以此消除查询关键词的歧义、明确用户个人的查询意图来达到个性化的效果。这样就可以直接利用查询的个性化表示向量与文档向量进行匹配来计算个性化得分,不需要维护用户长期的查询历史和用户兴趣画像,在一定程度上节约了计算时间和存储空间。

发明内容

为此,本发明提出了一种利用个人词向量消除关键词歧义的个性化搜索模型,包括预训练词向量模块、个性化排序模型、在线更新算法三部分;

所述预训练词向量模块通过预训练模型在用户个人的查询历史上训练得到每个用户的个人词向量矩阵,所述个人的查询历史包括所述用户历史输入的一系列查询以及在每个历史查询的点击文档集和未点击文档集,所述预训练模型通过用于捕捉语义信息的上下文预测任务和用于挖掘用户兴趣的点击预测任务来得到包含用户兴趣和关注语义的个人词向量;

所述个性化排序模型应用所述个人词向量,对于输入的查询和候选文档,通过文本表示模块得到不同粒度的查询和文本表示,进而通过基于会话的查询意图表示模块,根据当前查询会话内的短期历史查询获得基于会话的查询意图表示向量,之后通过文本匹配排序模块使用KNRM匹配模型来计算查询和文档之间的个性化匹配得分,基于匹配得分对所有候选文档进行排序得到当前查询下的个性化文档列表,应用基于文档对的LambdaRank算法来训练排序模型,同时利用查询重构模块构建多任务框架来帮助个性化排序以及模型的训练;所述在线更新算法短时间内基于线下训练好的模型结合在线调整方式,利用用户最新发出的查询来适当的更新所述个人词向量矩阵,使得所述个人词向量矩阵中能够蕴含最新的用户兴趣,为了保证个性化排序模型整体的最优性,在较长时间的在线调整之后,则利用当前所有的现有数据来重新训练个性化排序模型;

系统最终输出在当前查询下该文档的个性化匹配得分,以及文档的个性化排序列表。

所述个性化词向量层利用单词和对应的用户编号两个标识来标志一个单词,在不同用户个人词向量中的同一个单词被标志成单词与用户信息的组合,并在所有用户的整体查询日志上构建全局词汇表,通过去掉全局词汇表中的停用词、去掉在用户个人查询日志中出现次数小于特定次数的单词、去掉单词的交叉熵小于阈值的单词的规则筛选全局词汇表中的单词来为每个用户构建个人词汇表:

所述单词的交叉熵以WordEntropy表示,计算公式如下:

ClickEntropy(q)=∑

其中Q(w)表示包含单词w的所有查询的集合,D(q)表示在查询q下点击文档的集合,P(d|q)是在查询q下点击文档d的概率,Clicks(q,d)表示用户在查询q下点击文档d的次数,Clicks(q,·)则表示用户在查询q下点击的文档总数;通过对用户个人词汇表中的单词进行筛选,我们可以有效地控制个人词向量的存储空间和训练词向量的计算量;对于查询日志非常少的用户,参照基于用户的协同过滤算法来寻找兴趣相似的用户,并基于相似用户和自己的查询日志来训练个人词向量,用户u

N(u

所述训练预测模型的所述上下文预测任务通过设置上下文窗口的大小k,预测目标词的序号t,将目标词w

所述预训练模型的所述用于挖掘用户兴趣的点击预测任务利用日志中记录的点击行为来捕捉更精确的关于用户兴趣的信息,任务输入为当前查询q,一个候选文档d以及用户当前的搜索历史H={q

其中MS(·)表示多头自注意力函数,f(·)表示全连接层。之后,将所有历史查询的表示再通过一个多头自注意力层得到用户查询过程的上下文表示向量c

c

最后,用一个基于当前查询的注意力机制来融合所有历史查询,得到用户兴趣的表示向量P

对于当前输入的查询q和候选文档d,将其通过个性化词向量层和一个MLP层得到各自的表示向量,最后,计算候选文档与当前查询q以及用户兴趣表示P

p(y

损失函数L

所述在线更新模块的所述在线调整方式可以采用按阶段更新、按会话更新或按查询更新三种方式,所述按阶段更新中,第一步在线下用当前所有的用户查询历史训练好一个模型;第二步规定一个阶段的时长,在这个时间内我们只收集所有的用户点击行为,但是不调整词向量;第三步在本阶段结束后,根据收集的用户点击行为来调整对应用户的个人词向量,同时保持排序模型中的其他参数不变,不断重复第二步和第三步操作,使得词向量始终包含最近的查询历史中体现的用户兴趣;所述按会话更新中,采用与所述按阶段更新方式相同的步骤,但以查询会话为时间间隔来更新词向量;所述按查询更新方式采用与所述按阶段更新方式相同的步骤,但以查询为间隔来更新词向量。

所述个性化排序模型中的所述文本表示模块利用个性化词向量层,将查询和文档映射到高维向量空间并获得四种不同的文本表示向量,从而得到不同粒度和角度的查询和文档表示,所述文本表示向量包括:

Personalized Word Representation(个性化词向量表示):输入用户的查询,通过对应用户的个人词向量矩阵会得到查询的个性化词向量表示P

Personalized Contextual Representation(个性化上下文表示):在个性化词向量表示后面加上一个多头自注意力层对其进行处理,得到查询的个性化上下文表示CP

CP

Global Word Representation(全局词向量表示):通过全局词向量,获得查询和文档的全局词向量表示G

Global Contextual Representation(全局上下文表示):利用多头注意力层对全局词向量表示进行处理,得到查询和文档的全局上下文表示向量CG

所述个性化排序模型中的所述基于会话的查询意图表示模块根据当前会话中的历史查询计算会话级的查询意图表示SP

WP

所述个性化排序模型中的所述文本匹配排序模块使用匹配模型K-NRM来计算匹配得分,对于查询的个性化词向量表示P

|q|表示查询的长度,K表示不同RBF核函数的数目,μ

之后,再用三个参数不同的K-NRM模块来计算其他查询和文档表示向量之间的匹配得分,得到个性化上下文表示的匹配得分f

对于查询的个性化上下表示CP

对于查询的全局词向量表示G

对于查询的全局上下文表示CG

基于会话的查询意图表示和文档向量之间的匹配得分f

之后,进一步计算查询重构模块中重构得到的查询表示向量h

选择用一个基于文档对的学习排序算法LambdaRank来训练整个个性化排序模型,首先,在各个用户的查询日志上构建文档对作为训练数据,其中用户点击的文档为正例,用户跳过的文档为负例,进而计算交换列表中的两个文档对评价指标造成的差值作为该文档对的λ,最后的损失函数为文档对中两个文档相对关系的概率分布的交叉熵与λ的乘积,表示如下:

所述个性化排序模型中设置所述查询重构模块构建多任务框架,与个性化排序任务同时进行训练,采用“编码器-解码器”结构来完成查询的重构,在编码器部分,首先将当前查询的个性化词向量表示P

p(o

其中隐状态s

通过最小化目标序列的负对数生成概率训练查询重构模块,整个多任务模型通过最小化负对数概率和文档对损失来联合进行训练。

本发明所要实现的技术效果在于:

在排序模型中为每个用户都保留了个人词向量,并严格筛选其中包含的词汇,仅保留少部分用户使用过并且具有歧义的词,节省了空间和计算资源。通过将用户兴趣嵌入到个性化的词向量表示中,模型在进行个性化排序时不需要再分析用户的长期查询历史建立用户画像,可以直接计算查询和文档个性化表示之间的匹配得分,提高了效率。并且,对于个性化搜索,本申请的模型包含用户兴趣的个人词向量可以帮助消除查询关键词的歧义,明确用户的查询意图;同时,模型提高了计算文档个性化得分的效率。

附图说明

图1预训练模型结构图;

图2模型结构图

具体实施方式

以下是本发明的优选实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于此实施例。

为了实现上述的发明目的,本发明提供了一种利用个人词向量消除关键词歧义的个性化搜索模型。

由于有很多独立的用户使用搜索引擎,表示为u

预训练词向量

用户兴趣主要反映在用户历史输入的查询和每个查询下的点击文档中,因此,获得包含用户兴趣的个人词向量最直接的方法就是基于对应用户的查询日志语料训练个性化词向量模型。然而,基本的语言模型致力于学习语料中包含的语义信息和语言模式,但是难以学习到关于用户兴趣的信息。记录在查询日志中的用户点击行为能够反映用户的兴趣和偏好信息,所以我们特别设计了一个预训练模型,通过两个任务来得到包含用户兴趣和关注语义的个人词向量。这两个任务分别是用于捕捉语义信息的上下文预测任务和用于挖掘用户兴趣的点击预测任务。预训练模型的整体结构展示在图1中,其中设置了个性化词向量层。

个性化词向量层

个性化词向量层中是要为每个用户单独训练的个人词向量矩阵。我们利用两个标识(单词,对应的用户编号)来标志一个每个单词,因而在不同用户词向量中的同一个单词会被标志成不同的单词。比如,用户u

我们还需要确定每个用户个人词向量矩阵中需要包括哪些单词。在所有用户的整体查询日志上,我们可以构建一个全局词汇表,但是在每个个人词向量矩阵中维持全局词汇表中的所有单词存在两个问题:(1)大部分全局词汇表中的单词在个人日志中出现的频率都很低,甚至没有出现过,没必要浪费大量的内存空间为每个用户维持一个完整的全局词汇表;(2)全局词汇表中的一部分单词可能不具有歧义,不需要单独训练个性化词向量,可以只为这部分单词训练共享的全局词向量。因此,我们按照如下规则筛选全局词汇表中的单词来为每个用户构建个人词汇表:

1、去掉全局词汇表中的停用词;

2、去掉在用户个人查询日志中出现次数小于C次的单词;

3、去掉WordEntropy值小于阈值ent的单词。

我们定义WordEntropy为单词的交叉熵,是所有包含该单词的查询点击熵的平均值,计算公式如下:

ClickEntropy(q)=∑

其中Q(w)表示包含单词w的所有查询的集合,D(q)表示在查询q下点击文档的集合。P(d|q)是在查询q下点击文档d的概率,Clicks(q,d)表示用户在查询q下点击文档d的次数,Clicks(q,·)则表示用户在查询q下点击的文档总数。。通过对用户个人词汇表中的单词进行筛选,我们可以有效地控制个人词向量的存储空间和训练词向量的计算量。

由于各个用户的日志数据量非常不均匀,有的用户查询日志非常少,因此我们也可以利用若干个相似用户的查询日志一起来训练词向量。我们参照基于用户的协同过滤算法来寻找兴趣相似的用户,用户u

N(u

上下文预测任务

在用户的搜索日志中,我们假设出现在输入查询和点击文档中的关键词表达的使用已经了解或者感兴趣的词义。我们参考经典的语言模型CBOW通过上下文预测任务在用户的个人搜索日志上学习个性化词义表示。k表示上下文窗口的大小,t表示预测目标词的序号。输入是目标词w

点击预测任务

除了上面的上下文预测任务,我们还提出了一个点击预测任务,利用日志中记录的点击行为来捕捉更精确的关于用户兴趣的信息。在个性化搜索中,我们认为用户是否点击一个文档不仅仅取决于查询和文档之间广义上的相关性,同时也与用户搜索历史中体现出来的用户兴趣相关。因此,我们基于用户输入的当前查询和搜索历史来预测用户的点击行为。输入为当前查询q,一个候选文档d以及用户当前的搜索历史H={q

其中MS(·)表示多头自注意力函数,f(·)表示全连接层。之后,所有历史查询的表示再通过一个多头自注意力层得到用户查询过程的上下文表示向量c

c

最后,用一个基于当前查询的注意力机制来融合所有历史查询,得到用户兴趣的表示向量P

对于当前输入的查询q和候选文档d,我们将其通过个性化词向量层和一个MLP层得到各自的表示向量。最后,我们计算候选文档与当前查询q以及用户兴趣表示P

p(y

我们将这个任务看做一个点击和不点击文档的二分类任务,损失函数L

利用这两个预训练任务来联合优化词向量预训练模型,得到包含用户兴趣和感兴趣的语义信息的个性化词向量。

个性化排序模型

通过预训练阶段后,我们得到了每个用户的个人词向量。我们进一步设计了一个个性化排序模型,利用用户个人词向量来消除查询关键词的歧义并明确用户的查询意图。在排序模型中,我们可以保持个人词向量固定不更新,也可以利用对应用户的数据动态更新词向量。除了个人词向量,其中也包括在所有用户的查询日志上训练的全局词向量。排序模型的整体结构如图2所示,我们将其分为四个主要部分。第一部分,通过文本表示模块我们得到不同粒度的查询和文本表示;第二部分,我们根据当前查询会话内的历史查询获得基于会话的查询意图表示向量;第三部分,使用KNRM匹配模型来计算查询和文档之间的匹配得分,应用基于文档对的LambdaRank算法来训练模型;最后,我们设计了一个查询重构模块,并构建所任务架构来帮助个性化排序。

文本表示模块

利用个性化词向量层,我们可以将查询和文档映射到高维向量空间并获得它们的文本表示向量,一共包括四种不同的文本表示向量。由于个人词向量适用于反映用户兴趣的,我们只考虑用个人词向量来表示查询,而文档是供所有用户使用的,因此仍然用全局词向量来表示。

(1)Personalized Word Representation(个性化词向量表示):输入用户的查询,通过对应用户的个人词向量矩阵会得到查询个性化词向量表示P

(2)Personalized Contextual Representation(个性化上下文表示):为了捕捉查询上下文之间的交互信息并获得查询级别的个性化向量表示以更进一步地明确用户的查询意图,我们在个性化词向量表示后面加上一个多头自注意力层对其进行处理,得到查询的个性化上下文表示CP

CP

(3)Global Word Representation(全局词向量表示):在实际的搜索场景中,每个用户的兴趣都是多变的,知识也是在不断增长的。比如前面的例子中提到的IT工程师,在大多数情况下,他输入“Apple”这个关键词是想要查询苹果公司或者苹果电子产品。但是也不可避免他有时是希望使用“苹果”的其他含义,比如苹果水果,这一含义在历史中从来没有使用过。因此,除了个性化的文本表示之外,我们同时也关注查询和文档的全局表示。通过全局词向量,我们获得了查询和文档的全局词向量表示G

(4)Global Contextual Representation(全局上下文表示):与PersonalizedContextual Representation的计算过程相同,我们利用多头注意力层对全局词向量表示进行处理,得到查询和文档的全局上下文表示向量CG

通过以上四种不同的文本表示向量,我们得到了不同粒度和角度的查询和文档表示,有助于我们对文档进行个性化排序。

基于会话的查询意图表示

在上一部分,我们已经利用个人词向量表示和上下文表示来明确当前查询中关键词的具体含义,但是很多查询都很短甚至只包含一个词,仅基于当前查询的上下文来消除歧义是不够的的。因此,我们需要更进一步地明确当前查询的具体意图。根据现有文献,我们知道用户在一个搜索会话中的查询意图通常都是一致的,我们定义为用户的短期兴趣。我们可以根据当前会话中的历史查询计算会话级的查询意图表示SP

WP

文本匹配排序模块

获得上一部分所描述的查询和文档的个性化以及全局表示后,我们可以计算查询和文档的个性化匹配得分来对候选文档集实现重排序。在提出的模型中,我们使用匹配模型K-NRM来计算匹配得分。对于查询的个性化词向量表示P

|q|表示查询的长度,K表示不同RBF核函数的数目。μ

与上面个性化词向量之间匹配得分的计算过程相同,我们再用三个参数不同的KNRM模块来计算其他查询和文档表示向量之间的匹配得分,得到个性化上下文表示的匹配得分f

除了以上查询和文档之间的交互匹配得分之外,我们还计算了查询重构模块中重构得到的查询表示向量h

f(q,d)=MLP(f

我们选择用一个基于文档对的学习排序算法LambdaRank来训练个性化排序模型。首先,我们在用户的查询日志上构建文档对作为训练数据,其中用户点击的文档为正例,用户跳过的文档为负例。并且我们计算交换列表中的两个文档对评价指标造成的差值作为该文档对的λ,最后的损失函数为文档对中两个文档相对关系的概率分布的交叉熵与λ的乘积,表示如下:

查询重构模块

日常使用搜索引擎的绝大多数用户都是非专业人员,他们很难直接用准确的查询关键词来表达自己的查询意图。在本文的模型中,我们能够得到包含用户兴趣的个性化查询表示向量,因此我们能够基于此个性化表示来推断用户真实的查询意图,并对用户的查询进行重构来提升个性化排序的效果,反过来也能够促进用户个人词向量的学习。从这个动机出发,我们在模型中设置了查询重构模块并搭建多任务框架将其与个性化排序任务同时进行训练。由于我们没有人工标注的表达用户真实查询意图的重构查询,我们只能参考查询推荐任务中的做法,认为当前查询会话下的后一个查询相比于当前查询能够更好地表达用户的查询意图,并用后一个查询作为查询重构任务的监督信息。参考了许多查询生成模型,在本文中我们采用“编码器-解码器”结构来完成查询的重构。在编码器部分,首先将当前查询的个性化词向量表示Pq输入一个GRU中计算每一步的隐状态

p(o

其中隐状态s

我们通过最小化目标序列的负对数生成概率训练查询重构模块。整个多任务模型通过最小化负对数概率和文档对损失来联合进行训练。

在线更新

我们在模型中为每个用户设置了个人词向量,利用用户的查询历史训练模型后,个人词向量中已经包含了查询历史中体现的用户兴趣。但是在实际的应用场景中,用户会不断地输入新的查询,这些查询可能体现出新的用户兴趣。为了确保模型中的用户个人词向量蕴含最新的用户兴趣,我们应该时刻根据用户新输入的查询来对用户个人词向量进行调整,此时可以保持排序模型的其他参数固定不变。为此,我们设计了三种不同的在线调整方式:

按阶段更新:第一步,在线下用当前所有的用户查询历史训练好一个模型;第二步,规定一个阶段的时长,在这个时间内我们只收集所有的用户点击行为,但是不调整词向量;第三步,在本阶段结束后,根据收集的用户点击行为来调整对应用户的个人词向量,同时保持排序模型中的其他参数不变。不断重复第二步和第三步操作,使得词向量始终包含最近的查询历史中体现的用户兴趣。

按会话更新:以上方法是以一个固定的时间为间隔调整词向量,但是在信息检索中,我们通常会认为一个查询会话是反映用户查询意图和短期兴趣的时间单位。因此,与上一个方法的操作步骤相同,我们提出以查询会话为间隔来更新词向量。

按查询更新:在很多个性化搜索的工作中都将用户兴趣划分为长期用户兴趣和短期兴趣,其中短期兴趣体现在一个查询会话内部,而上面以会话为单位更新的方式可能会忽略这种短期兴趣对后续查询的影响,因此我们也设计了一种以查询为间隔来更新词向量的方式,希望能够更精确地捕捉到用户的兴趣。

以上几种方法都是基于线下训练好的模型,利用用户最新发出的查询来适当的更新个性化的词向量,使得词向量中能够蕴含最新的用户兴趣。但是这种增量调整的方式可能很难使模型达到全局最优的效果,长时间微调之后模型的效果可能会逐渐下降。因此我们提出在短时间内可以通过以上几种方式来对模型持续地进行调整,但是经过一段时间后可以在原来的基础上加上新的训练数据在线下重新训练一个全局最优的模型。这样能够既保证模型的效果,又达到较高的效率。

相关技术
  • 一种利用个人词向量消除关键词歧义的个性化搜索模型
  • 一种基于词向量的缩写词歧义消除系统及方法
技术分类

06120112167863