基于知识图谱具有可解释性的论文推荐方法及系统、终端

文档序号:24641107发布日期:2021-04-09 20:54阅读:186来源:国知局
基于知识图谱具有可解释性的论文推荐方法及系统、终端

本发明涉及推荐系统技术领域,具体地,涉及一种基于知识图谱具有可解释性的论文推荐方法及系统、终端。



背景技术:

随着大数据时代的来临,各个领域的数据量出现了井喷式的增长,内容的消费者面临的问题在于,从以前的“无内容可消费”,转变成“内容太多,不知道选择什么消费”,推荐系统就在这个场景下应运而生,从浩如烟海的物品中,为用户推荐其最可能喜欢的物品。

推荐系统通过建立模型,并且学习大量已有的用户对物品的交互数据,如用户对物品的点击、浏览、收藏、分享、评分等行为,从而了解每个用户的偏好画像,进而可以给用户推荐其没有见过的但可能感兴趣的物品,从而解决用户选择困难症的问题。

推荐系统按推荐原则划分,可以分为基于相似度的推荐,基于模型的推荐以及基于知识的推荐,前两者在过去的十年间产生了大量算法,最经典的当属基于协同过滤的推荐方法,这一方法通过分解用户对物品的评分矩阵,形成若干隐形特征,从而将具有相似隐形特征的物品推荐给同样具有该特征的用户。这一算法也在诸多各个领域产生了很好的效果,如电子商务、内容社区、社交网络等。

然而,这一算法的局限性在于,其推荐内容的依据的可解释性较弱,无法向用户清楚地解释为何要给用户推荐某一物品。近年来,围绕着可解释性的推荐目标,知识图谱逐渐被引入推荐系统中。

但是,传统的基于知识图谱的推荐,往往要事先通过人为定义路径特征,然后再去筛选符合这些特征的连接了用户和物品的路径,这就需要有领域知识,同时,人为定义的特征也只局限在有限的知识里,无法发掘深层次的隐式特征。

经过检索,专利文献cn110955834a公开了一种知识图谱驱动的个性化精准推荐方法,根据用户历史行为,从知识库中获取物品的相关知识,构建知识图,初始化每个节点和连接的向量表示并确定节点的感受域;根据用户历史行为,生成训练样本,初始化所有的用户和物品的向量表示;获取训练样本中物品在知识图谱中对应实体的感受域,将其感受域以及样本作为图神经网络模型输入,得到用户和物品发生交互的可能性预测值;通过最小化损失函数,优化模型参数;模型优化过程结束后,将某一用户和所有物品发生交互的可能性预测值进行排序,获得该用户的推荐列表。该现有技术虽然从多维角度刻画了用户和物品,但是不足之处在于仍然需要人工方式定义路径特征,并且还是无法向用户清楚地解释为何要给用户推荐某一物品。

因此,有必要研发一种能够弥补经典推荐算法“协同过滤”的可解释性不足的问题的系统及方法。



技术实现要素:

针对现有技术中的缺陷,本发明的目的是提供一种基于知识图谱具有可解释性的论文推荐方法及系统、终端,本发明的目的是提供带有解释性的,且无需提前定义路径特征的基于知识图谱具有可解释性的论文推荐系统的构建方法。

根据本发明提供的一种基于知识图谱具有可解释性的论文推荐方法,包括如下步骤:

步骤s1:从数据库中获取论文和用户的数据,利用获取的数据构建异构图;

步骤s2:通过在构建的异构图中使用随机游走算法生成多条路径,利用图嵌入算法输出异构图中每个节点的向量表示;

步骤s3:根据用户对论文的评分数据,为每一组“用户-论文”,在异构图中查找到多条路径,将多条路径用矩阵表示,作为训练数据集的输入,将每条路径对应的某位用户对某篇论文的评分值,作为训练数据集的输出,构建训练集;

步骤s4:搭建包含长短期记忆的循环神经网络和全联接层的模型,从训练集中学习包含长短期记忆的循环神经网络和全联接层的模型的参数;

步骤s5:根据包含长短期记忆的循环神经网络和全联接层的模型为每位用户推荐预测评分最高的多篇论文,并向用户解释做出此推荐的依据。

优选地,步骤s1包括:

步骤s11:从数据库中获取出论文、用户的相关数据,论文数据包括论文id数据、论文作者、论文发表的出处及论文所属的研究领域,用户数据包括用户id、用户对论文的评分数据;

步骤s12:根据获取的论文和用户的数据,在论文和其作者、论文和其发表出处、论文和其研究领域、用户和其打分过的论文与论文之间进行连边,每条边无方向,权重为1,每个节点的类型属于“论文”、“作者”、“发表出处”或“研究领域”,以此构建异构图。

优选地,步骤s2包括:

步骤s21:对异构图中的所有节点依次使用随机游走算法,得到多条路径集合,其中每个节点运行5次随机游走算法,得到5条路径,每条包含100个节点;

步骤s22:将生成的多条路径集合作为word2vec模型的输入,word2vec模型通过python编程语言中已有的gensim库直接获取;

步骤s23:训练word2vec模型,得到每个节点的向量表示,并将训练完成的word2vec模型存储在本地。

优选地,步骤s3包括:

步骤s31:浏览所有用户对论文的评分数据,针对每一条包含用户ui与论文pj的评分数据,查找异构图中连接ui与pj的所有长度为4的路径,并随机选择其中20条路径进行保留,舍弃其余路径;

步骤s32:利用步骤s2中的步骤s23中的训练完成的word2vec模型,为每一条路径生成一个矩阵作为表示;

步骤s33:将步骤s31生成并保留下来的所有路径集合,根据步骤s32所示的方法,采用矩阵表示,矩阵的集合作为下一步模型数据集的输入train_x;

步骤s34:对于步骤s31中生成的train_x,其每一项元素都是一条路径的矩阵表示,而这条路径连接了用户ui与论文pj;

步骤s35:对于train_x中的每个训练样本,去查找对应的分值,将所有对应分值的集合构建成整个训练集的输出train_y。

优选地,步骤s4包括:

s41:导入python编程语言中的keras库,从keras库中的model模块中导入sequential模型,从keras库中的layers模块中导入lstm、bidirectional以及dense层;

s42:初始化sequential模型;

s43:在sequential模型中添加bidirectional和lstm层,返回最终状态向量;

s44:在sequential模型中添加dense层,激活函数选择linear;

s45:选择模型的训练损失函数为mae,优化器为adam;

s46:将步骤s3中生成的训练集数据输入模型,迭代12次,完成模型的训练工作,将模型存储在本地,能够后续调用。

优选地,步骤43中的bidirectional和lstm层的参数为:输出的向量维度units=100,return_sequences是否返回一组序列向量=false,表示只让这一层返回一个最终状态向量.

优选地,步骤s45中sequential模型的参数设置为:每批次训练的样本数量batchsize=512,迭代次数epochs=12;

优选地,步骤s5包括:

s51:在生成的异构图中,寻找用户ui对其未评分过的论文pj的20条长度为4的路径;

s52:预测用户ui对其未评分过的论文pj的评分;

s53:预测用户ui对所有的其未评分过的论文的评分;

s54:为每一篇推荐给用户ui的论文做出解释。

根据本发明提供的一种基于知识图谱具有可解释性的论文推荐系统,包括:

模块m1:获取论文和用户的相关数据,利用相关数据构建异构图;

模块m2:通过在模块m1构建的异构图中使用随机游走算法生成多条路径,利用图嵌入算法输出图中每个节点的向量表示;

模块m3:将模块m2中生成的多条路径用矩阵表示,作为训练数据集的输入,将每条路径对应的某位用户对某篇论文的评分值,作为训练数据集的输出,构建训练集;

模块m4:从模块m3构建的训练集中学习循环神经网络和全联接层模型的参数,根据循环神经网络和全联接层模型,为每位用户推荐预测评分最高的n篇论文,并向用户解释做出此推荐的依据。

根据本发明提供的一种终端,包括处理器、输入设备、输出设备和存储器,处理器、输入设备、输出设备和存储器相互连接,其中,存储器用于存储计算机程序,计算机程序包括程序指令,处理器被配置用于调用程序指令,执行上述的基于知识图谱具有可解释性的论文推荐方法。

与现有技术相比,本发明具有如下的有益效果:

1、本发明克服了经典推荐算法“协同过滤”的可解释性不足的问题,通过循环神经网络和全联接层模型的搭建,解决了向用户清楚地解释为何要给用户推荐某一论文的技术问题。

2、通过生成异构图匹配对应的路径和节点,无需提前通过人工方式定义路径特征,从而弥补了以往推荐算法需领域知识、人工定义路径可能面临的路径特征挖掘不充分的问题。

3、本发明通过构建训练数据集,不仅实现了推荐的匹配度,还保留了数据推荐的多样性。

附图说明

通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1为本发明的基于知识图谱具有可解释性的论文推荐方法的流程图;

图2为本发明适用的包含论文、作者、发表出处、研究领域、用户的异构图模式;

图3为本发明提出的在异构图中进行随机游走的过程;

图4为本发明提出的对异构图中的路径做矩阵表示的生成过程。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

如图1-图4所示,本发明提供了一种基于知识图谱具有可解释性的论文推荐方法,包括如下步骤:

步骤s1:从数据库中获取论文和用户的数据,利用获取的数据构建异构图。

步骤s11:从数据库中获取出论文、用户的相关数据,论文数据包括论文id数据、论文作者、论文发表的出处及论文所属的研究领域,用户数据包括用户id、用户对论文的评分数据;

步骤s12:根据获取的论文和用户的数据,在论文和其作者、论文和其发表出处、论文和其研究领域、用户和其打分过的论文与论文之间进行连边,每条边无方向,权重为1,每个节点的类型属于“论文”、“作者”、“发表出处”或“研究领域”,以此构建异构图。

步骤s2:通过在构建的异构图中使用随机游走算法生成多条路径,利用图嵌入算法输出异构图中每个节点的向量表示。

步骤s21:对异构图中的所有节点依次使用随机游走算法,得到多条路径集合,其中每个节点运行5次随机游走算法,得到5条路径,每条包含100个节点。

具体地,随机游走算法的实现如下:记当前停留的节点为vt,其邻居节点的集合为neighbor(vt),某一节点ni的类型为nodetype(ni),其邻居节点类型的集合为neighbortype(vt)={nodetype(ni)|ni∈neighbor(vt)},那么,下一个访问的节点vt+1将以如下方式抽取得到:

第一步:等概率随机从neighbortype(vt)中抽取一个节点类型,记为typet;

第二步:筛选集合neighbor(vt)中节点类型为typet的所有节点,记为targetnodes={ni∈neighbor(vt)|nodetype(ni)=typet};然后等概率随机从targetnodes中抽取一个节点,记为vt+1,即为下一个将要访问的节点。

之所以选用此方法,而非直接在neighbor(vt)里做一次等概率随机抽取,是因为在集合neighbor(vt)中,不同类型节点的数量差距较大,实践中,类型为“用户”的节点数量最多,类型为“发表出处”的节点数量最少,如果只采取直接在neighbor(vt)里做一次等概率随机抽取的方法,那么大多数路径都不会包含类型为“发表出处”的节点,从而丧失了数据集的多样性。

步骤s22:将生成的多条路径集合作为word2vec模型的输入,word2vec模型通过python编程语言中已有的gensim库直接获取;本发明中word2vec模型的参数为:size(生成的向量维度)=32,iter(模型循环迭代的次数)=5。

步骤s23:训练word2vec模型,得到每个节点的向量表示,并将训练完成的word2vec模型存储在本地,方便后续直接调用。

步骤s3:根据用户对论文的评分数据,为每一组“用户-论文”,在异构图中查找到多条路径,将多条路径用矩阵表示,作为训练数据集的输入,将每条路径对应的某位用户对某篇论文的评分值,作为训练数据集的输出,构建训练集;

步骤s31:浏览所有用户对论文的评分数据,针对每一条包含用户ui与论文pj的评分数据,查找异构图中连接ui与pj的所有长度为4的路径,并随机选择其中20条路径进行保留,舍弃其余路径;

步骤s32:利用步骤s2中的步骤s23中的训练完成的word2vec模型,为每一条路径生成一个矩阵作为表示;

具体地,对路径上的每一个节点ni,调用s23生成的word2vec模型,获得该节点在模型中的向量表示,记为vectori;记其节点类型为nodetype(ni),类型可能是“论文”、“作者”、“发表出处”、“研究领域”或“用户”这5种之一,将这些类型分别用如下向量表示:[1,0,0,0,0]、[0,1,0,0,0]、[0,0,1,0,0]、[0,0,0,1,0]、[0,0,0,0,1],记表示节点ni类型的向量为vectypei。然后,将vectori在前,vectypei在后,做首尾连接,记为embeddingi;由于vectori是一个1行32列的向量,vectypei是一个1行5列的向量,因此,二者相连产生的embeddingi是一个1行37列的向量

由于在s31已限定每条路径长度为4,因此,记一条路径为p=(n1,n2,n3,n4),每个节点n1,n2,n3,n4及它们的类型,用向量表示为embedding1,embedding2,embedding3,embedding4,那么,路径p的矩阵表示为[embedding1,embedding2,embedding3,embedding4]t,其中t表示矩阵的转置。可见,路径p的矩阵表示是一个4×37维度的矩阵。

步骤s33:将步骤s31生成并保留下来的所有路径集合,根据步骤s32所示的方法,采用矩阵表示,矩阵的集合作为下一步模型数据集的输入train_x;

步骤s34:对于步骤s31中生成的train_x,其每一项元素都是一条路径的矩阵表示,而这条路径连接了用户ui与论文pj;

步骤s35:从用户对论文的评分数据集中查询用户ui对论文pj的评分值,每个评分值是1至5之间的整数,将这个值作为该训练样本的输出。对于train_x中的每个训练样本,去查找对应的分值,将所有对应分值的集合构建成整个训练集的输出train_y。

步骤s4:搭建包含长短期记忆的循环神经网络和全联接层的模型,从训练集中学习包含长短期记忆的循环神经网络和全联接层的模型的参数。

s41:导入python编程语言中的keras库,从keras库中的model模块中导入sequential模型,从keras库中的layers模块中导入lstm、bidirectional以及dense层;

s42:初始化sequential模型;

s43:在sequential模型中添加bidirectional和lstm层,返回最终状态向量,bidirectional和lstm层的参数为:输出的向量维度units=100,return_sequences是否返回一组序列向量=false,表示只让这一层返回一个最终状态向量;

s44:在sequential模型中添加dense层,激活函数选择linear;

s45:选择模型的训练损失函数为mae,优化器为adam,sequential模型的参数设置为:每批次训练的样本数量batchsize=512,迭代次数epochs=12;

s46:将步骤s3中生成的训练集数据输入模型,迭代12次,完成模型的训练工作,将模型存储在本地,能够后续调用。

步骤s5:根据包含长短期记忆的循环神经网络和全联接层的模型为每位用户推荐预测评分最高的多篇论文,并向用户解释做出此推荐的依据。

s51:在生成的异构图中,寻找用户ui对其未评分过的论文pj的20条长度为4的路径,具体地,对于某位用户ui,以及该用户未评分过的某篇论文pj,查找异构图中连接ui与pj的所有长度为4的路径,并随机选择其中20条路径进行保留,舍弃其余路径,将这些路径存储至本地,为后续做出推荐解释所用。

s52:预测用户ui对其未评分过的论文pj的评分,具体地,利用步骤s3.2的算法,将连接ui与pj的20条路径中的每一条路径生成矩阵表示,将这20个矩阵依次输入步骤s4.6中已训练好的模型,得到输出,输出为一个评分1至5之间的有理数,求这20个输出值的平均值,作为预测用户ui对论文pj的评分。

s53:预测用户ui对所有的其未评分过的论文的评分;具体地,记用户ui未评分过的所有论文集合为pi,遍历pi中的每篇论文pj,依次执行步骤s5.1和s5.2,得到用户ui对集合pi中每篇论文的预测评分,将这些论文按照其预测评分值从高到低进行排序,选择前10的论文推荐给用户ui。

s54:为每一篇推荐给用户ui的论文做出解释。具体地来说,记,通过步骤s53给用户推荐的10篇论文集合为reci,对于reci中的每篇论文pj,提取在步骤s51保存的连接用户ui和论文pj的20条路径,然后执行步骤s32,将这20条路径用20个矩阵表示,依次输入步骤s46中已训练好的模型,得到输出,选择输出值最高的那个矩阵所代表的路径,由于这条路径的第一个节点为用户ui,最后一个节点为论文pj,而根据步骤s12构建异构图的方法,可知在异构图中,对于用户类型节点,其邻居节点的类型只能是“论文”,因此,记该路径为bestpath(ui)=(ui,pk,nx,pj),其中pk表示用户ui评价过的论文pk,nx作为连接论文pk和论文pj的节点,其类型可以是“用户”、“作者”、“发表出处”或“研究领域”。

若节点nx的类型为“用户”,则表示论文pk和论文pj都被某位用户评过分,那么,对于给用户ui推荐论文pj的依据,可解释为:“由于你曾经给论文pk评过分,而给论文pk评分过的其他用户也评分过论文pj,因此向你推荐论文pj”;

若节点nx的类型为“作者”,则表示论文pk和论文pj都是被某位作者发表的,那么,对于给用户ui推荐论文pj的依据,可解释为:“由于你曾经给论文pk评过分,而论文pk的作者也发表过论文pj,因此向你推荐论文pj”;

若节点nx的类型为“发表出处”,则表示论文pk和论文pj都在某个地方被发表过,那么,对于给用户ui推荐论文pj的依据,可解释为:“由于你曾经给论文pk评过分,而论文pk和论文pj都在同一个地方被发表过,因此向你推荐论文pj”;

若节点nx的类型为“研究领域”,则表示论文pk和论文pj都属于同一研究领域,那么,对于给用户ui推荐论文pj的依据,可解释为:“由于你曾经给论文pk评过分,而论文pk和论文pj都属于同一研究领域,因此向你推荐论文pj”

根据本发明提供的一种基于知识图谱具有可解释性的论文推荐系统,包括:

模块m1:获取论文和用户的相关数据,利用相关数据构建异构图;

模块m2:通过在模块m1构建的异构图中使用随机游走算法生成多条路径,利用图嵌入算法输出图中每个节点的向量表示;

模块m3:将模块m2中生成的多条路径用矩阵表示,作为训练数据集的输入,将每条路径对应的某位用户对某篇论文的评分值,作为训练数据集的输出,构建训练集;

模块m4:从模块m3构建的训练集中学习循环神经网络和全联接层模型的参数,根据循环神经网络和全联接层模型,为每位用户推荐预测评分最高的n篇论文,并向用户解释做出此推荐的依据。

根据本发明提供的一种终端,包括处理器、输入设备、输出设备和存储器,处理器、输入设备、输出设备和存储器相互连接,其中,存储器用于存储计算机程序,计算机程序包括程序指令,处理器被配置用于调用程序指令,执行上述的基于知识图谱具有可解释性的论文推荐方法。

本发明通过将知识图谱引入推荐系统的构建中,从而弥补了经典推荐算法“协同过滤”的可解释性不足的问题。在引入物品知识信息构建异构图后,本发明又提出了基于各类型节点等概率选择的随机游走算法,确保了异构图中所有类型的节点,无论其数量多少,均可平等地贡献异构图所蕴含的语义。本发明提出了基于长短期记忆网络的路径评分模型,从而避免了常规的基于知识图谱推荐的算法需事前通过人工预定义路径特征的问题。最后,本发明提出了一种规则,以此向用户解释相关推荐的依据。

本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1