知识图谱的用户兴趣向量化方法及应用
2020-04-10熊开宇邱桃荣
沈 华,熊开宇,闫 斌,邱桃荣*
(南昌大学a管理学院;b软件学院;c.信息工程学院,江西 南昌 330031)
随着互联网数据的逐渐积累,“信息过载”已成为一个普遍现象,用户无法从海量互联网数据中快速找到自己感兴趣的内容。推荐技术的出现为解决“信息过载”问题提供了方向,并且初步取得了一些成效。目前,许多研究者都在为提升推荐效果进行着不断地尝试和探索。知识图谱的出现,为提升推荐效果提供了新的思路。
知识图谱[1-4]于2012年5月被正式提出,Google公司将其定义为一种描述实体以及实体之间链接关系的语义网络。基于知识图谱的推荐技术主要是利用知识图谱对数据进行知识抽取,得到更加细粒度的用户和内容的特征信息,从而更精准地计算用户与用户、用户与内容以及内容与内容之间的相似度,进而向用户推荐内容。
本文提出了一种基于知识图谱的用户兴趣表示方法,将文本中的部分语义特征提取出来,用于对用户兴趣进行描述。此外,本文基于卷积神经网络搭建了一个推荐模型,模型的输入为通过知识图谱计算得到的用户兴趣向量,输出为每篇文本推荐给当前用户的概率。本文使用财新网的新闻文本数据集,设计实验验证了这种基于知识图谱的推荐方法的有效性。
1 相关工作
基于知识图谱的推荐技术可以分为基于本体的推荐技术以及基于开放链接数据(Linked Open Data,LOD)的推荐技术两种。
基于本体的推荐技术主要是利用本体中细粒度的、对概念层级关系的描述,通过对概念的细粒度的分类描述来更加精准的对实体特征进行表示,从而挖掘出事实中蕴含的深层次信息[5]。Al-Nazer等[6]使用本体技术来分析用户的偏好,构建营养和健康导向的用户档案,并使用该档案来组织相关知识,为用户推荐更加健康的食品。Kethavarapu等[7]基于求职网站上的岗位数据,动态地生成本体,然后通过重排序和相似度算法为求职者推荐岗位信息。Thanapalasingam等[8]构建了一个基于本体的科学出版物推荐系统,解决了科学出版物的主题表征以及推荐问题。尽管基于本体的推荐技术在一些领域取得了不错的成效,但要使用基于本体的推荐技术,面临的首要问题就是本体的构建,由于构建本体需要相关领域专家的深度参与,构建成本较高,因此在许多的场景下并不适用。
基于开放链接数据的推荐技术的核心思路是将知识图谱的数据层中丰富的语义信息应用到现有的推荐方法中,用于计算用户兴趣以及内容之间相似程度,从而给出推荐结果。Lu等[9]基于DBpedia和Wikidata构建了一个世界级的旅行知识图谱,从而在更细的语义粒度上对旅游景点进行描述,提升了针对旅游景点的推荐效果。Wenige等[10]将基于开放链接数据的推荐方法应用于数字图书馆中的信息检索和推荐,使用灵活的相似性计算方法和基于约束的推荐方法对系统中已有的搜索功能进行了增强。Chicaiza等[11]在开放链接数据的基础上,结合每个用户的特征(比如用户身份)进行推荐,从而得到更加适合用户的推荐结果。由于开放链接数据的构建难度较小,多采用自动化的方式进行构建,构建成本较低,因此应用较为广泛。
以上基于知识图谱的推荐方法,为推荐技术提供了新的实现思路,并且在特定的应用场景下取得了相当不俗的成果。但是,现有方法大多专注于使用知识图谱对用户特征进行更加精细的描述,忽略了从更加泛化的维度去描述特征,使得对用户特征的刻画过于“精准”,在一定程度上导致了推荐方法的泛化能力欠佳。在实际的应用场景中,当用户对“乔布斯”这一实体产生浓厚的兴趣时,其往往会对与“乔布斯”有直接关联的实体(如“苹果公司”、“计算机”、“iOS系统”等)同样感兴趣。因此,在对用户兴趣进行表示时,理应把这些相关实体考虑在内。
2 知识图谱的构建
2.1 数据集介绍
本文所使用的数据集为DataCastle大数据竞赛平台所提供的财新网新闻数据集,此数据集包含了10000名财新网用户在2014年3月的所有新闻浏览记录,如图1所示。
数据集由6个字段组成,分别为用户编号、新闻编号、浏览时间(精确到秒)、新闻标题、新闻详细内容以及新闻发表时间。
在数据集中,存在一些不活跃的用户,需要将这部分用户剔除,从而保证实验的可靠性。本文保留了阅读记录大于等于10篇的用户数据,将阅读数量小于10篇的用户剔除,最终得到2190个用户的浏览记录。由于数据集是以用户为单位进行抽取的,不同用户可能会阅读到相同的新闻,因此其中存在部分重复的新闻记录,不重复的新闻记录共计5098条。
2.2 三元组抽取
三元组的抽取通常可以采用两种方法,第一种是使用命名实体识别及实体关系抽取,第二种是使用依存句法分析。命名实体识别和实体关系抽取通常依赖于大量的标注数据进行模型训练,不适合本文场景,依存句法分析方法效果良好,并且不依赖标注数据,因此本文选择通过依存句法分析方法进行三元组的抽取,抽取算法如表1所示。
表1 三元组抽取算法
三元组抽取算法主要包含4个步骤,分别是分句、分词及词性标注、依存句法分析、三元组抽取。
(1)分句
以句号、感叹号、问号为结束标志,对新闻正文进行分句,并将新闻标题作为单独的一句,与分好的句子一同存储,共计得到924,813条句子。
(2)分词及词性标注
在分词方面,本文采用基于规则的分词方法。首先进行词图的构造,如图2所示。新闻中出现的每个字都是词图上的一个节点,使用词典在词图上进行匹配,匹配成功的字与字之间则建立一条边。词图构建完成后,分词问题已经成功转化为一个最优路径问题,通过Viterbi算法进行最优路径求解,即可得到分词结果。
分词完成后,还需要进行词性标注。本文所选用的分词及词性标注工具是HanLP工具包。首先将分好的句子进行分词及词性标注处理,词语与词性之间使用“/”进行分隔,每一组词语与词性之间使用空格分隔。分词及词性标注处理后的结果如图3所示。
(3)依存句法分析
将处理好的分词及词性输入到哈尔滨工业大学的语言技术平台(LTP)[12]中进行依存句法分析,结果如图4所示。以“全国各族人民都要珍惜民族大团结的政治局面”一句为例,其分词及词性标注结果为“全国/n 各族/r 人民/n 都/d 要/v 珍惜/v 民族/n 大团结/n 的/uj 政治/n 局面/n”,依存句法分析结果为“3/ATT 3/ATT 6/SBV 5/ADV 6/ADV 0/HED 8/ATT 11/ATT 8/RAD 11/ATT 6/VOB”。依存句法分析结果与分词及词性标注结果一一对应,即“全国/n”对应“3/ATT”,“3/ATT”表示“全国”是第三个词“人民”的定语,以此类推。“0/HED”则表示当前词“珍惜”是句子的核心谓语。
(4)三元组抽取
结合分词结果以及依存句法分析结果,进行三元组抽取,抽取标准如下:“n/SBV”表示主语,此处“n”代表谓语在句子中的位置,即句子的第n个词是当前词的谓语。根据预定义的规则(如长度应该小于5,不能包含特殊的符号等)判断主语是否符合规则,将不符合规则的主语丢弃,不进行后续操作。通过“n”获取谓语后,同样判断谓语是否符合预定的规则,如不符合,则不进行后续操作。获取到有效的谓语后,继续根据谓语上标注的宾语位置,找到句子的宾语,并判断是否符合规则。将符合规则的三元组存入文件,共计获得84 655个三元组。
2.3 知识存储
知识图谱的存储方式比较多元,可以选择知识描述语言进行表示及存储,如RDF等;也可以通过图数据库进行存储并进行可视化,如Neo4j等。考虑到可视化的需求以及数据访问的便捷性,本文选择使用Neo4j进行知识存储。
Neo4j[14]是一个高性能的NoSQL数据库,也是目前最流行的图数据库。Neo4j创建的图是一个用顶点和边构成的有向图,它包括如下几个显著特点:完整的事务支持、高可用性、能够轻易扩展到上亿级别的节点和关系、支持通过遍历工具高速检索数据。
将三元组导入Neo4j后,共计获得14 492个节点,37 309条关系。通过Neo4j进行可视化后,以“中国”为中心的部分知识图谱如图5所示。
3 基于知识图谱的用户兴趣向量化方法
财新网的新闻数据集是一个纯文本数据集,因此需要将文本转化为数值向量才可以导入模型进行计算。本文使用Google公司的Word2Vec模型[13],借助Gensim库训练得到词向量。Gensim(Generate Similarity)是一个简单高效的自然语言处理Python库,其中包含Word2Vec,FastText,潜在语义分析(Latent Semantic Analysis,LSA),潜在狄利克雷分布(Latent Dirichlet Allocation,LDA)等工具包。Gensim中包含的所有算法都是无监督的,这意味着调用者不需要准备训练集,只需要提供文本语料即可使用。
在训练词向量前,需要先对新闻文本进行分词,并去除其中包含的停用词。本文使用哈工大停用词表、百度停用词表、四川大学机器智能实验室停用词库三个停用词表,合并得到一个综合的停用词表。将新闻文本中的词语放入停用词表进行匹配,并将存在于停用词表中的词丢弃。
去除停用词后,使用Gensim库中的Word2Vec模型训练词向量。为了不遗漏关键词,将模型的最小词频设置为1,迭代次数设置为5,词向量维度设置为200,训练得到词向量模型,计算得到的词向量可以描述为式1的形式。
V=[v1,v2,…,v200]
(1)
每一个用户都会有一定的兴趣倾向,表现在新闻系统中则是对新闻内容的点击及阅读倾向。如何衡量用户的兴趣,是推荐算法的关键。本文将用户浏览过的新闻内容视为其感兴趣的内容,通过用户的浏览记录以及构建好的知识图谱,为每个用户生成3个兴趣向量,以供后续的实验对比。用户兴趣向量的计算方式如式2所示。
(2)
其中,N为用户阅读记录中包含的所有词的集合大小,W为用户的阅读记录中包含的所有词的词向量集合,Wi表示第i个词的词向量。
用户兴趣向量的计算算法如表2所示。
表2 用户兴趣向量计算算法
用户兴趣向量的计算步骤共包含4个主要步骤,具体如下:
步骤1通过数据集中的用户编号将新闻以用户为单位进行分类,获得每个用户的阅读记录。将用户的阅读记录中出现的词语,加入用户的第一个兴趣词集合,记此兴趣词集合为A。
步骤2根据A集合中的词语,在知识图谱中匹配与之直接相连的实体词,将匹配到的实体词加入该用户的第二个兴趣词集合,记此兴趣词集合为B。
步骤3将A集合与B集合合并,得到用户的第三个兴趣词集合,记此兴趣词集合为C。
步骤4分别使用用户兴趣词集合A、B、C中的词,从训练好的词向量模型中获取词向量,并求得用户对应兴趣词集合的平均词向量VA、VB、VC,视为用户的兴趣向量。
4 基于卷积神经网络的推荐模型
自从卷积神经网络被提出以来,由于其优秀的特征抽取能力,使得其在图像处理领域大放异彩。卷积神经网络的成功使得越来越多的学者尝试将其应用到文本处理领域,并且已经取得了一些成果[15-16]。本文基于卷积神经网络搭建了推荐模型,模型结构如图6所示。
首先根据用户的兴趣词集合及词向量模型,获取词向量,并计算平均向量作为用户兴趣向量。然后将用户兴趣向量传入卷积层进行特征提取,由于用户兴趣向量是一维数值型向量,因此此处的卷积操作为一维卷积,计算公式如式3所示。
ci=f(w·Xi,i+h-1+b)
(3)
其中,ci是特征图中的第i个特征值;f为卷积核函数;w∈Rh是滑动窗口宽度为h的滤波器;b为偏置值;Xi,i+h-1表示第i到i+h-1列组成的局部特征向量。由此,求得的特征向量C为:
C=[c1,c2,…,cn-h+1]
(4)
池化层采用最大池化方法进行特征采样,假设采用2×1的池化窗口,水平方向移动步长为2,池化操作完成之后,特征向量C的维度变为原来的一半,可表示为:
Cp=[c1,c2,…,c(n-h+1)/2]
(5)
池化层之后连接一个全连接层,将提取到的特征向量传入全连接层进行拟合。由于卷积神经网络一般有m个卷积核进行特征提取,对应会产生m个特征向量,需要将这m个特征向量进行重新组合后得到全连接层的输入向量,表示为:
V=[c1,1,…,cj,i,…,cm,(n-h+1)/2]
(6)
其中,cj,i(1≤j≤m,1≤i≤(n-h+1)/2)表示第j个特征向量的第i个特征值。为了防止过拟合,全连接层上可加入一个dropout处理。最后将全连接层的输出传入softmax函数,计算每篇新闻被推荐的概率并输出。
模型构建完成后,需要对其进行训练。训练模型时的损失通过交叉熵进行度量,损失函数定义如下:
(7)
其中,n为新闻的数量;y′i表示新闻i是否真实的被当前用户所喜欢,喜欢为1,不喜欢为0;yi是模型预测新闻i被当前用户喜欢的概率。
在本文中,训练Word2Vec词向量模型时设置的词向量维度为200维,因此从该模型中获取的词向量均为200维,平均后得到的用户兴趣向量的维度也为200维。卷积层卷积核维度为20*1,水平方向移动步长为1,垂直方向移动步长也为1,激活函数为relu,并进行2×1的最大池化。全连接层的输入为卷积层的输出,全连接层的输出节点数量为模型输出节点数量的3倍,激活函数为tanh。考虑到全连接层容易过拟合,因此在全连接层加入了保留比例为0.5的dropout层。输出层节点数量为不重复的新闻数量,即5098,通过softmax函数映射为每条新闻被推荐给当前用户的概率值。模型使用Adam算法进行训练,初始学习率设置为0.000 1,为了防止过拟合以及无法收敛到全局最优值,学习率每隔1 200步衰减为当前学习率的0.4倍。
5 实验及评估
5.1 实验方法
本文将每个用户的阅读记录的最后一条新闻作为未知的预测目标,除了最后一条新闻之外的其它新闻视为已知的阅读记录。因此,实验目标则是根据每个用户已经浏览过的新闻,预测其下一次会浏览的新闻。
为了保证实验的准确性,本文每组实验进行5次,以5次实验的平均结果作为最终结果。每次实验将2 190个用户按照7:3的比例随机分割为训练集和测试集两部分,其中训练集占70%,测试集占30%。如3.1节所述,为每个用户生成3个用户兴趣向量,分别记为VA、VB、VC。其中,VA为用户浏览记录中所有词的平均词向量;VB为从知识图谱中抽取到的词集合的平均词向量;VC为以上两个词集合的并集的平均词向量。另外,本文以传统的基于协同过滤的推荐方法Baseline进行对比。
5.2 评价标准
本文沿用DataCastle竞赛中CCF大数据竞赛的评价标准,以F值作为最终的评价指标,F值定义如式8所示:
(8)
其中,precision的定义如式(9)所示:
(9)
其中U为数据集中2 190个用户的集合,hit(ui)表示推荐给用户ui的新闻中,确实被该用户浏览的个数。在本文的实验数据中,由于每个用户在预测集合中仅有一条记录,因此hit(ui)要么为0,要么为1。L(ui)表示提供给用户ui的新闻列表的长度。
recall的定义如式10所示:
(10)
hit(ui)的定义同上,T(ui)则为测试集中用户ui真正浏览的新闻的数目,在本文中T(ui)=1。
5.3 实验结果分析
本次实验构造了3种用户兴趣向量,分别来源于用户的浏览记录中包含的词集合、从知识图谱中抽取的词集合、融合浏览记录以及知识图谱的词集合,将以上3种用户兴趣向量分别输入到本文提出的模型以及传统的协同过滤模型进行实验。为保证实验结果的可靠性,使用每种用户兴趣向量进行5次实验。本文提出模型实验结果如图7所示,横轴为实验次数,纵轴为F值。
从上图可以看出,使用知识图谱计算出的用户兴趣向量的实验效果好于通过浏览记录以及融合后的词集合计算出的用户兴趣向量。主要原因是通过用户浏览记录中的词集合计算用户兴趣向量,会使得对用户兴趣的刻画过于“精准”,反而降低了模型的泛化能力。通过知识图谱,能够更好地刻画用户的兴趣,提升了模型的泛化能力。融合了浏览记录以及知识图谱的用户兴趣向量实验结果介于两者之间,也印证了以上结论。
将3种用户兴趣向量输入传统的协同过滤模型的实验结果如图8所示。
从图8可以看出,协同过滤推荐模型的稳定性较差,5次实验结果抖动较为明显。但是依旧可以看出,通过知识图谱计算出的用户兴趣向量推荐效果整体上好于通过其它两种方式计算出的用户兴趣向量。
本文提出的模型与传统的协同过滤模型的对比如图9所示,横轴为使用不同用户兴趣向量的不同模型,纵轴为F值。
从图9中可以看出,本文提出的模型的推荐效果整体上好于传统的协同过滤推荐模型,并且通过知识图谱计算出来的用户兴趣向量,在两种模型上的表现都要好于其它两种用户兴趣向量,这证明了基于知识图谱的推荐模型的有效性,也证明了知识图谱在文本特征提取上具有一定的效果。
5 结语
本文使用财新网的新闻数据集,通过依存句法分析提取三元组,借助图数据库Neo4j进行知识存储,构建了一个小规模的通用知识图谱。基于此知识图谱,提出了一种结合了语义特征的用户兴趣向量的计算方法,还基于卷积神经网络构建了一个推荐模型。实验表明,本文提出的用户兴趣向量的计算方法和推荐模型对提升推荐效果有一定的作用。