公开/公告号CN114943034A
专利类型发明专利
公开/公告日2022-08-26
原文格式PDF
申请/专利权人 齐鲁工业大学;
申请/专利号CN202210619313.X
申请日2022-06-01
分类号G06F16/9535(2019.01);G06F16/33(2019.01);G06F40/30(2020.01);G06K9/62(2022.01);G06N3/04(2006.01);G06N3/08(2006.01);
代理机构济南信达专利事务所有限公司 37100;
代理人孙园园
地址 250353 山东省济南市长清区大学路3501号齐鲁工业大学
入库时间 2023-06-19 16:31:45
法律状态公告日
法律状态信息
法律状态
2022-09-13
实质审查的生效 IPC(主分类):G06F16/9535 专利申请号:202210619313X 申请日:20220601
实质审查的生效
技术领域
本发明涉及人工智能和自然语言处理领域,具体涉及一种基于细粒度方面特征的智能新闻推荐方法和系统。
背景技术
随着互联网技术的快速发展,越来越多的用户喜欢通过搜狐、新浪和今日头条等在线新闻平台阅读新闻。尽管这些平台尝试为用户提供个性化的新闻推荐服务,但它们仍然不可避免地受到推荐结果不准确和内容缺乏多样性等问题的困扰。这些问题会影响用户的阅读体验。解决上述问题的关键是对新闻文本和用户兴趣进行精准地建模,即准确地捕捉新闻文本特征和用户兴趣特征。
目前,现有的新闻推荐方法多数是面向主题(Topic-level)级别的特征信息,而没有考虑细粒度方面(Aspect-level)级别的特征信息。现有的新闻推荐方法通常依照新闻主题(Topic)分类信息建立主题级别的新闻文本特征和用户兴趣表示,进而执行主题级别的推荐任务。尽管这些方法在新闻推荐任务中一定程度地提升了推荐结果的准确度,但是它们都忽略了新闻中细粒度方面级别的特征信息;仅在主题级别上对新闻文本和用户兴趣建模,往往无法准确地捕捉新闻文本特征和用户兴趣特征,这不可避免地会影响到新闻推荐结果的准确性和内容的多样性。
发明内容
本发明的技术任务是提供一种基于细粒度方面特征的智能新闻推荐方法和系统,来解决新闻推荐系统中推荐结果不准确和内容缺乏多样性的问题。
基于细粒度方面特征的智能新闻推荐方法和系统具有以下优点:
(一)本发明提出了基于细粒度方面特征的智能新闻推荐方法,使用了新闻内容潜在的方面级别的(Aspect-level)信息,相比于现有方法的基于主题级别信息的特征表示,能够从细粒度的方面级别上增强新闻和用户的特征表示,进而提升新闻推荐的准确性,增加新闻推荐内容的多样性。
(二)本发明通过Aspect-level新闻编码器,可以对新闻的嵌入表示进行特征抽取,并建立基于细粒度方面特征的新闻表示,从而得到更准确的新闻表示。
(三)本发明通过Aspect-level用户编码器,可以对用户浏览记录中的新闻嵌入表示进行特征抽取,并建立基于细粒度方面特征的用户表示,从而得到更准确的用户表示。
(四)本发明通过点击率预测器,可以根据准确的新闻表示和用户表示,准确地输出候选新闻序列的预测分数。
作为优选,Aspect-level新闻编码器的构建过程如下:
Aspect-level新闻编码器,具体的,包括构建新闻特征提取器、构建Aspect-level特征提取器;
构建新闻特征提取器,包括四个模块:标题学习模块、摘要学习模块、分类学习模块和注意力模块,具体如下:
构建标题学习模块:针对数据集中每一个单词构建单词映射表,并将表中每一个单词映射成唯一的数字标识,映射规则为:以数字1为起始,随后按照每个单词被录入单词映射表的顺序依次递增排序,从而形成单词映射转换表;使用Glove预训练语言模型,得到每个单词的词向量表示;在嵌入层将每一个新闻标题T=[w
针对E=[e
c
其中,i表示相应词向量在新闻标题中的相对位置,k表示距离i相对位置的差值,e
对上下文特征向量[c
a
其中,q是由上下文特征向量得到的注意力查询向量,V和v是从训练过程中学到的参数,tanh为一种激活函数,运算符×为矩阵乘法,exp为对数函数运算,a
构建摘要学习模块:具体步骤同构建标题学习模块,得到摘要向量r
构建分类学习模块:在嵌入层通过词向量方法将主类别标签和子类别标签分别映射到低维空间向量得到每个类别标签的词向量表示e
r
r
其中,ReLU是一种激活函数,V
构建注意力模块:针对标题、摘要、主类别标签和子类别标签的向量r
其中,V
最终的新闻特征向量r由标题向量r
r=[α
其中,符号;表示联接操作。
构建Aspect-level特征提取器:
在嵌入层,针对每一条新闻的词向量表示,通过计算加权平均值的方式得到其全局词向量表示,然后使用单词级别的注意力机制重新构建新闻向量,得到基于注意力的新闻向量表示z
其中,e
针对所有新闻的词向量,使用特征聚类算法——K-means得到细粒度方面特征矩阵A,然后通过矩阵乘法重构基于注意力的新闻向量表示z
p=softmax(W
r
其中,W
最后,通过联接新闻特征向量r和基于细粒度方面特征的新闻向量r
n=[r;r
更优地,所述Aspect-level用户编码器的构建过程具体如下:
构建Aspect-level用户编码器,具体的,包括新闻特征提取器、Aspect-level特征提取器和用户兴趣提取器;其中,新闻特征提取器和Aspect-level特征提取器的过程与上述相同,在此不再赘述。
构建用户兴趣提取器:针对用户浏览记录,通过新闻特征提取器得到新闻特征向量k;再使用Aspect-level特征提取器构建基于细粒度方面特征的新闻向量k
n′=[k;k
针对用户浏览记录表示n′,使用句子级别的注意力机制得到Aspect-level用户向量表示u。公式如下:
其中,q
更优地,所述点击率预测器的构建过程具体如下:
对于每一条候选新闻,将Aspect-level新闻向量表示和Aspect-level用户向量表示经过向量内积计算得到最后的点击率分数。公式如下:
y=n
本方法模型尚未进行充分训练时,需要在训练数据集上进行训练,以优化模型参数;当模型训练完毕时,点击率预测器可预测每一条候选新闻的推荐得分,根据得分,推荐合适的新闻给用户。
更优地,所述训练数据集的构建过程具体如下:
构建新闻数据集或者选择已公开的新闻数据集;
预处理新闻数据集:预处理新闻数据集中的每一条新闻文本,去除新闻数据集中的停用词及特殊字符;分别抽取每一条新闻文本的标题、主类别、子类别和摘要信息;
构建训练正例:使用用户浏览记录中的历史新闻序列和交互行为序列中标签为1的新闻编号,即被用户点击的新闻的编号,构建训练正例;
构建训练负例:使用用户浏览记录中的历史新闻序列和交互行为序列中标签为0的新闻编号,即未被用户点击的新闻的编号,构建训练负例;
构建训练数据集:将全部的正例数据和负例数据进行组合,并打乱其顺序,构建最终的训练数据集;
所述的新闻推荐模型构建完成后通过训练数据集进行新闻推荐模型的训练与优化,具体如下:
采用负采样技术,将一个用户的已点击的新闻定义为正样例,没有点击过的新闻定义为负样例,计算正样例的点击预测值p
其中,
新闻推荐的损失函数为所有正样例的负对数似然函数,公式如下:
其中,
同时,为确保模型获取的Aspect特征的质量,设计了针对Aspect-level特征提取器的损失函数,公式如下:
其中,G是负样例的个数,
将新闻推荐方法的损失函数U(θ)和Aspect-level特征提取器的损失函数J(θ)相加得到整个模型的损失函数,公式如下:
L=U(θ)+J(θ)。
优化训练模型:选择使用Adam优化函数作为本模型的优化函数,其中,学习率设置为0.001,平滑常数设置为(0.9,0.999),eps设置为1e-8,L2惩罚值设置为0。
一种基于细粒度方面特征的智能新闻推荐系统,该系统包括,
训练数据集生成单元,首先在线上新闻网站获得用户的浏览记录信息,随后对其进行预处理操作,从而得到符合训练要求的用户浏览记录及其新闻文本内容;训练数据集生成单元包括,
原始数据获取单元,负责下载网络上已经公开的新闻网站数据集,将其作为构建训练数据集的原始数据;
原始数据预处理单元,负责预处理新闻数据集中的每一条新闻文本,去除新闻数据集中的停用词及特殊字符;分别抽取每一条新闻文本的关键信息,如标题、类别、摘要;从而构建训练数据集;
基于细粒度方面特征的新闻推荐模型构建单元,用于载入训练数据集、构建Aspect-level新闻编码模块、构建Aspect-level用户编码模块以及构建候选新闻预测模块,基于细粒度方面特征的新闻推荐模型构建单元包括,
训练数据集载入单元,负责加载训练数据集;
Aspect-level新闻编码模块构建单元,负责在训练数据集中训练基于Glove词向量模型的新闻向量,并定义所有的新闻向量表示;首先使用卷积神经网络和注意力机制分别编码新闻标题和摘要,得到新闻标题和摘要向量;同时使用全连接层分别编码新闻主类别和子类别,得到新闻主类别和子类别向量;再将新闻标题、摘要、主类别和子类别向量进行联接并输入到注意力机制中,得到最终的新闻向量;同时,使用嵌入层处理新闻向量,得到嵌入层的新闻向量;再使用K-means算法对嵌入层的新闻向量聚类处理,得到细粒度方面特征矩阵;同时通过注意力机制得到基于注意力的新闻向量,最后通过矩阵乘法操作处理细粒度方面特征矩阵和基于注意力的新闻向量,得到最终的基于细粒度方面特征的新闻向量;将最终的新闻向量和最终的基于细粒度方面特征的新闻向量联接,得到Aspect-level新闻向量;
Aspect-level用户编码模块构建单元,负责根据用户浏览记录构建基于细粒度方面特征的用户向量;其中,用户浏览记录的新闻向量由Aspect-level新闻编码模块构建单元得到,再通过一层注意力网络得到Aspect-level用户向量;
候选新闻预测模块构建单元,负责,将Aspect-level新闻向量和Aspect-level用户向量作为输入,通过向量内积运算生成每个候选新闻的得分即点击率,然后将所有候选新闻依据点击率大小由高到低进行排序,将Top-K条新闻推荐给用户;
模型训练单元,用于构建模型训练过程中所需要的损失函数,并完成模型的优化训练;模型训练单元包括,
损失函数构建单元,负责计算预测的候选新闻与真实的目标新闻之间的误差;
模型优化单元,负责训练并调整模型训练中的参数,减小预测误差。
一种存储介质,其中存储有多条指令,其特征在于,所述指令由处理器加载,执行上述的基于细粒度方面特征的智能新闻推荐方法的步骤。
本发明的基于细粒度方面特征的智能新闻推荐方法和系统具有以下优点:
(一)本发明提出了基于细粒度方面特征的智能新闻推荐方法,使用了新闻内容潜在的方面级别的(Aspect-level)信息,相比于现有方法的基于主题级别信息的特征表示,能够从细粒度的方面级别上增强新闻和用户的特征表示,进而提升新闻推荐的准确性,增加新闻推荐内容的多样性。
(二)本发明通过Aspect-level新闻编码器,可以对新闻的嵌入表示进行特征抽取,并建立基于细粒度方面特征的新闻表示,从而得到更准确的新闻表示。
(三)本发明通过Aspect-level用户编码器,可以对用户浏览记录中的新闻嵌入表示进行特征抽取,并建立基于细粒度方面特征的用户表示,从而得到更准确的用户表示。
(四)本发明通过点击率预测器,可以根据准确的新闻表示和用户表示,准确地输出候选新闻序列的预测分数。
附图说明
下面结合附图对本发明进一步说明。
图1为基于细粒度方面特征的智能新闻推荐方法的流程图;
图2为构建新闻推荐模型的训练数据集的流程图;
图3为构建基于细粒度方面特征的新闻推荐模型的流程图;
图4为训练基于细粒度方面特征的新闻推荐模型的流程图;
图5为基于细粒度方面特征的新闻推荐模型的示意图;
图6为新闻特征提取器的示意图;
图7为细粒度方面特征提取器的示意图;
图8为基于细粒度方面特征的智能新闻推荐系统的结构框图。
具体实施方式
参照说明书附图和具体实施例对本发明的基于细粒度方面特征的智能新闻推荐方法和系统作以下详细地说明。
实施例1:
本发明的总体模型框架如图5所示。由图5可知,本发明的主要框架结构包含Aspect-level新闻编码器、Aspect-level用户编码器、点击率预测器。其中,Aspect-level新闻编码器包含新闻特征提取器和Aspect-level特征提取器;新闻特征提取器负责生成新闻向量,如图6所示,首先使用嵌入层、卷积和注意力机制分别编码新闻标题和摘要,得到新闻标题和摘要向量;同时使用嵌入层和全连接层分别编码新闻主类别和子类别,得到新闻主类别和子类别向量;再将新闻标题、摘要、主类别和子类别向量同时输入到注意力机制中,得到最终的新闻向量;Aspect-level特征提取器负责提取新闻的细粒度方面特征,如图7所示,首先使用嵌入层处理新闻词向量,得到嵌入层的新闻向量;再使用K-means算法对新闻向量聚类处理,得到细粒度方面特征矩阵;同时通过注意力机制得到基于注意力的新闻向量,最后通过矩阵乘法操作处理细粒度方面特征矩阵和基于注意力的新闻向量,得到最终的基于细粒度方面特征的新闻向量;将最终的新闻向量和最终的基于细粒度方面特征的新闻向量联接,得到Aspect-level新闻向量表示。Aspect-level用户编码器包含新闻特征提取器、Aspect-level特征提取器和用户兴趣提取器;其中,新闻特征提取器和Aspect-level特征提取器同Aspect-level新闻编码器;用户兴趣提取器包括一层注意力网络,通过该网络可得到Aspect-level用户向量表示。点击率预测器,将Aspect-level新闻向量表示和Aspect-level用户向量表示作为输入,通过向量内积运算生成每个候选新闻的得分即点击率,然后将所有候选新闻依据点击率大小由高到低进行排序,将Top-K条新闻推荐给用户。以上所述为本模型发明的结构简介。
实施例2:
如附图1所示,基于细粒度方面特征的智能新闻推荐方法,该方法具体如下:
S1、构建新闻推荐模型的训练数据集:新闻数据集包含两部分数据文件:用户浏览记录和新闻文本内容;其中,用户浏览记录包含用户编号、时间、历史新闻序列、交互行为序列;新闻文本内容包含新闻编号、主类别、子类别、标题、摘要、实体;选取每个用户的编号和交互行为序列构建训练数据集的用户行为数据,选取新闻文本内容的标题、主类别、子类别、摘要构建训练数据集的新闻文本数据;其中,用户行为数据将用于用户特征提取,新闻文本数据将用于新闻特征提取;构建新闻推荐模型的训练数据集的方法具体如下:
S101、下载新闻推荐系统数据集。
举例:下载网络上Microsoft已经公开的MIND新闻数据集,将其作为新闻推荐的原始数据。MIND是目前最大的英文新闻推荐系统数据集,包含20万个类别的1,000,000用户和161,013条新闻,分为训练集、验证集和测试集。MIND数据集同时提供了新闻文本内容的详细信息。每个新闻都有新闻编号、链接、标题、摘要、类别和实体:
另外,MIND数据集也提供了用户浏览记录,每条记录都包含用户编号、时间、历史新闻序列、交互行为序列:
其中,用户编号表示每一个用户在新闻平台唯一的编号;时间表示用户点击浏览一系列新闻的开始时间;历史新闻序列表示用户浏览过的一系列新闻编号的序列;交互行为序列表示用户在系统推荐的一系列新闻上的实际交互行为,1表示点击,0表示未点击。
S102、预处理新闻数据集:预处理新闻数据集中的每一条新闻文本,去除新闻数据集中的停用词及特殊字符;分别抽取每一条新闻文本的标题、类别、子类别和摘要信息。
S103、构建训练正例:使用用户浏览记录中的历史新闻序列和交互行为序列中标签为1的新闻编号,即被用户点击的新闻的编号,构建训练正例。
举例:对步骤S101中展示的新闻实例,构建的正例数据形式化为:(N29038,N15201,N8018,N32012,N30859,N26552,N25930)。其中最后一个编号为被用户点击的新闻的编号。
S104、构建训练负例:使用用户浏览记录中的历史新闻序列和交互行为序列中标签为0的新闻编号,即未被用户点击的新闻的编号,构建训练负例。
举例:对步骤S101中展示的新闻实例,构建的负例数据形式化为:(N29038,N15201,N8018,N32012,N30859,N26552,N17825)。其中最后一个编号为未被用户点击的新闻的编号。
S105、构建训练数据集:将经过步骤S103和步骤S104操作后所获得的全部的正例数据和负例数据进行组合,并打乱其顺序,构建最终的训练数据集。
S2、构建基于细粒度方面特征的新闻推荐模型:如附图3所示,基于细粒度方面特征的新闻推荐模型由三部分组成,即Aspect-level新闻编码器、Aspect-level用户编码器、点击率预测器;其中,Aspect-level意指细粒度方面特征;首先构建Aspect-level新闻编码器,对新闻中的每一个单词进行向量映射,得到新闻的向量表示,然后通过卷积神经网络和注意力机制得到新闻向量;同时,使用K-means算法和注意力机制处理新闻词向量,从而得到基于细粒度方面特征的新闻向量;最后,将新闻向量和基于细粒度方面特征的新闻向量联接,得到Aspect-level新闻向量;再构建Aspect-level用户编码器,对用户浏览记录中的每一条新闻中的每一个单词依次进行向量映射,得到用户的向量表示,然后通过Aspect-level新闻编码器和注意力机制得到Aspect-level用户向量;最后,构建点击率预测器,根据Aspect-level新闻向量和Aspect-level用户向量,通过向量内积计算每一篇候选新闻的点击率;将所有候选新闻依据点击率由高到低进行排序,将Top-K条新闻推荐给用户。如附图5所示,具体如下:
S201、构建Aspect-level新闻编码器,具体的,包括构建新闻特征提取器、构建Aspect-level特征提取器;
S20101、构建新闻特征提取器,如附图6所示,包括四个模块:标题学习模块、摘要学习模块、分类学习模块和注意力模块,具体如下:
S2010101、构建标题学习模块,具体如下:
S201010101、针对数据集中每一个单词构建单词映射表,并将表中每一个单词映射成唯一的数字标识,映射规则为:以数字1为起始,随后按照每个单词被录入单词映射表的顺序依次递增排序,从而形成单词映射转换表;使用Glove预训练语言模型,得到每个单词的词向量表示;在嵌入层将每一个新闻标题T=[w
举例:可借助预训练词向量Glove,将每一个新闻标题T=[w
S201010102、针对E=[e
c
其中,i表示相应词向量在新闻标题中的相对位置,k表示距离i相对位置的差值,e
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
self.title_CNN=nn.Conv2d(
1,
config.num_filters,
(config.window_size,config.word_embedding_dim),
padding=(int((config.window_size-1)/2),0))
title_vector=F.dropout(self.word_embedding(torch.stack(news['title'],dim=1).to(device)),
p=self.config.dropout_probability,
training=self.training)
convoluted_title_vector=
self.title_CNN(title_vector.unsqueeze(dim=1)).squeeze(dim=3)
activated_title_vector=F.dropout(F.relu(convoluted_title_vector),
p=self.dropout_rate,
training=self.training)
其中,nn.Conv2d、F.dropout为pytorch中内置的卷积神经网络方法和防止训练过拟合的方法,title_vector为标题经过预训练词向量处理的标题向量,convoluted_title_vector为标题向量经过卷积神经网络处理后的上下文特征向量,activated_title_vector为经过激活函数ReLU函数处理后的上下文特征向量。
S201010103、对上下文特征向量[c
a
其中,q是由上下文特征向量得到的注意力查询向量,V和v是从训练过程中学到的参数,tanh为一种激活函数,运算符×为矩阵乘法,exp为对数函数运算,a
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
self.title_attention=AdditiveAttention(config.query_vector_dim,config.num_filters)
weighted_title_vector=self.title_attention(activated_title_vector.transpose(1,2))
其中,self.title_attention即AdditiveAttention是根据注意力机制的原理自定义的方法,weighted_title_vector为标题向量的注意力权重,config.query_vector_dim和config.num_filters为自定义的向量维度参数。
S2010102、构建摘要学习模块:具体步骤同S20101构建标题学习模块,得到摘要向量r
S2010103、构建分类学习模块:
在嵌入层通过词向量方法将主类别标签和子类别标签分别映射到低维空间向量得到每个类别标签的词向量表示e
r
r
其中,ReLU是一种激活函数,V
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
其中,nn.Embedding、nn.Linear、F.relu分别为pytorch中内置的词向量嵌入方法、连接层方法和激活函数。config.category_embedding_dim和config.num_filters为自定义的向量维度参数,activated_category_vector和activated_subcategory_vector分别为最终生成的主类别标签向量r
S2010104、构建注意力模块:针对标题、摘要、主类别标签和子类别标签的向量r
其中,V
最终的新闻特征向量r由标题向量r
r=[α
其中,符号;表示联接操作。
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
其中,self.final_attention为根据注意力机制的原理自定义的方法;weighted_title_vector、weighted_abstract_vector、activated_category_vector、activated_subcategory_vector分别为标题、摘要、主类别标签和子类别标签的向量r
S20102、构建Aspect-level特征提取器,如附图7所示,具体如下:
S2010201、在嵌入层,针对每一条新闻的词向量表示,通过计算加权平均值的方式得到其全局词向量表示,然后使用单词级别的注意力机制重新构建新闻向量,得到基于注意力的新闻向量表示z
其中,e
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
y_s=torch.mean(e_i,dim=-1)
h_i=torch.bmm(e_i.transpose(1,2),self.M(y_s).unsqueeze(2)).tanh()
a_i=torch.exp(h_i)/torch.sum(torch.exp(h_i))
z_d=normalize(torch.bmm(e_i,a_i).squeeze(2),dim=-1).to(device)
其中,torch.mean为平均值运算,torch.bmm为向量内积运算,torch.exp为对数函数运算,normalize为正则化方法。
S2010202、针对所有新闻的词向量,使用特征聚类算法——K-means得到细粒度方面特征矩阵A,然后通过矩阵乘法重构步骤S2010201中的基于注意力的新闻向量表示z
p=softmax(W
r
其中,W
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
p_t=softmax(self.Linear(z_d),dim=1).to(device)
r_d=normalize(torch.mm(self.A.weight.t(),p_t.t()).t(),dim=-1)
其中,softmax为归一化操作,torch.mm为二维矩阵运算,normalize为正则化方法。
S2010203、最后,通过联接新闻特征向量r和基于细粒度方面特征的新闻向量r
n=[r;r
S202、构建Aspect-level用户编码器,具体的,包括新闻特征提取器、Aspect-level特征提取器和用户兴趣提取器。
S20201、新闻特征提取器和Aspect-level特征提取器的过程与步骤S20101和步骤S20102相同,在此不再赘述。
S20202、构建用户兴趣提取器,具体如下:
S2020201、针对用户浏览记录,通过新闻特征提取器得到新闻特征向量k,具体步骤同S20101;再使用Aspect-level特征提取器构建基于细粒度方面特征的新闻向量k
n′=[k;k
S20202、针对用户浏览记录表示n′,使用句子级别的注意力机制得到Aspect-level用户向量表示u。公式如下:
其中,q
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
self.additive_attention=AdditiveAttention(config.query_vector_dim,config.num_filters)
user_vector=self.additive_attention(clicked_news_vector)
其中,self.additive_attention为根据注意力机制的原理自定义的方法,config.query_vector_dim和config.num_filters为自定义的向量维度参数,clicked_news_vector为用户浏览记录表示n′。
S203、构建点击率预测器,将Aspect-level新闻向量表示和Aspect-level用户向量表示经过向量内积计算得到最后的点击率分数。公式如下:
y=n
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
probability=torch.bmm(
user_vector.unsqueeze(dim=1),
candidate_news_vector.unsqueeze(dim=2)).flatten()
其中,torch.bmm为向量内积运算,user_vector为Aspect-level用户向量表示u,candidate_news_vector为Aspect-level新闻向量表示n。
S3、训练模型:如附图4所示,具体如下:
S301、构建损失函数:采用负采样技术,将一个用户的已点击的新闻定义为正样例,没有点击过的新闻定义为负样例,计算正样例的点击预测值p
其中,
新闻推荐的损失函数为所有正样例的负对数似然函数,公式如下:
其中,
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
loss=torch.stack([x[0]for x in-F.log_softmax(y_pred,dim=1)]).mean()
其中,F.log_softmax为pytorch内置的log_softmax损失函数,y_pred为点击预测值p
同时,为确保模型获取的Aspect特征的质量,设计了针对Aspect-level特征提取器的损失函数,公式如下:
其中,G是负样例的个数,
将步骤S301的新闻推荐方法的损失函数U(θ)和Aspect-level特征提取器的损失函数J(θ)相加得到整个模型的损失函数,公式如下:
L=U(θ)+J(θ);
举例说明:在pytorch机器学习框架中,对于上面描述的代码实现如下所示:
pos=torch.bmm(z_s.unsqueeze(1),r_s.unsqueeze(2)).squeeze(2)
negs=torch.mm(z_n,r_s.t()).squeeze(1)
J=torch.ones(negs.shape).to(device)-pos.expand(negs.t().shape).t()+negs
loss+=Config.loss_weight*J
其中,pos、negs分别为正样例和负样例,J为Aspect-level特征提取器的损失函数,Config.loss_weight为自定义的权重参数,loss为整个模型的损失函数。
S302、优化模型:选择使用Adam优化函数作为本模型的优化函数,其中,学习率设置为0.001,平滑常数设置为(0.9,0.999),eps设置为1e-8,L2惩罚值设置为0。
在实验中,本发明选取ROC曲线下的面积AUC、平均倒数排名MRR、累计增益nDCG作为评价指标。
举例说明:上面描述的优化函数在pytorch中使用代码表示为:
optimizer=torch.optim.Adam(model.parameters(),lr=learning_rate)
其中,torch.optim.Adam为pytorch内嵌的Adam优化函数,model.parameters()为模型训练的参数集合,learning_rate为学习率。
本发明的模型在MIND公开数据集上取得了优于当前模型的结果,实验结果的对比具体见下表:
本发明模型和现有模型进行了比较,可见本发明方法较其他方法其性能最优。其中,DKN出自文献《DKN:Deep knowledge-aware network for news recommendation》,Hi-Fi Ark出自文献《Hi-Fi Ark:Deep User Representation via High-Fidelity ArchiveNetwork》,TANR出自文献《Neural news recommendation with topic-aware newsrepresentation》。
实施例3:
基于实施例2构建基于细粒度方面特征的智能新闻推荐系统,该系统包括:
训练数据集生成单元,首先在线上新闻网站获得用户的浏览记录信息,随后对其进行预处理操作,从而得到符合训练要求的用户浏览记录及其新闻文本内容;训练数据集生成单元包括,
原始数据获取单元,负责下载网络上已经公开的新闻网站数据集,将其作为构建训练数据集的原始数据;
原始数据预处理单元,负责预处理新闻数据集中的每一条新闻文本,去除新闻数据集中的停用词及特殊字符;分别抽取每一条新闻文本的关键信息,如标题、类别、摘要;从而构建训练数据集;
基于细粒度方面特征的新闻推荐模型构建单元,用于载入训练数据集、构建Aspect-level新闻编码模块、构建Aspect-level用户编码模块以及构建候选新闻预测模块,基于细粒度方面特征的新闻推荐模型构建单元包括,
训练数据集载入单元,负责加载训练数据集;
Aspect-level新闻编码模块构建单元,负责在训练数据集中训练基于Glove词向量模型的新闻向量,并定义所有的新闻向量表示;首先使用卷积神经网络和注意力机制分别编码新闻标题和摘要,得到新闻标题和摘要向量;同时使用全连接层分别编码新闻主类别和子类别,得到新闻主类别和子类别向量;再将新闻标题、摘要、主类别和子类别向量进行联接并输入到注意力机制中,得到最终的新闻向量;同时,使用嵌入层处理新闻向量,得到嵌入层的新闻向量;再使用K-means算法对嵌入层的新闻向量聚类处理,得到细粒度方面特征矩阵;同时通过注意力机制得到基于注意力的新闻向量,最后通过矩阵乘法操作处理细粒度方面特征矩阵和基于注意力的新闻向量,得到最终的基于细粒度方面特征的新闻向量;将最终的新闻向量和最终的基于细粒度方面特征的新闻向量联接,得到Aspect-level新闻向量;
Aspect-level用户编码模块构建单元,负责根据用户浏览记录构建基于细粒度方面特征的用户向量;其中,用户浏览记录的新闻向量由Aspect-level新闻编码模块构建单元得到,再通过一层注意力网络得到Aspect-level用户向量;
候选新闻预测模块构建单元,负责,将Aspect-level新闻向量和Aspect-level用户向量作为输入,通过向量内积运算生成每个候选新闻的得分即点击率,然后将所有候选新闻依据点击率大小由高到低进行排序,将Top-K条新闻推荐给用户;
模型训练单元,用于构建模型训练过程中所需要的损失函数,并完成模型的优化训练;模型训练单元包括,
损失函数构建单元,负责计算预测的候选新闻与真实的目标新闻之间的误差;
模型优化单元,负责训练并调整模型训练中的参数,减小预测误差。
实施例4:
基于实施例2的存储介质,其中存储有多条指令,指令有处理器加载,执行实施例2的基于细粒度方面特征的智能新闻推荐方法的步骤。
实施例5:
基于实施例4的电子设备,电子设备包括:实施例4的存储介质;以及处理器,用于执行实施例4的存储介质中的指令。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
机译: 使用人工智能发言人的基于情绪的个性化新闻推荐系统
机译: 使用人工智能发言人的基于情绪的个性化新闻推荐系统
机译: 智能设备的场景模式推荐方法,智能设备的场景模式推荐设备,基于场景模式的智能设备控制方法,基于场景模式的智能设备控制设备,程序和记录介质