技术简介:
本专利针对现有CQA专家推荐方法未充分结合用户动态兴趣与专业度的问题,提出基于BERT4Rec建模用户近期行为双向信息以获取动态兴趣表示,同时构建融合问答匹配度、社区反馈及注意力机制的多维专业度评估模型,最终通过兴趣与专业度加权点积匹配新问题,显著提升专家发现的准确性与通用性。
关键词:动态兴趣,专业度评估
结合用户专业度和动态兴趣的cqa专家发现方法
技术领域
1.本发明涉及循环神经网络技术领域,特别涉及一种结合用户专业度和动态兴趣的cqa专家发现方法。
背景技术:2.问答社区中往往是一小部分用户最有可能提供高质量的答案。专家发现的任务就是找出这些潜在的能够提供高质量答案的回答者,邀请他们回答问题。专家发现缩短了提问者等待回复的时间,也能够促进用户的参与度,更快获取到用户感兴趣并有可能提供答案的问题。面向问答社区的专家发现方法,包括基于图、基于内容和基于深度学习的方法。
3.基于图的方法就是将用户之间建立关系图,把他们关联起来。yang等人应用社交网络分析构建了任务和用户的声望图,应用基于图的算法衡量用户的专业知识和任务的声望。sun等人提出了应用专业知识增益假设来缓解数据稀疏性问题,并从用户的历史活动中构建了竞争图,将竞争图的层次结构解释为问题难度和用户专业知识。该类方法本质上是依据用户是否在相似领域活跃过,并没有系统地对用户专业性和兴趣进行建模。
4.基于内容的方法,通常就是将其看作一个主题建模的问题。通过用户、问题等信息,找到能回答对应主题的专家。liu等人设计了cqarank模型,从用户偏好主题和拥有的专业知识寻找对应专家。zhao等人提出了一个主题级的专家学习框架,综合链接分析与内容分析寻找合适的专家。mumtaz等人利用问题相似度找到相关用户,再利用社区反馈信息对相关用户进行排序。利用主题建模思想找出对应主题专家的方法,使用关键词简单表征文本特征,忽略了问题和答案文本的深层特征。
5.基于深度学习的方法,引入深度学习提升专家发现方法性能。he等人设计了一个基于神经网络的协作过滤通用框架ncf,将矩阵因式分解与前馈神经网络进行联合学习,建模用户和项目的潜在特征。sedhain等人提出一种基于自动编码器范式的协同过滤模型,将传统的线性内积替换为自动编码器中评级矩阵的非线性分解。lian等人提出了一种新的压缩交互网络自动学习高阶特征交互,将其与深度神经网络结合应用于推荐任务。he等人利用cnn(convolutionalneural networks,卷积神经网络)以分层方式从局部到全局学习嵌入维度之间的高阶相关性,找出潜在的回答者。li使用异质信息网络嵌入算法和lstm共同学习问题、提出者和回答者的表示,用卷积打分函数找出高分用户作为专家。tang等人提出基于注意力的fm(factorizationmachine,因子分解机)变体,不仅模拟个体特征对之间的交互,而且强调关键特征的作用和成对的交互。尤丽等人使用词向量、文本长度、答案点赞数等特征构建答案质量评估模型,答案质量得分为新问题推荐合适的回答者。用户的兴趣、专业知识,用户间的交互都会随着时间发生或多或少的变化,问答社区的内容绝不会一成不变。yin等人考虑了社区动态性,提出适应用户兴趣漂移进行poi(pointofinterest,兴趣点)推荐的方法。吕晓琦等人根据用户历史解答序列动态构建用户兴趣特征,依据用户兴趣推荐专家。he等人提出了动态用户建模的方法,考虑了用户兴趣的动态性,利用反馈信息获取用户的专业度。
6.若想找出既有极大意愿接受邀请且拥有相应专业知识的用户,就要综合用户兴趣和专业度,但现有方法要么只考虑了一个方面,要么对兴趣和专业度的建模还不够充分,有待改进。目前大多数方法利用循环神经网络学习用户动态兴趣表示,只实现了从左到右的学习序列的单向特征,忽略了用户历史行为序列更丰富全面的信息。此外,不同社区拥有的反馈信息有所差异,甚至有些回复没有反馈信息,仅利用反馈信息对用户专业度进行表征会降低方法通用性且忽视了历史回答本身的质量情况。
技术实现要素:7.为解决上述技术问题,本发明提供一种结合用户专业度和动态兴趣的cqa专家发现方法。
8.本发明的上述技术目的是通过以下技术方案得以实现的:
9.一种结合用户专业度和动态兴趣的cqa专家发现方法,其特征在于,其方法包括:
10.s1、使用u={u1,u2,
…
,u
l
}表示用户集,用户u解答过的历史问答对序列表示为:其中表示用户u在t1时刻回答了问题q1,所给答案为a1,y1为答案a1收到的反馈信息;
11.s2、从用户解答过的历史问答对序列出发,建模用户兴趣和专业度,判断用户是否可以为新问题提供较优答案,使用预训练的bert模型对问题和答案进行编码,学习问题和答案的深层特征信息,得到问题和答案的向量表示,以便后续用户兴趣和专业度建模的实现;
12.s3、用户兴趣建模就是从用户u回答过的问题序列去学习用户u的兴趣表示gu∈rd,将用户u在新问题qm提出之前回答的n个问题序列作为其近期行为,在这n个问题之前回答的所有问题序列作为其长期的历史行为,使用用户回答的在近期n个问题之前的所有历史问题表示的均值作为用户的长期兴趣,计算公式见公式(1):
[0013][0014]
其中,qi∈rd表示用户回答的第i个问题经过编码后所得的问题表示,|q(u)|是用户u回答过的问题数量,n是近期行为所取的问题数量;
[0015]
将用户长期兴趣作为用户近期行为序列的第一个行为,把序列作为bert4rec的输入序列,bert4rec本质就是由多个有向transformer层堆叠起来的,将位置向量与初始输入求和作为transformer的输入,计算见公式(2):
[0016][0017]
其中,是输入序列的第i项,fi∈rd是位置索引d维的位置向量,bert4rec使用的是可学习的位置向量;
[0018]
每个transformer层的trm包含多头自注意力和位置前馈网络两个子层,使用这两个子层对输入序列的隐藏矩阵h∈r
n+2
×d进行处理,n+2为序列长度,之所以为n+2是因为在预测用户未来对什么感兴趣时,bert4rec在输入序列的末尾附加了masked,根据该masked的最终隐藏表示来预测下一项;d为隐藏维度,多头自注意力子层的计算公式见公式(3):
[0019][0020]
其中,h
l
为隐藏矩阵,l表示第l个transformer层,h为自注意力的头数,wo∈rd×d、w
iq
∈rd×
d/h
、和为可学习参数,
[0021]
位置前馈网络子层的计算公式见公式(4),
[0022][0023]
其中,φ(x)是标准高斯分布的累积分布函数,w
(1)
∈rd×
4d
、w
(2)
∈r
4d
×d、b
(1)
∈r
4d
、b
(2)
∈rd是可学习参数,bert4rec使用层规范化函数ln对同一层所有隐藏单元的输入进行规范化,具体公式见公式(5),
[0024][0025]
其中,h
l-1
∈r
n+2
×d是第l-1层输出的隐藏矩阵,作为第l层trm的输入,经过多头自注意力和位置前馈网络两个子层后输出h
l
∈r
n+2
×
d;
,将最后一层transformer层的最后一个隐藏表示作为用户兴趣最终表示;
[0026]
s4、将反馈权值与问答对匹配得分进行结合得到综合的专业权重,对用户回答的对应问题进行加权,即给那些用户表现更为专业的问题更高的权重,计算公式见公式(6):
[0027]
pi=(cosine(qi,ai)+act(yi))
·
qi(6)
[0028]
其中,cosine()是余弦相似度函数求问答匹配得分,qi和ai分别是用户回答的第i个问题编码后的问题表示,以及给出的答案编码后的答案表示,act()是一个前馈网络,输入反馈向量yi,输出反馈权值,对于没有反馈信息的回答将其反馈权值设为0,反馈向量yi是反馈信息的统计数据构成的一个密集向量;
[0029]
用户在与新问题相近的那些问题上的表现,最能体现用户在新问题领域专业水平如何,因此,引入注意力机制,让模型给予那些与新问题相近的问题更多的关注,注意力权重计算公式见公式(7):
[0030][0031]
其中,we∈rd×d是可训练的参数,用户专业度表示eu∈rd,由用户历史问答对匹配得分结合反馈信息所得综合专业权重加权以及注意力加权后求和获得,计算公式见公式(8):
[0032][0033]
pi∈rd是用户回答的第i个问题表示进行专业权重加权后的表示;
[0034]
s5、经过用户兴趣和用户专业度建模,获得了用户兴趣表示gu∈rd,以及用户专业
度表示eu∈rd,它们和新问题表示qm∈rd空间大小一致,所以直接使用点积作为打分函数,计算公式见公式(9):
[0035]
s(qm,gu,eu)=qm·
(gu+eu)(9)
[0036]
经过打分函数s(qm,gu,eu)求得用户u的得分,按得分对候选用户进行排序,选择top用户作为推荐人选,训练模型涉及的数据量庞大,选择hinge损失函数对模型进行训练,从而避免了对数据进行标注的工作:
[0037][0038]
其中,n为样本数,margin是一个常数,分别表示正例用户和负例用户的得分,正例用户就是能够给问题提供较优答案的用户,反之其他用户则为负例用户。
[0039]
进一步优选的,步骤s1中,问答对序列是按用户回答问题的时间排列的ti《tj(i《j),|q(u)|是用户u回答过的问题数量。
[0040]
进一步优选的,步骤s2中,问答社区中问题文本的长度较短,一般就是0-100区间,答案文本的长度相对要长一点,但大多数都是100-200区间,符合预训练bert模型能处理的最大长度限制,个别答案会超出512的长度限制,据统计超出限制的答案前200个字符已经可以概括这个答案的主要思想,故若是遇到超出bert长度限制的答案,就将其做截断处理,保证输入的文本符合bert的长度限制。
[0041]
与现有技术相比,本发明具有以下有益效果:
[0042]
其一、本发明使用能够有效利用双向信息的bert4rec(sequentialrecommendationwithbidirectionalencoder representationsfromtransformer)对用户解答过的问题序列进行处理,克服循环神经网络仅学习序列单向信息的局限性,得到更充分全面的用户动态兴趣;
[0043]
其二、构建用户专业度评估网络,计算用户历史问答匹配度结合拥有的反馈信息获取用户专业度权重,利用注意力机制关注用户在新问题领域的表现情况,得到更为准确的专业度表示。解决现有方法未考虑答案质量情况的问题,得到了更准确的专业度表示,对反馈信息不充足的情况也适用,方法通用性和性能得到提升;
[0044]
其三、在公开数据集stackexchange的english和3dprinting两个子数据集上进行实验,本发明的方法皆取得了不错的表现,为新问题找出了潜在的优质回答者。
附图说明
[0045]
图1是本发明的模型总体框架图;
[0046]
图2是本发明的用户兴趣建模框架图。
具体实施方式
[0047]
以下结合附图对本发明作进一步详细说明。
[0048]
实施例
[0049]
1模型构建
[0050]
1.1问题分析
[0051]
使用u={u1,u2,
…
,u
l
}表示用户集,用户u解答过的历史问答对序列表示为:其中表示用户u在t1时刻回答了问题q1,所给答案为a1,y1为答案a1收到的反馈信息。问答对序列是按用户回答问题的时间排列的ti《tj(i《j),|q(u)|是用户u回答过的问题数量。
[0052]
我们将专家发现任务定义为:给出一个新问题qm,候选用户集u以及每个候选用户u解答过的历史问答对序列q(u)。计算每个用户u∈u与qm的匹配分数,将最高分的用户作为有意愿接受邀请,可以为新问题提供较优答案的专家用户。
[0053]
1.2模型框架
[0054]
模型的总体框架如图1所示,该模型的两个重要组成部分是用户兴趣建模和用户专业度建模。我们将用户解答过的历史问答对先进行编码,得到问题和答案的嵌入表示,将其作为模型的输入,获取用户的兴趣和专业度表示,使用打分函数将其与新问题进行匹配打分。得分较高的用户将是有意愿接受邀请,能够为新问题提供较优答案的专家用户。
[0055]
下面我们将从问题/答案编码、用户兴趣建模、用户专业度建模、打分函数这几个部分去详细介绍本文模型,以及模型的实现过程。
[0056]
1.2.1问题/答案编码
[0057]
用户的历史行为,能够很好的反映用户兴趣和用户在对应领域的表现力。因此,我们从用户解答过的历史问答对序列出发,建模用户兴趣和专业度,判断用户是否可以为新问题提供较优答案。使用预训练的bert(bidirectionalencoderrepresentationfrom transformer)模型对问题和答案进行编码,学习问题和答案的深层特征信息,得到问题和答案的向量表示,以便后续用户兴趣和专业度建模的实现。问答社区中问题文本的长度较短,一般就是0-100区间。答案文本的长度相对要长一点,但大多数都是100-200区间,符合预训练bert模型能处理的最大长度限制。个别答案会超出512的长度限制,据统计超出限制的答案前200个字符已经可以概括这个答案的主要思想,故若是遇到超出bert长度限制的答案,我们就将其做截断处理,保证输入的文本符合bert的长度限制。
[0058]
1.2.2用户兴趣建模
[0059]
用户兴趣建模就是从用户u回答过的问题序列去学习用户u的兴趣表示gu∈rd。将用户u在新问题qm提出之前回答的n个问题序列作为其近期行为,在这n个问题之前回答的所有问题序列作为其长期的历史行为。用户的长期偏好是不易改变的,通过用户长期的历史行为,能够获取到用户的长期兴趣。因此,我们使用用户回答的在近期n个问题之前的所有历史问题表示的均值作为用户的长期兴趣,计算公式见公式(1)。
[0060][0061]
其中,qi∈rd表示用户回答的第i个问题经过编码后所得的问题表示,|q(u)|是用户u回答过的问题数量,n是近期行为所取的问题数量。用户的近期行为能够表示其动态的近期兴趣,这将是决定用户目前是否愿意回答新问题的一个关键因素。为了通过用户近期行为获取用户动态兴趣,现有专家发现方法的思路是应用被广泛用于处理序列数据的循环神经网络,来获取动态兴趣表示。但这种方法只能单向的学习序列特征,不能同时学习序列的双向特征。用户兴趣是波动的,并不是单向发展的,需要利用其近期的行为序列充分捕捉
到兴趣来回波动的情况。受sun等人启发我们使用bert4rec代替循环神经网络对用户近期解答的问题序列进行处理,从而克服循环神经网络没能有效利用序列双向信息的缺点。bert4rec允许用户历史行为中的每一项融合来自左侧和右侧的信息,充分学习行为序列的双向信息,获取到更为深层全面的用户动态兴趣表示。对近期问题序列编码后表示为将其与长期偏好一起作为用户的近期行为序列,输入bert4rec获取用户的近期动态兴趣表示。图2为使用bert4rec进行用户兴趣建模的框架图。
[0062]
将用户长期兴趣作为用户近期行为序列的第一个行为,把序列作为bert4rec的输入序列。bert4rec本质就是由多个有向transformer层堆叠起来的,为了使用输入的序列信息,需要将位置向量与初始输入求和作为transformer的输入。计算见公式(2)。
[0063][0064]
其中,是输入序列的第i项,fi∈rd是位置索引d维的位置向量,bert4rec使用的是可学习的位置向量。将加入了位置信息的输入序列送入多个有向的transformer层,迭代的计算每一项在每一层的隐藏表示h
il
∈rd,l指第l个transformer层。
[0065]
每个transformer层的trm包含多头自注意力和位置前馈网络两个子层,使用这两个子层对输入序列的隐藏矩阵h∈r
n+2
×d进行处理。n+2为序列长度,之所以为n+2是因为在预测用户未来对什么感兴趣时,bert4rec在输入序列的末尾附加了masked,根据该masked的最终隐藏表示来预测下一项;d为隐藏维度。多头自注意力子层的计算公式见公式(3)。
[0066][0067]
其中,h
l
为隐藏矩阵,l表示第l个transformer层,h为自注意力的头数,wo∈rd×d、w
iq
∈rd×
d/h
、和为可学习参数。
[0068]
位置前馈网络子层的计算公式见公式(4)。
[0069][0070]
其中,φ(x)是标准高斯分布的累积分布函数,w
(1)
∈rd×
4d
、w
(2)
∈r
4d
×d、b
(1)
∈r
4d
、b
(2)
∈rd是可学习参数。bert4rec使用层规范化函数ln对同一层所有隐藏单元的输入进行规范化,具体公式见公式(5)。
[0071][0072]al-1
=ln(h
l-1
+dropout(mh(h
l-1
)))
[0073]
其中,h
l-1
∈r
n+2
×d是第l-1层输出的隐藏矩阵,作为第l层trm的输入,经过多头自注意力和位置前馈网络两个子层后输出h
l
∈r
n+2
×d。我们将最后一层transformer层的最后
一个隐藏表示作为用户的近期动态兴趣。因为将长期兴趣作为近期行为序列的第一个行为,所以经过bert4rec所得的近期动态兴趣既考虑了用户近期的动态性还结合了其长期的偏好,也就是用户兴趣的最终表示为1.2.3用户专业度建模
[0074]
考虑到点赞量这类反馈信息,带有社区用户的主观性,仅用其对用户进行评估可能会影响结果的客观性。且不同社区拥有的反馈信息会有所不同,过度依赖反馈信息会导致模型通用性不是很好。为了提升模型的通用性和专业度评估的准确度,我们构建用户专业度评估网络,获取用户专业度表示。
[0075]
首先,我们借鉴答案质量评估方法的思想,计算用户历史问答对的匹配得分。其次,考虑到反馈信息也是衡量用户专业度的一项重要参考指标,我们并没有完全将其丢弃,而是将其与问答对匹配得分进行结合得到综合的专业权重。对用户回答的对应问题进行加权,即给那些用户表现更为专业的问题更高的权重。计算公式见公式(6)。
[0076]
pi=(cosine(qi,ai)+act(yi))
·
qi(6)
[0077]
其中,cosine()是余弦相似度函数求问答匹配得分,qi和ai分别是用户回答的第i个问题编码后的问题表示,以及给出的答案编码后的答案表示。act()是一个前馈网络,输入反馈向量yi,输出反馈权值,对于没有反馈信息的回答将其反馈权值设为0。反馈向量yi是反馈信息的统计数据构成的一个密集向量,统计的反馈信息见表1。
[0078]
表1反馈信息
[0079][0080][0081]
此外,用户在与新问题相近的那些问题上的表现,最能体现用户在新问题领域专业水平如何。因此,我们引入注意力机制,让模型给予那些与新问题相近的问题更多的关注。注意力权重计算公式见公式(7)。
[0082][0083]
其中,we∈rd×d是可训练的参数。用户专业度表示eu∈rd,由用户历史问答对匹配得分结合反馈信息所得综合专业权重加权以及注意力加权后求和获得,计算公式见公式(8)。
[0084][0085]
pi∈rd是用户回答的第i个问题表示进行专业权重加权后的表示。
[0086]
1.2.4打分函数
[0087]
经过用户兴趣和用户专业度建模,获得了用户兴趣表示gu∈rd,以及用户专业度表示eu∈rd。它们和新问题表示qm∈rd空间大小一致,所以我们直接使用点积作为打分函数。计算公式见公式(9)。
[0088]
s(qm,gu,eu)=qm·
(gu+eu)(9)
[0089]
经过打分函数s(qm,gu,eu)求得用户u的得分,按得分对候选用户进行排序,选择
top用户作为推荐人选。训练模型涉及的数据量庞大,我们选择hinge损失函数对模型进行训练,从而避免了对数据进行标注的工作。
[0090][0091]
其中,n为样本数,margin是一个常数,分别表示正例用户和负例用户的得分。正例用户就是能够给问题提供较优答案的用户,反之其他用户则为负例用户。
[0092]
本具体实施例仅仅是对本发明的解释,其并不是对本发明的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本发明的权利要求范围内都受到专利法的保护。