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

基于用户多兴趣特征的智能新闻推荐方法和系统与流程

2022-08-13 16:47:11 来源:中国专利 TAG:


1.本发明涉及人工智能和自然语言处理领域,具体涉及一种基于用户多兴趣特征的智能新闻推荐方法和系统。


背景技术:

2.随着互联网技术的快速发展,越来越多的用户喜欢通过搜狐、新浪和今日头条等在线新闻平台阅读新闻。尽管这些平台尝试为用户提供个性化的新闻推荐服务,但它们仍然不可避免地受到推荐结果不准确和内容缺乏多样性等问题的困扰。这些问题会影响用户的阅读体验。解决上述问题的关键是对新闻文本和用户兴趣进行精准地建模,即准确地捕捉新闻文本特征和用户兴趣特征。
3.目前,现有的新闻推荐方法多数是面向单一的用户兴趣特征,而没有考虑用户潜在的多兴趣的特征信息。现有的新闻推荐方法通常依照用户历史浏览记录信息建立单一的用户兴趣表示,进而执行推荐任务。尽管这些方法在新闻推荐任务中一定程度地提升了推荐结果的准确度,但是它们都忽略了用户的多兴趣特征;仅在单一的用户兴趣上建模,往往无法准确地捕捉用户兴趣特征,这不可避免地会影响到新闻推荐结果的准确性和内容的多样性。


技术实现要素:

4.本发明的技术任务是提供一种基于用户多兴趣特征的智能新闻推荐方法和系统,来解决新闻推荐系统中推荐结果不准确和内容缺乏多样性的问题。
5.本发明的技术任务是按以下方式实现的,基于用户多兴趣特征的智能新闻推荐方法,该方法通过构建并训练由多视角级别的新闻编码器、用户多兴趣特征网络、点击率预测器所构成的新闻推荐模型,将所有候选新闻依据点击率大小由高到低进行排序,将top-k条新闻推荐给用户,具体如下:
6.构建多视角级别的新闻编码器,以新闻的标题、摘要、类别和子类别信息作为输入,分别从上述四类信息的视角学习新闻向量;
7.构建用户多兴趣特征网络,以多视角级别的新闻编码器生成的新闻向量为输入,使用多头自注意力机制、加性注意力机制和多通道的门控循环单元网络得到用户多兴趣特征向量;
8.构建点击率预测器,根据候选新闻向量和用户多兴趣特征向量,计算用户对每一条候选新闻的点击率;将所有候选新闻依据点击率大小由高到低进行排序,将top-k条新闻推荐给用户。
9.作为优选,多视角级别的新闻编码器的构建过程如下:
10.从新闻标题的视角学习新闻特征表示:以新闻标题作为输入;嵌入层负责针对数据集中新闻标题的每一个单词构建单词映射表,并将表中每一个单词映射成唯一的数字标识,映射规则为:以数字1为起始,随后按照每个单词被录入单词映射表的顺序依次递增排
序,从而形成单词映射转换表;使用glove预训练语言模型,得到每个单词的词向量表示;将每一个新闻标题t=[w1,w2,...,wm]转换成词向量表示,记为e=[e1,e2,...,em],其中,m表示一个新闻标题的长度,em表示第m个单词的向量表示。
[0011]
针对获得的新闻标题的词向量表示e=[e1,e2,...,em],使用多头自注意力机制进行特征提取,得到上下文特征向量[h1,h2,h3,...,hm],公式如下:
[0012]
[h1,h2,h3,...,hm]=multiheadattention(e);
[0013]
其中,hm表示上下文特征向量中第m个单词的向量表示,multiheadattention表示多头自注意力机制函数。
[0014]
以上下文特征向量[h1,h2,h3,...,hm]为输入,使用加性注意力机制进一步提取关键特征,得到最终的新闻标题向量表示n
t
,公式如下:
[0015][0016][0017][0018]
其中,是由上下文特征向量得到的注意力查询向量,v和v是从训练过程中学到的参数,运算符
×
为矩阵乘法,tanh为一种激活函数,a
l
是第l个单词的注意力分值,a
l
是第l个单词的注意力权重,m是上下文特征向量[h1,h2,h3,...,hm]的长度。
[0019]
从新闻摘要的视角学习新闻特征表示:以新闻摘要作为输入,具体实施方式同从新闻标题的视角学习新闻特征表示,之后得到摘要向量表示na。
[0020]
从新闻分类的视角学习新闻特征表示:以新闻类别和子类别作为输入;通过词向量方法将新闻类别和子类别信息分别映射到低维空间向量得到每个类别的词向量表示ec和e
sc
,然后使用激活函数relu生成类别的最终向量表示nc和n
sc
,公式如下:
[0021]
nc=relu(vc×
ec vc);
[0022]nsc
=relu(v
sc
×esc
v
sc
);
[0023]
其中,relu是一种激活函数,vc和vc是从训练过程中学到的参数,运算符
×
为矩阵乘法。
[0024]
从全部新闻内容的视角学习新闻特征表示:针对标题、摘要、类别和子类别的向量表示n
t
、na、nc和n
sc
,经过联接操作得到多视角级别的新闻表示rn,然后通过加性注意力机制得到最终的新闻向量n,公式如下:
[0025]rn
=[n
t
;na;nc;n
sc
];
[0026][0027]
[0028][0029]
其中,符号;表示联接操作,是注意力查询向量,vn、vn为计算多视角级别新闻表示的注意力分数aq的参数,tanh为激活函数,运算符
×
为矩阵乘法,为每个视角的向量表示,即前述的n
t
、na、nc和n
sc
;exp为对数函数运算,m为视角的个数,即4个,αq是多视角级别新闻表示的注意力权重。
[0030]
更优地,所述用户多兴趣特征网络的构建过程具体如下:
[0031]
针对多视角级别的新闻编码器基于用户浏览记录得到的新闻向量n,使用多头自注意力机制提取用户在不同特征子空间上的兴趣特征,公式如下:
[0032]
[d1,d2,...di,...,dk]=multiheadattention(n);
[0033]
其中,[d1,d2,...di,...,dk]表示在不同特征子空间的兴趣特征向量,k为多头自注意力机制的头部数量,di为第i个多头自注意力机制的头部输出的特征子空间的向量表示,multiheadattention为多头自注意力机制的函数表示。
[0034]
针对不同特征子空间的兴趣特征向量[d1,d2,...di,...,dk],将该兴趣特征向量分别按照顺序从低到高依次输入到对应的门控循环单元网络通道中进行处理;经过一个通道的处理,捕获用户的一个兴趣特征,得到用户的一个兴趣特征子空间的向量表示;公式如下:
[0035]
ui=gru(di);
[0036]
其中,gru为门控循环单元网络的函数表示,di为第i个兴趣特征的向量表示,即第i个多头自注意力机制的头部输出的特征子空间的向量表示,ui为一个用户的第i个兴趣特征子空间的向量表示。
[0037]
经过多个通道并行处理后,捕获用户的多种兴趣特征,得到不同兴趣特征子空间的向量表示;将这些向量表示联接,然后使用加性注意力机制进一步处理,获得最终的用户多兴趣特征向量。公式如下:
[0038]
u=[u1;u2;...;uk];
[0039][0040][0041][0042]
其中,uk为用户的第k个兴趣特征子空间的向量表示,;为联接操作符号,u为多个通道的用户兴趣特征表示,uh为第h个通道的用户兴趣特征子空间的向量表示,即[u1;u2;...;uk]中的第h个元素,tanh为激活函数,vu、vu为学习参数,au为uh的注意力分数,exp为对数函数,αu为注意力权重,k为用户兴趣特征子空间的个数,即多头自注意力机制的头部数量,s为最终的用户多兴趣特征向量。
[0043]
更优地,所述点击率预测器的构建过程具体如下:
[0044]
对于每一条候选新闻,通过多视角级别的新闻编码器生成其新闻向量n;将从用户多兴趣特征网络获得的最终的用户多兴趣特征向量s和候选新闻向量n通过内积的计算方式得到用户对候选新闻的点击率公式如下:
[0045][0046]
本方法模型尚未进行充分训练时,需要在训练数据集上进行训练,以优化模型参数;当模型训练完毕时,点击率预测器可预测每一条候选新闻的推荐得分,根据得分,推荐合适的新闻给用户。
[0047]
更优地,所述训练数据集的构建过程具体如下:
[0048]
构建新闻数据集或者选择已公开的新闻数据集;
[0049]
预处理新闻数据集:预处理新闻数据集中的每一条新闻文本,去除新闻数据集中的停用词及特殊字符;分别抽取每一条新闻文本的标题、类别、子类别和摘要信息;
[0050]
构建训练正例:使用用户浏览记录中的历史新闻序列和交互行为序列中标签为1的新闻编号,即被用户点击的新闻的编号,构建训练正例;
[0051]
构建训练负例:使用用户浏览记录中的历史新闻序列和交互行为序列中标签为0的新闻编号,即未被用户点击的新闻的编号,构建训练负例;
[0052]
构建训练数据集:将全部的正例数据和负例数据进行组合,并打乱其顺序,构建最终的训练数据集;
[0053]
所述的新闻推荐模型构建完成后通过训练数据集进行新闻推荐模型的训练与优化,具体如下:
[0054]
构建损失函数:使用负采样技术,根据构建训练正例和负例,计算正例的点击率pi;公式如下:
[0055][0056]
其中,yj是第j个负例新闻的点击率,yi是第i个正例新闻的点击率,g是负例的个数。
[0057]
损失函数为所有正例的负对数似然函数,公式如下:
[0058][0059]
其中,是正例的集合。
[0060]
优化训练模型:选择使用adam优化函数作为本模型的优化函数,其中,学习率设置为0.001,平滑常数设置为(0.9,0.999),eps设置为1e-8,l2惩罚值设置为0。
[0061]
一种基于用户多兴趣特征的新闻推荐系统,该系统包括,
[0062]
训练数据集构建单元,首先在线上新闻网站获得用户的浏览记录信息,随后对其进行预处理操作,从而得到符合训练要求的用户浏览记录及其新闻文本内容;训练数据集构建单元包括,
[0063]
原始数据获取单元,负责下载网络上已经公开的新闻网站数据集,将其作为构建训练数据集的原始数据;
[0064]
原始数据预处理单元,负责预处理新闻数据集中的每一条新闻文本,去除新闻数据集中的停用词及特殊字符;分别抽取每一条新闻文本的关键信息,如标题、类别、摘要;从而构建训练数据集;
[0065]
新闻推荐系统模型构建单元,用于载入训练数据集、构建多视角级别的新闻编码模块、构建用户多兴趣特征网络模块以及构建候选新闻预测模块,新闻推荐系统模型构建单元包括,
[0066]
训练数据集载入单元,负责加载训练数据集;
[0067]
多视角级别的新闻编码模块构建单元,负责在训练数据集中训练基于glove词向量模型的新闻向量,并定义所有的新闻向量表示;首先使用多头自注意力机制和加性注意力机制分别编码新闻标题和摘要,得到新闻标题和摘要向量;同时使用全连接层分别编码新闻类别和子类别,得到新闻类别和子类别向量;再将新闻标题、摘要、类别和子类别向量进行联接并输入到加性注意力机制中,得到最终的新闻向量;
[0068]
用户多兴趣特征网络模块构建单元,负责根据新闻向量构建基于多头自注意力机制的用户多兴趣特征向量;首先多头自注意力机制根据最终的新闻向量编码,得到上下文特征向量;由门控循环单元网络组成每一个通道,每一个通道负责处理一个上下文特征向量的子空间特征向量,捕获用户的某一种兴趣,多个通道共同处理全部的上下文特征向量的子空间特征向量,共同捕获用户的多种兴趣;将多个通道的输出进行联接再使用加性注意力机制处理,得到用户多兴趣特征向量;
[0069]
候选新闻预测模块构建单元,负责,将用户多兴趣特征向量和候选新闻向量作为输入,通过点积运算生成每个候选新闻的得分即点击率,然后将所有候选新闻依据点击率大小由高到低进行排序,将top-k条新闻推荐给用户;
[0070]
新闻推荐系统模型训练单元,用于构建模型训练过程中所需要的损失函数,并完成模型的优化训练;新闻推荐模型训练单元包括,
[0071]
损失函数构建单元,负责计算预测的候选新闻与真实的目标新闻之间的误差;
[0072]
模型训练优化单元,负责训练并调整模型训练中的参数,减小预测误差。
[0073]
一种存储介质,其中存储有多条指令,其特征在于,所述指令由处理器加载,执行上述的基于用户多兴趣特征的新闻推荐方法的步骤。
[0074]
一种电子设备,其特征在于,所述电子设备包括:
[0075]
上述的存储介质;以及
[0076]
处理器,用于执行所述存储介质中的指令。
[0077]
本发明的基于用户多兴趣特征的智能新闻推荐方法和系统具有以下优点:
[0078]
(一)本发明提出基于用户多兴趣特征的智能新闻推荐方法,挖掘新闻中潜在的文本语义信息而捕获用户多兴趣特征;相比于现有方法的基于单一用户兴趣的特征表示,该方法能够从多个方面的兴趣而增强用户的特征表示,进而提升新闻推荐的准确性,增加新闻推荐内容的多样性。
[0079]
(二)本发明通过多视角级别的新闻编码器,可以从多个视角对新闻的内容表示进行特征抽取,并建立基于多视角级别的新闻表示,从而得到更准确的新闻表示。
[0080]
(三)本发明通过用户多兴趣特征网络,可以对用户浏览记录中的新闻嵌入表示进行特征抽取,并建立基于多兴趣特征的用户表示,从而得到更准确的用户表示。
[0081]
(四)本发明通过点击率预测器,可以根据准确的新闻表示和用户表示,准确地输出候选新闻序列的预测分数,提高新闻推荐的准确率。
附图说明
[0082]
下面结合附图对本发明进一步说明。
[0083]
图1为基于用户多兴趣特征的智能新闻推荐方法的流程图;
[0084]
图2为构建新闻推荐模型的训练数据集的流程图;
[0085]
图3为构建基于用户多兴趣特征的新闻推荐模型的流程图;
[0086]
图4为训练基于用户多兴趣特征的新闻推荐模型的流程图;
[0087]
图5为基于用户多兴趣特征的新闻推荐模型的示意图;
[0088]
图6为多视角级别的新闻编码器的示意图。
具体实施方式
[0089]
参照说明书附图和具体实施例对本发明的基于用户多兴趣特征的智能新闻推荐方法和系统作以下详细地说明。
[0090]
实施例1:
[0091]
本发明的总体模型框架如图5所示。由图5可知,本发明的主要框架结构包含多视角级别的新闻编码器、用户多兴趣特征网络、点击率预测器。其中,多视角级别的新闻编码器,如图6所示,首先使用多头注意力机制和加性注意力机制分别编码新闻标题和摘要,得到新闻标题和摘要向量;同时使用全连接层分别编码新闻类别和子类别,得到新闻类别和子类别向量;再将新闻标题、摘要、类别和子类别向量进行联接并输入到加性注意力机制中,得到最终的新闻向量。用户多兴趣特征网络,包括多头注意力机制和多个门控循环单元网络通道;首先多头注意力机制根据最终的新闻向量表示编码,得到上下文特征向量;由门控循环单元网络组成每一个通道,每一个通道负责处理一个上下文特征向量的子空间特征向量,捕获用户的某一种兴趣,多个通道共同处理全部的上下文特征向量的子空间特征向量,共同捕获用户的多种兴趣;将多个通道的输出进行联接再使用加性注意力机制处理,得到用户多兴趣特征向量。点击率预测器,将用户多兴趣特征向量和候选新闻向量作为输入,通过点积运算生成每个候选新闻的得分即点击率,然后将所有候选新闻依据点击率大小由高到低进行排序,将top-k条新闻推荐给用户。以上所述为本模型发明的结构简介。
[0092]
实施例2:
[0093]
如附图1所示,本发明的基于用户多兴趣特征的智能新闻推荐方法,该方法具体如下:
[0094]
s1、构建新闻推荐模型的训练数据集:新闻数据集包含两部分数据文件:用户浏览记录和新闻文本内容;其中,用户浏览记录包含用户编号、时间、历史新闻序列、交互行为序列;新闻文本内容包含新闻编号、类别、子类别、标题、摘要、实体;选取用户浏览记录中历史新闻序列和交互行为序列构建训练数据集的用户行为数据,选取新闻文本内容的标题、类别、子类别、摘要构建训练数据集的新闻文本数据;其中,用户行为数据将用于用户多兴趣特征的提取,新闻文本内容数据将用于新闻特征的提取;构建训练数据集的方法具体如下:
[0095]
s101、构建新闻数据集或者选择已公开的新闻数据集。
[0096]
举例:下载网络上microsoft已经公开的mind新闻数据集,将其作为新闻推荐的原始数据。mind是目前最大的英文新闻推荐系统数据集,包含20万个类别的1,000,000用户和161,013条新闻,分为训练集、验证集和测试集。mind数据集同时提供了新闻文本内容的详细信息。每个新闻都有新闻编号、链接、标题、摘要、类别和实体:
[0097][0098][0099]
另外,mind数据集也提供了用户浏览记录,每条记录都包含用户编号、时间、历史新闻序列、交互行为序列:
[0100][0101]
其中,用户编号表示每一个用户在新闻平台唯一的编号;时间表示用户点击浏览一系列新闻的开始时间;历史新闻序列表示用户浏览过的一系列新闻编号的序列;交互行为序列表示用户在系统推荐的一系列新闻上的实际交互行为,1表示点击,0表示未点击。
[0102]
s102、预处理新闻数据集:预处理新闻数据集中的每一条新闻文本,去除新闻数据集中的停用词及特殊字符;分别抽取每一条新闻文本的标题、类别、子类别和摘要信息。
[0103]
s103、构建训练正例:使用用户浏览记录中的历史新闻序列和交互行为序列中标签为1的新闻编号,即被用户点击的新闻的编号,构建训练正例。
[0104]
举例:对步骤s101中展示的新闻实例,构建的正例数据形式化为:(n29038,n15201,n8018,n32012,n30859,n26552,n25930)。其中最后一个编号为被用户点击的新闻的编号。
[0105]
s104、构建训练负例:使用用户浏览记录中的历史新闻序列和交互行为序列中标签为0的新闻编号,即未被用户点击的新闻的编号,构建训练负例。
[0106]
举例:对步骤s101中展示的新闻实例,构建的负例数据形式化为:(n29038,n15201,n8018,n32012,n30859,n26552,n17825)。其中最后一个编号为未被用户点击的新闻的编号。
[0107]
s105、构建训练数据集:将经过步骤s103和步骤s104操作后所获得的全部的正例数据和负例数据进行组合,并打乱其顺序,构建最终的训练数据集。
[0108]
s2、构建基于用户多兴趣特征的新闻推荐模型:如附图3所示,基于用户多兴趣特征的新闻推荐模型由三部分组成,即多视角级别的新闻编码器、用户多兴趣特征网络、点击率预测器;首先构建多视角级别的新闻编码器,对用户浏览记录和候选的每一条新闻进行编码,分别得到用户浏览记录的新闻向量表示和候选新闻向量表示;再构建用户多兴趣特征网络,将用户浏览记录的新闻向量表示输入到多头自注意力模块中,得到上下文特征向量,再将上下文特征向量输入到每一个由门控循环单元组成的通道中,捕获用户的潜在兴趣,再将各条通道的输出联接并经过加性注意力机制得到用户多兴趣特征向量;最后,构建点击率预测器,根据候选新闻向量和用户多兴趣特征向量,计算用户对每一条候选新闻的点击率;将所有候选新闻依据点击率大小由高到低进行排序,将top-k条新闻推荐给用户。如附图5所示,具体如下:
[0109]
s201、构建多视角级别的新闻编码器,以新闻的标题、摘要、类别和子类别信息作为输入,分别从上述四类信息的视角学习新闻特征表示;如附图6所示,具体如下;
[0110]
s20101、从新闻标题的视角学习新闻特征表示,以新闻标题作为输入;嵌入层负责针对数据集中新闻标题的每一个单词构建单词映射表,并将表中每一个单词映射成唯一的数字标识,映射规则为:以数字1为起始,随后按照每个单词被录入单词映射表的顺序依次递增排序,从而形成单词映射转换表;使用glove预训练语言模型,得到每个单词的词向量表示;将每一个新闻标题t=[w1,w2,...,wm]转换成词向量表示,其中wm表示标题中的第m个单词,记为e=[e1,e2,...,em],其中,m表示一个新闻标题的长度,em表示第m个单词的向量表示。
[0111]
举例:可借助预训练词向量glove,将每一个新闻标题t=[w1,w2,...,wm]转换成词向量表示,表示为e=[e1,e2,...,em]。
[0112]
s20102、针对从步骤s20101获得的新闻标题的词向量表示e=[e1,e2,...,em],使用多头自注意力机制进行特征提取,得到上下文特征向量[h1,h2,h3,...,hm],公式如下:
[0113]
[h1,h2,h3,...,hm]=multiheadattention(e);
[0114]
其中,hm表示上下文特征向量中第m个单词的向量表示,multiheadattention表示
多头自注意力机制函数。
[0115]
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
[0116]
self.multihead_self_attention=multiheadselfattention(word_embedding_dim,num_attention_heads)
[0117]
title_vector=f.dropout(self.word_embedding(torch.stack(news[

title

],dim=1).to(device)),
[0118]
p=self.config.dropout_probability,
[0119]
training=self.training)
[0120]
multihead_text_vector=self.multihead_self_attention(title_vector)
[0121]
其中,multiheadselfattention、f.dropout为pytorch中内置的多头自注意力方法和防止训练过拟合的方法,title_vector为标题经过预训练词向量处理的标题向量,multihead_text_vector为上下文特征向量,word_embedding_dim和num_attention_heads分别为向量维度300和多头自注意力机制的头部数量15,self.config.dropout_probability为自定义的训练参数0.2。
[0122]
s20103、以上下文特征向量[h1,h2,h3,...,hm]为输入,使用加性注意力机制进一步提取关键特征,得到最终的新闻标题向量表示n
t
,公式如下:
[0123][0124][0125][0126]
其中,是由上下文特征向量得到的注意力查询向量,v和v是从训练过程中学到的参数,运算符
×
为矩阵乘法,tanh为一种激活函数,a
l
是第l个单词的注意力分值,a
l
是第l个单词的注意力权重,m是上下文特征向量[h1,h2,h3,...,hm]的长度。
[0127]
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
[0128]
self.title_attention=additiveattention(config.query_vector_dim,config.num_filters)title_vector=self.title_attention(multihead_text_vector)
[0129]
其中,self.title_attention即additiveattention是根据加性注意力机制而自定义的函数,title_vector为最终的标题向量,config.query_vector_dim和config.num_filters为自定义的向量维度参数。
[0130]
s20104、从新闻摘要的视角学习新闻特征表示,以新闻摘要作为输入,具体实施方式同步骤s20101到步骤s20103,之后得到摘要向量表示na。
[0131]
s20105、从新闻分类的视角学习新闻特征表示,以新闻类别和子类别作为输入;通过词向量方法将新闻类别和子类别信息分别映射到低维空间向量得到每个类别的词向量表示ec和e
sc
,然后使用激活函数relu生成类别的最终向量表示nc和n
sc
,公式如下:
[0132]
nc=relu(vc×
ec vc);
[0133]nsc
=relu(v
sc
×esc
v
sc
);
[0134]
其中,relu是一种激活函数,vc和vc是从训练过程中学到的参数,运算符
×
为矩阵乘法。
[0135]
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
[0136]
self.category_embedding=nn.embedding(config.num_categories,config.category_embedding_dim,padding_idx=0)
[0137]
self.category_linear=nn.linear(config.category_embedding_dim,config.num_filters)
[0138]
self.subcategory_linear=nn.linear(config.category_embedding_dim,config.num_filters)
[0139]
category_vector=self.category_embedding(news[

category

].to(device))
[0140]
activated_category_vector=f.relu(self.category_linear(category_vector))
[0141]
subcategory_vector=self.category_embedding(news[

subcategory

].to(device))
[0142]
activated_subcategory_vector=f.relu(self.subcategory_linear(subcategory_vector))
[0143]
其中,nn.embedding、nn.linear、f.relu分别为pytorch中内置的词向量嵌入方法、全连接层方法和激活函数。config.num_categories、config.category_embedding_dim和config.num_filters为自定义的向量维度参数,activated_category_vector和activated_subcategory_vector分别为最终生成的类别向量表示nc和子类别向量表示n
sc

[0144]
s20106、从全部新闻内容的视角学习新闻特征表示,针对标题、摘要、类别和子类别的向量表示n
t
、na、nc和n
sc
,经过联接操作得到多视角级别的新闻表示rn,然后通过加性注意力机制得到最终的新闻向量n,公式如下:
[0145]rn
=[n
t
;na;nc;n
sc
];
[0146][0147][0148][0149]
其中,符号;表示联接操作,是注意力查询向量,vn、vn为计算多视角级别新闻表示的注意力分数aq的参数,tanh为激活函数,运算符
×
为矩阵乘法,为每个视角的向量表示,即前述的n
t
、na、nc和n
sc
;exp为对数函数运算,m为视角的个数,即4个,αq是多视角级别新闻表示的注意力权重。
[0150]
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
[0151]
self.final_attention=additiveattention(config.query_vector_dim,config.num_filters,writer,

train/newsattentionweight

,[

category



subcategory



title



abstract

])
[0152]
stacked_news_vector=torch.stack([activated_category_vector,activated_subcategory_vector,weighted_title_vector,weighted_abstract_vector],dim=1)
[0153]
news_vector=self.final_attention(stacked_news_vector)
[0154]
其中,self.final attention为本发明根据加性注意力机制的原理自定义的方法,config.query_vector_dim、config.num_filters、writer为自定义的参数变量,weighted_title_vector、weighted_abstract_vector、activated_category_vector、activated_subcategory_vector分别为标题、摘要、类别和子类别的向量表示n
t
、na、nc和n
sc
,news_vector为最终的新闻向量n。
[0155]
s202、构建用户多兴趣特征网络,以步骤s20106基于用户浏览记录生成的新闻向量为输入,使用多头自注意力机制、加性注意力机制和多通道的门控循环单元网络得到用户多兴趣特征向量;如附图5所示,具体如下:
[0156]
s20201、针对多视角级别的新闻编码器基于用户浏览记录得到的新闻向量n,使用多头自注意力机制提取用户在不同特征子空间上的兴趣特征,公式如下:
[0157]
[d1,d2,...di,...,dk]=multiheadattention(n);
[0158]
其中,[d1,d2,...di,...,dk]表示在不同特征子空间的兴趣特征向量,k为多头自注意力机制的头部数量,di为第i个多头自注意力机制的头部输出的特征子空间的向量表示,multiheadattention为多头自注意力机制的函数表示。
[0159]
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
[0160]
self.multihead_self_attention=multiheadselfattention(word_embedding_dim,num_attention_heads)
[0161]
multihead_user_vector=self.multihead_self_attention(user_vector)
[0162]
其中,multiheadselfattention为pytorch中内置的多头自注意力方法,word_embedding_dim和num_attention_heads分别为向量维度和多头自注意力机制的头部数量参数,user_vector为用户浏览历史新闻向量,multihead_user_vector为用户上下文特征向量。
[0163]
s20202、针对不同特征子空间的兴趣特征向量[d1,d2,...di,...,dk],将该兴趣特征向量分别按照顺序从低到高依次输入到对应的门控循环单元网络通道中进行处理;经过一个通道的处理,捕获用户的一个兴趣特征,得到用户的一个兴趣特征子空间的向量表示;公式如下:
[0164]
ui=gru(di);
[0165]
其中,gru为门控循环单元网络的函数表示,di为第i个兴趣特征的向量表示,即第i个多头自注意力机制的头部输出的特征子空间的向量表示,ui为一个用户的第i个兴趣特征子空间的向量表示。
[0166]
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
[0167]
self.gru=nn.gru(int(config.num_filters/config.layers),int(config.num_filters/config.layers))
[0168]
其中,nn.gru为pytorch框架内嵌的门控循环单元网络函数,int(config.num_
filters/config.layers)为输入的向量维度大小。
[0169]
s20203、经过步骤s20202中多个通道并行处理后,捕获用户的多种兴趣特征,得到不同兴趣特征子空间的向量表示;将这些向量表示联接,然后使用加性注意力机制进一步处理,获得最终的用户多兴趣特征向量。公式如下:
[0170]
u=[u1;u2;...;uk];
[0171][0172][0173][0174]
其中,uk为用户的第k个兴趣特征子空间的向量表示,;为联接操作符号,u为多个通道的用户兴趣特征表示,uh为第h个通道的用户兴趣特征子空间的向量表示,即[u1;u2;...;uk]中的第h个元素,tanh为激活函数,vu、vu为学习参数,au为uh的注意力分数,exp为对数函数,αu为注意力权重,k为用户兴趣特征子空间的个数,即多头自注意力机制的头部数量,s为最终的用户多兴趣特征向量。
[0175]
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
[0176]
self.multi_channel_gru=nn.modulelist([self.gru for i in range(self.config.layers)])for n,g in zip(range(self.config.layers),self.multi_channel_gru):
[0177]
packed_clicked_news_vector=pack_padded_sequence(one_channel[n],clicked_news_length)
[0178]
_,last_hidden=g(packed_clicked_news_vector)channels.append(last_hidden)
[0179]
multi_channel_vector=torch.cat(channels,dim=2).transpose(0,1)final_user_vector=self.additive_attention(multi_channel_vector)
[0180]
其中,nn.modulelist为pytorch框架内嵌的模型组件功能函数,self.config.layers为门控循环单元网络的通道数,pack_padded_sequence为pytorch内嵌的数据压缩功能函数,one_channel[n]为输入的向量参数,clicked_news_length为输入的序列长度,torch.cat为联接操作函数,self.additive_attention为加性注意力机制函数,final_user_vector为最终的用户多兴趣特征向量。
[0181]
s203、构建点击率预测器:对于每一条候选新闻,通过步骤s201生成其新闻向量n;将步骤s202获得的最终的用户多兴趣特征向量s和候选新闻向量n通过内积的计算方式得到用户对候选新闻的点击率公式如下:
[0182][0183]
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
[0184]
probability=torch.bmm(candidate_news_vector,user_vector.unsqueeze(dim=-1)).squeeze(dim=-1)
[0185]
其中,torch.bmm为pytorch框架中内嵌的内积运算函数,candidate_news_vector为候选新闻向量,user_vector为用户多兴趣特征向量。
[0186]
s3、训练基于用户多兴趣特征的新闻推荐模型,在步骤s1得到的训练数据集上对步骤s2构建的基于用户多兴趣特征的新闻推荐模型进行训练,以优化模型参数:如附图4所示,具体如下:
[0187]
s301、构建损失函数:使用负采样技术,根据步骤s103和s104构建训练正例和负例,计算正例的点击率pi;公式如下:
[0188][0189]
其中,yj是第j个负例新闻的点击率,yi是第i个正例新闻的点击率,g是负例的个数。
[0190]
损失函数为所有正例的负对数似然函数,公式如下:
[0191][0192]
其中,是正例的集合。
[0193]
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
[0194]
loss=torch.stack([x[0]for x in
ꢀ‑
f.log_softmax(y_pred,dim=1)]).mean()
[0195]
其中,f.log_softmax为pytorch内置的负对数似然损失函数,y_pred为点击率pi。
[0196]
s302、优化训练模型:选择使用adam优化函数作为本模型的优化函数,其中,学习率设置为0.001,平滑常数设置为(0.9,0.999),eps设置为1e-8,l2惩罚值设置为0。
[0197]
在实验中,本发明选取roc曲线下的面积auc、平均倒数排名mrr、累计增益ndcg作为评价指标。
[0198]
举例说明:上面描述的优化函数在pytorch中使用代码表示为:
[0199]
optimizer=torch.optim.adam(model.parameters(),1r=learning_rate)
[0200]
其中,torch.optim.adam为pytorch内嵌的adam优化函数,model.parameters()为模型训练的参数集合,learning_rate为学习率。
[0201]
本发明的模型在mind公开数据集上取得了优于当前模型的结果,实验结果的对比具体见下表:
[0202]
[0203]
本发明模型和现有模型进行了比较,可见本发明方法较其他方法其性能最优。其中,dkn出自文献《dkn:deep knowledge-aware network for news recommendation》,hi-fi ark出自文献《hi-fi ark:deep user representation via high-fidelity archive network》,tanr出自文献《neural news recommendation with topic-aware news representation》。
[0204]
实施例3:
[0205]
基于实施例2构建基于用户多兴趣特征的新闻推荐系统,该系统包括:
[0206]
训练数据集构建单元,首先在线上新闻网站获得用户的浏览记录信息,随后对其进行预处理操作,从而得到符合训练要求的用户浏览记录及其新闻文本内容;训练数据集构建单元包括,
[0207]
原始数据获取单元,负责下载网络上已经公开的新闻网站数据集,将其作为构建训练数据集的原始数据;
[0208]
原始数据预处理单元,负责预处理新闻数据集中的每一条新闻文本,去除新闻数据集中的停用词及特殊字符;分别抽取每一条新闻文本的关键信息,如标题、类别、摘要;从而构建训练数据集;
[0209]
新闻推荐系统模型构建单元,用于载入训练数据集、构建多视角级别的新闻编码模块、构建用户多兴趣特征网络模块以及构建候选新闻预测模块,新闻推荐系统模型构建单元包括,
[0210]
训练数据集载入单元,负责加载训练数据集;
[0211]
多视角级别的新闻编码模块构建单元,负责在训练数据集中训练基于glove词向量模型的新闻向量,并定义所有的新闻向量表示;首先使用多头自注意力机制和加性注意力机制分别编码新闻标题和摘要,得到新闻标题和摘要向量;同时使用全连接层分别编码新闻类别和子类别,得到新闻类别和子类别向量;再将新闻标题、摘要、类别和子类别向量进行联接并输入到加性注意力机制中,得到最终的新闻向量;
[0212]
用户多兴趣特征网络模块构建单元,负责根据新闻向量构建基于多头自注意力机制的用户多兴趣特征向量;首先多头自注意力机制根据最终的新闻向量编码,得到上下文特征向量;由门控循环单元网络组成每一个通道,每一个通道负责处理一个上下文特征向量的子空间特征向量,捕获用户的某一种兴趣,多个通道共同处理全部的上下文特征向量的子空间特征向量,共同捕获用户的多种兴趣;将多个通道的输出进行联接再使用加性注意力机制处理,得到用户多兴趣特征向量;
[0213]
候选新闻预测模块构建单元,负责,将用户多兴趣特征向量和候选新闻向量作为输入,通过点积运算生成每个候选新闻的得分即点击率,然后将所有候选新闻依据点击率大小由高到低进行排序,将top-k条新闻推荐给用户;
[0214]
新闻推荐系统模型训练单元,用于构建模型训练过程中所需要的损失函数,并完成模型的优化训练;新闻推荐模型训练单元包括,
[0215]
损失函数构建单元,负责计算预测的候选新闻与真实的目标新闻之间的误差;
[0216]
模型训练优化单元,负责训练并调整模型训练中的参数,减小预测误差。
[0217]
实施例4:
[0218]
基于实施例2的存储介质,其中存储有多条指令,指令有处理器加载,执行实施例2
的基于用户多兴趣特征的智能新闻推荐方法的步骤。
[0219]
实施例5:
[0220]
基于实施例4的电子设备,电子设备包括:实施例4的存储介质;以及处理器,用于执行实施例4的存储介质中的指令。
[0221]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
再多了解一些

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

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

相关文献