1.一种基于旅游知识图谱的景点推荐方法,其特征在于,包括以下步骤:S1、爬取旅游网站数据信息并进行清洗和整理,构建旅游领域知识图谱;
S2、将旅游领域知识图谱的实体和关系嵌入低维向量,并计算景点与景点之间的相似度;
S3、构建用户‑景点评分矩阵,并根据用户‑景点评分矩阵计算景点与景点之间的相似度;
S4、利用步骤S2以及步骤S3计算出的相似度进行融合,得到最终的相似度;
S5、根据最终的相似度得出与目标实体相似度最高的前K个实体,形成推荐列表;
所述的步骤S2具体包括以下步骤:将旅游知识图谱中的三元组集,由头实体h,尾实体t和关系向量r组成,将所有的三元组集表示为“头实体‑关系‑尾实体”,即为(h,r,t),通过知识图谱表示学习算法,将头实体向量h通过关系向量r映射于尾实体t,并结合知识图谱的网络结构特征学习,将知识图谱中的实体和关系表示为稠密低维实值向量;
通过表示出的低维稠密向量计算实体之间的语义相似度;具体是:
1.根据三元组集合构造哈夫曼树;
将实体和关系在三元组中出现的频率作为哈夫曼树叶子节点的权值;
2.初始化共享向量;
假设三元组中有m个实体,n个关系,将实体和关系的向量进行初始化构成共享向量矩(m+n)xd阵V 的矩阵,将哈夫曼树中的非叶子节点初始化向量,并构成辅助向量矩阵θ;
3.三元组表示学习;
三元组表示学习是通过构建旅游知识图谱,获取实体和关系的三元组集合;使用TransE算法进行训练学习,对于知识图谱中的一个三元组(h,r,t)定义为正样本,将正样本的三元组的头实体或者尾实体随机替换成其他实体得到负样本(h’,r,t’),根据损失函数公式(1)进行训练:其中,S表示三元组集合,S’表示三元组集S的负采样集,l为间隔距离参数,[x]+表示x的正值函数,d(h+r,t)为向量h+r和向量t之间的距离;
4.结构特征学习;
结构特征学习是根据知识图谱中的语义网络结构的特点,并准确反映实体与实体之间的多个关系;使用多阶近邻实体和关系的向量来表示目标实体向量;将目标实体的近邻结构中的实体向量和关系向量累加求和得到中间向量,接下来查询哈夫曼树中根节点到目标节点的路径,每次分支做二分类,将分支产生的概率相乘即为目标实体的概率,计算更新的梯度值,然后更新到共享向量中;具体实现步骤如下所示:
1)计算中间向量Xt:
获取实体t的邻接结构Nr_n(t),将邻接结构中的实体向量进行累加得到中间向量Xt;
其中Nr_n(t)={(h1,r1,r2,…,rn),(h2,r1,r2,…,rn),…,(hi,r1,r2,…,rn)},hi为t的邻接实体,ri为实体t与邻接实体之间的关系;
2)计算当前实体t的概率Jt:
在构建的哈夫曼树中查询根节点到实体t的路径,路径上的每次分支进行二分类,并产生一个概率,将分支产生的概率依次相乘即为当前实体t的概率Jt,其中:t t
其中,d j=1表示从根节点到t(实体或关系)的路径上第j个分支被划分为正类,dj=0表示该分支被划分为负类;
3)更新辅助向量θ和梯度:根据公式(2)更新辅助向量的值,以及公式(3)更新梯度的值;
4)更新实体和关系的向量:将上一步中更新的u值分配到邻接结构中的实体和关系对应的共享向量中,即共享向量中邻接结构的每个实体和关系的值都加上更新的梯度值;
5.交叉训练;
将三元组表示学习得到的实体和关系的向量更新到共享向量中,结构特征学习时再以共享向量为初始向量进行训练,将训练得到的结果更新到共享向量中,三元组表示学习继续以共享向量为初始向量进行学习,由此实现交叉训练;
进行知识表示相似度计算:
三元组表示学习结合结构特征学习能够真实地反映实体与实体之间的多个关系,避免传统知识表示学习只能学习实体之间的单个关系,造成实体之间计算的相似度存在误差;
根据知识表示学习得到的共享向量,利用余弦相似度公式计算实体之间的相似度,计算出相似度值越大,则表示两个实体越相似,构建实体相似度矩阵;公式(4)如下:T
其中,Ii,Ij表示两个景点实体的向量,其中Ii=(C1i,C2i,…,Cmi),Cij表示用户i对于景点j的评分;
构建用户‑物品评分矩阵:
使用基于物品的协同过滤算法,根据物品历史被反馈的数据来判断物品之间的相似性;通过爬取的数据获取游客对于景点的评分数据,构建游客‑景点评分矩阵;考虑到不同用户对于景点的评分存在差异,在计算景点之间基于游客评分的相似度时,先计算景点的平均评分,结合平均评分计算景点之间的余弦相似度;公式(5)如下:融合权重计算相似度:
将通过知识表示学习计算的实体之间的相似度Sim1(Ii,Ij)和通过协同过滤算法计算出的相似度Sim2(Ii,Ij)融合权重x进行相加得到最终的相似度矩阵,融合权重的选取是根据多次实验结果,验证召回率和准确率,选取性能最好的融合权重;计算公式(6)如下:Sim=x*Sim1(Ii,Ij)+(1‑x)*Sim2(Ii,Ij)(6)。
2.根据权利要求1所述基于旅游知识图谱的景点推荐方法,其特征在于,所述的步骤S1具体包括以下步骤:使用Python中的网络爬虫爬取相关旅游网站上的数据信息,并对数据进行清洗和整理,确保数据的完整性,将旅游数据中的实体导入neo4j图数据库,并设置实体之间的关系属性,构成旅游知识图谱,得到“实体‑属性‑属性值”这样包含结构化知识的三元组。
3.根据权利要求1所述基于旅游知识图谱的景点推荐方法,其特征在于,所述的步骤S5具体包括以下步骤:先设定目标实体,再计算目标实体与其他实体之间最终的相似度,按照相似度值的大小进行排序,选取相似度值最高的前k位实体作为目标实体的推荐列表。
4.一种基于旅游知识图谱的景点推荐系统,其特征在于,包括:知识图谱构建模块,用于通过爬取旅游网站数据信息并进行清洗和整理,构建旅游领域知识图谱;
相似度知识表示计算模块,利用知识图谱表示学习算法将旅游领域知识图谱的实体和关系嵌入低维向量,并计算景点与景点之间的相似度;
相似度用户‑景点评分矩阵计算模块,根据爬取到的旅游网站数据构建用户‑景点评分矩阵,并根据用户‑景点评分矩阵计算景点与景点之间的相似度;
相似度融合权重计算模块,将相似度知识表示计算模块计算出的相似度与相似度用户‑景点评分矩阵计算模块计算出的相似度进行融合得到两个景点之间最终的相似度;
推荐列表生成模块,根据相似度融合权重计算模块计算出的相似度得出与目标实体相似度最高的前K个实体,形成推荐列表;
将旅游知识图谱中的三元组集,由头实体h,尾实体t和关系向量r组成,将所有的三元组集表示为“头实体‑关系‑尾实体”,即为(h,r,t),通过知识图谱表示学习算法,将头实体向量h通过关系向量r映射于尾实体t,并结合知识图谱的网络结构特征学习,将知识图谱中的实体和关系表示为稠密低维实值向量;
通过表示出的低维稠密向量计算实体之间的语义相似度;具体是:
1.根据三元组集合构造哈夫曼树;
将实体和关系在三元组中出现的频率作为哈夫曼树叶子节点的权值;
2.初始化共享向量;
假设三元组中有m个实体,n个关系,将实体和关系的向量进行初始化构成共享向量矩(m+n)xd阵V 的矩阵,将哈夫曼树中的非叶子节点初始化向量,并构成辅助向量矩阵θ;
3.三元组表示学习;
三元组表示学习是通过构建旅游知识图谱,获取实体和关系的三元组集合;使用TransE算法进行训练学习,对于知识图谱中的一个三元组(h,r,t)定义为正样本,将正样本的三元组的头实体或者尾实体随机替换成其他实体得到负样本(h’,r,t’),根据损失函数公式(1)进行训练:其中,S表示三元组集合,S’表示三元组集S的负采样集,l为间隔距离参数,[x]+表示x的正值函数,d(h+r,t)为向量h+r和向量t之间的距离;
4.结构特征学习;
结构特征学习是根据知识图谱中的语义网络结构的特点,并准确反映实体与实体之间的多个关系;使用多阶近邻实体和关系的向量来表示目标实体向量;将目标实体的近邻结构中的实体向量和关系向量累加求和得到中间向量,接下来查询哈夫曼树中根节点到目标节点的路径,每次分支做二分类,将分支产生的概率相乘即为目标实体的概率,计算更新的梯度值,然后更新到共享向量中;具体实现步骤如下所示:
1)计算中间向量Xt:
获取实体t的邻接结构Nr_n(t),将邻接结构中的实体向量进行累加得到中间向量Xt;
其中Nr_n(t)={(h1,r1,r2,…,rn),(h2,r1,r2,…,rn),…,(hi,r1,r2,…,rn)},hi为t的邻接实体,ri为实体t与邻接实体之间的关系;
2)计算当前实体t的概率Jt:
在构建的哈夫曼树中查询根节点到实体t的路径,路径上的每次分支进行二分类,并产生一个概率,将分支产生的概率依次相乘即为当前实体t的概率Jt,其中:t t
其中,d j=1表示从根节点到t(实体或关系)的路径上第j个分支被划分为正类,dj=0表示该分支被划分为负类;
3)更新辅助向量θ和梯度:根据公式(2)更新辅助向量的值,以及公式(3)更新梯度的值;
4)更新实体和关系的向量:将上一步中更新的u值分配到邻接结构中的实体和关系对应的共享向量中,即共享向量中邻接结构的每个实体和关系的值都加上更新的梯度值;
5.交叉训练;
将三元组表示学习得到的实体和关系的向量更新到共享向量中,结构特征学习时再以共享向量为初始向量进行训练,将训练得到的结果更新到共享向量中,三元组表示学习继续以共享向量为初始向量进行学习,由此实现交叉训练;
进行知识表示相似度计算:
三元组表示学习结合结构特征学习能够真实地反映实体与实体之间的多个关系,避免传统知识表示学习只能学习实体之间的单个关系,造成实体之间计算的相似度存在误差;
根据知识表示学习得到的共享向量,利用余弦相似度公式计算实体之间的相似度,计算出相似度值越大,则表示两个实体越相似,构建实体相似度矩阵;公式(4)如下:T
其中,Ii,Ij表示两个景点实体的向量,其中Ii=(C1i,C2i,…,Cmi) ,Cij表示用户i对于景点j的评分;
构建用户‑物品评分矩阵:
使用基于物品的协同过滤算法,根据物品历史被反馈的数据来判断物品之间的相似性;通过爬取的数据获取游客对于景点的评分数据,构建游客‑景点评分矩阵;考虑到不同用户对于景点的评分存在差异,在计算景点之间基于游客评分的相似度时,先计算景点的平均评分,结合平均评分计算景点之间的余弦相似度;公式(5)如下:融合权重计算相似度:
将通过知识表示学习计算的实体之间的相似度Sim1(Ii,Ij)和通过协同过滤算法计算出的相似度Sim2(Ii,Ij)融合权重x进行相加得到最终的相似度矩阵,融合权重的选取是根据多次实验结果,验证召回率和准确率,选取性能最好的融合权重;计算公式(6)如下:Sim=x*Sim1(Ii,Ij)+(1‑x)*Sim2(Ii,Ij) (6)。
5.一种终端,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现如权利要求1‑3中任意一项所述基于旅游知识图谱的景点推荐方法的步骤。
6.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1‑3中任意一项所述基于旅游知识图谱的景点推荐方法的步骤。