综上可以看出,单一的推荐算法存在或多或少的缺陷,譬如数据稀疏性问题、处理复杂属性困难等问题,尤其是当用户需要购买新物品时,其推荐效果不佳。为了解决这个问题,本文提出了一种基于知识图谱与内容的推荐算法。首先,解析用户记录并构建知识图谱,基于图谱嵌入计算得到实体与关系的相似度;其次,基于文本词嵌入对内容进行向量化表示,并构建算法对内容进行相似度计算;最后,本文融合了基于知识图谱的相似度算法和基于内容的相似度算法,通过权重计算选取得分高的值作为推荐结果。通过7折交叉验证的方法表明,在一个完备的推荐系统中,近邻数的选取并不是越大越好,而是应该进行适当的选择。通过对比验证的方法表明,在相同近邻数的情况下,本文提出的融合算法具有较高的召回率和准确率,这是由于本文的算法在基于内容的推荐算法基础上,利用知识图谱实体之间的多关系和属性进行了融合相似度计算,提升了算法的性能。
2.架构流程
2.1.推荐系统架构
图1.推荐系统整体架构图
2.2.基于内容的推荐算法流程
一般来说,基于内容的推荐算法包括以下三步[12]:
1)抽取该物品的一些特征用来表征这个物品;
2)根据用户的历史行为数据信息学习出用户感兴趣的物品的特征,即构造用户偏好文档;
3)比较步骤(2)得出的用户偏好文档和待推荐物品的特征(推荐项目文档),确定出关联性最大的一组物品作为推荐列表并将其推荐给用户。
本文中,基于内容的推荐算法流程如图2所示。
Figure2.Theprocedureofcontent-basedrecommendationalgorithm
图2.基于内容的推荐算法流程
2.3.基于知识图谱的推荐算法流程
基于知识图谱的推荐算法流程如图3所示。首先,根据物品知识及用户知识构建物品知识图谱,并将原有的物品信息及用户信息转化为三元组的形式;然后,对上述三元组进行知识表示,将构建好的物品知识图谱数据作为表示模型的输入;最后,计算求得物品的相似度,生成物品相似度矩阵,并依据相似度矩阵给出推荐列表。
Figure3.Theprocedureofrecommendationalgorithmbasedonknowledgegraph
图3.基于知识图谱的推荐算法流程
基于内容的推荐算法较为直观,但其对于复杂属性的项目较难处理。基于知识图谱的推荐算法通过知识图谱中实体之间丰富的关系能丰富项目和项目的联系、增强推荐算法的挖掘能力,适合处理属性复杂的项目,两者进行结合,可以有效解决数据稀疏性的问题和新物品的“冷启动”问题。
3.基于知识图谱与内容的推荐算法
基于知识图谱与内容的推荐算法如图4所示。包括三个部分:基于知识图谱的相似度计算,基于内容的相似度计算和基于权值的融合算法,其中输入为用户的喜好信息。在基于知识图谱的相似度计算部分,构建基于内容的知识图谱,并基于知识图谱嵌入计算得到实体与实体关系的相似度。在基于内容的相似度计算部分,基于文本词嵌入对内容进行向量化表示,并构建算法对内容进行相似度计算。在基于权值的融合算法部分,融合了基于知识图谱的相似度计算和基于内容的相似度计算结果,通过权重计算,选取准确率得分高的值作为推荐结果。
Figure4.Theframeworkofthealgorithmbasedonknowledgegraphandcontent
图4.基于知识图谱与内容的推荐算法框架
3.1.基于知识图谱的相似度计算
虽然不同用户对于同一种类型的物品的描述会有所不同,但是其表达语意大都类似。例如,对于电影《东邪西毒》,用户A认为它是武侠片,用户B认为它是动作片,这是因为武侠片和动作片时有部分交叠的。利用不同用户的偏好特征,挖掘其语义特征,能够更完善地对物品进行描述,将更有利于对用户感兴趣物品的判断。因此,本文利用概念知识图谱,通过对概念的文本及知识的语义描述,在知识图谱中发现相似的概念。
基于知识图谱的相似度计算方法如下:首先,根据物品知识及用户知识构建物品知识图谱,并将原有的物品信息及用户信息转化为三元组的形式,将这些三元组存储在知识图谱中,作为进一步的查询基础。然后通过TransE(TranslatingEmbeddings)模型对物品三元组进行知识表示,其中TransE模型以h+r≈th+r≈t为基本思想对实体和关系做低维空间映射[13],知识的表示嵌入如图5所示。如“金陵十三钗”向量为实体h,“电影类型”向量为关系r,“战争片”向量为实体t,因此可获得物品实体的低维稠密向量表示为eheh。
Figure5.AnexampleofalgorithmTransE
图5.TransE算法案例
根据以上算法,构建了知识图谱对物品的知识表示,计算了两个物品的相似度,由此可以生成一个物品相似度的矩阵。
3.2.基于内容的相似度计算
本文基于余弦相似度对物品向量的相似度做出评价,将用户对某个物品的在n个方面的评分当成一个n维向量值SniSni,则某个物品IiIi的评分向量为Ii={S1i,S2i,,Ski,,Sni}Ii={S1i,S2i,,Ski,,Sni},SkiSki代表物品第k个方面的评分向量值。同样地,物品IjIj的评分向量为Ij={S1j,S2j,,Skj,,Snj}Ij={S1j,S2j,,Skj,,Snj}。计算IiIi与IjIj的余弦相似度:
如果余弦相似度得到的值大,则说明两个物体间的相似度高,可推荐性就高;反之,余弦相似度的到的值越小,说明两个物体间的相似程度低,可推荐性小。
3.3.基于权值的融合算法
基于权值的融合算法结合基于知识图谱计算出的相似度与基于内容计算出的相似度,选择合适的权值进行算法融合,得到最终的综合相似度;最后,将综合相似度的结果作为是否推荐的依据。由于知识图谱中含有丰富的实体信息,而用户的文本信息中则蕴含了用户的偏好特征,故分别设置其加权系数为αα和ββ,αα和ββ的取值范围均在[0,1][0,1]之间,且α+β=1α+β=1,关于αα和ββ合适的取值需要通过大量的实验来获得。融合后的物品间相似度结果,如下式所示:
4.实验验证
4.1.数据集
实验将使用MovieLens电影数据集中的1M数据集来验证本文算法的准确性。构建电影知识图谱数据集引用TMDB数据集,TMDB是一个包含详细电影数据的数据库。其中,本文在构建电影知识图谱时只保留每部影视的主演实体,为降低图谱的构建复杂度,实验中构建电影知识图谱时控制每部电影演员的实体数量不多于5个。图6为使用TMDB数据集构建的知识图谱(局部)。不同颜色表示不同的节点类型,其中黄色节点为电影演员,蓝色节点为影片。演员作为父节点,电影作为子节点,父子节点用具体关系链接,大幅度减少从子节点到父节点的链接。
Figure6.Themoviegraphusedinexperiment
图6.构建完成的电影图谱
4.2.对比算法
本文选取以下具有代表性的推荐算法进行推荐性能对比:
1)深度知识注意力网络(DeepKnowledge-AwareNetworks,DKN):融合了实体嵌入和词嵌入,为每个输入新闻生成一个知识感知嵌入向量,然后对用户进行动态建模,其中物品和书籍的标题用于生成词嵌入,实体嵌入由TransH(TranslatingonHyperplanes)学习[8];
2)LibFM(LithiumBisFuoromalonato):将用户ID、商品ID以及从TransR(TranslatingRelations)获得的实体嵌入结合起来,作为LibFM的输入[4];
4.3.评估准则
在实验验证中,采用准确率和召回率进行推荐算法的性能评价。准确率(Precision,P)表示是预测用户感兴趣的物品为正确的结果的数量。计算公式为:
本文通过7折交叉验证的方法,在实验中随机选取70%的数据作为训练集,30%的数据作为测试集。由于基于知识图谱的相似度计算的精度是由节点的近邻数所决定的,近邻数越高,精确越低,但推荐结果越能覆盖用户感兴趣的物品。因此,为了求得最佳结果,分别取近邻数为5、10、25、50、70、100,并且重复进行10次取平均值作为最终结果。本文选取α=0.7,β=0.3α=0.7,β=0.3。
图7表示了不同近邻数下召回率的变化关系,随着近邻数的增加,召回率越来越高,意味着覆盖率越来越高。图8表示了不同近邻数下准确率的关系,随着近邻数的增加,准确率越来越低,意味着推荐
图7.构建完成的电影图谱
图8.不同近邻数下的准确率
结果的错误概率越来越高。从图7和图8中可以看出,当选取不同的近邻数时,推荐给用户的物品的召回率与准确率有所差异,这是由于当选取的近邻数越多时,对用户的偏好特征掌握越详细,因此推荐给用户的物品占用户所感兴趣的物品的比例会有所提升,但是当近邻数足够大时,对用户的偏好掌握已经足够,因此召回率会趋于平稳。但是当选取的近邻数越多时,相似的用户及物品也就越多,剔除掉用户曾经购买或点击过的物品,剩余的物品依旧数量庞大,用户点击或购买的物品占推荐物品的总数会有所下降,因此准确率会有所下降。可见,在一个完备的推荐系统中,近邻数的选取并不是越大越好,而是应该进行适当的选择。
4.5.对比实验
通过计算不同近邻数下的召回率和准确率来验证本文算法的性能。近邻数选择1、5、10、25、50、100,取10次结果并求平均值。实验结果如图9、图10所示。
Figure9.Therecallofdifferentnearestneighbor
图9.不同近邻数的召回率
Figure10.Theprecisionofdifferentnearestneighbor
图10.不同近邻数的准确率
图9展示了不同近邻数下的召回率。近邻数越多,召回率越高,意味着覆盖率越高。在相同近邻数下,本文所提算法的召回率均高于其它算法。图10展示了不同近邻数下的准确率。近邻数越多,准确率越低,这表明推荐的结果中出现错误推荐的数量越高。在相同近邻数下,本文算法的准确率均高于其他算法。这表明,利用实体之间的多关系和属性进行相似度计算能够提升算法的性能。由上图所示对比结果可以进一步看出:与其他算法相比,DKN的表现最差,这是由于DKN对实体的表征不明确,无法为个性化推荐提供有用的信息;PER算法的推荐结果良好,但是由于用户定义的元路径很难达到最佳,所以当近邻数达到一定程度时,PER算法的推荐性能作用有限;LibFM算法作为一种通用的推荐工具,在进行推荐时,准确率一直保持在较高水准,这表明LibFM算法可以很好地利用知识图谱的知识进行个性化推荐。而本文所提算法与上述推荐算法相比,当近邻数在100时召回率提升了约1%,准确率提升了约10%,说明本文算法是有效的。
5.结束语
本文提出了一种基于知识图谱与内容的推荐算法。利用用户数据解析内容并构建知识图谱,在知识图谱相似度计算和内容的相似度计算基础上,设计融合算法,完成对内容的启发式推荐。与通用算法的对比实验证明了本文算法具有较高的召回率和准确率。
后续研究开展可以考虑联合实体的多个关联关系及多跳关系,利用其他的Trans系列模型或者知识表示模型进行知识图谱实体嵌入,以更充分地学习实体的表示向量,描述实体的语义信息,实现更进一步的推荐。