手把手教你做一个基于知识图谱的推荐系统

时间:2024-03-22 20:43:08

手把手教你写一个基于知识图谱的推荐系统

github链接

Recommendation-system-based-on-knowledge-graph-embedding

接下来po出我的说明
基于knowledge graph embedding的推荐系统

本系统是一个基于knowledge graph embedding的商品推荐系统,以下是对该系统的详细介绍, 基本代码都是自己所写,TransE和Rescal方法实现部分是照着论文与相关代码自己进行的复现 ,并且相关代码中都有我写的一些注释。

1.generate_data.py是用于生成模拟数据,在进行真实使用时可以参照所生成模拟数据的格式进行数据录入

2.data文件夹下需要有entities.txt以及relations.txt两个数据,他们分别是实体(people和items)的名称以及索引号,以及关联的名称以及索引号,关联也可以有多种, 然后该文件夹下还应该有train.txt,valid.txt和test.txt,作为模型训练的依托,其中的neg.txt可要可不要,这个文件并不参与模型的训练过程

3.dataset.py文件主要是模型训练中处理数据的代码,model.py是我复现的两种knolwedge graph embedding的方法,在训练中进行调用

4.main.py是主函数,其中要修改成Rescal方法可以将TransE替换成Rescal,其他的地方可以设置训练所用的超参数

5.run.py是用于对模型的超参数进行设置,采用的是五折交叉验证,在求打分验证时可以采用不同的scoring 函数,注释后面写有“Rescal”的

6.use.py是用所有样本进行训练,对所有负样本地方打分并排序,取前100个打分进行输出(数量可选)

7.run.sh是在linux系统下使用的,如是windows系统,可以直接吧代码中os.system(‘bash run.sh’)改为os.system(‘python main.py’),具体超参数在main中设置即可

8.如果在run.py中发现如何调超参数模型效果都不理想,可能是由于数据过于简单或者不真实所造成。

首先我们来看数据的生成

手把手教你做一个基于知识图谱的推荐系统
具体格式如上图,当你使用时仿照上述格式使用你自己的数据即可。

接下来,我们来看这个use.py这个主代码文件

我们来一点点的进行解读。
首先是下图的代码
手把手教你做一个基于知识图谱的推荐系统
这里主要是将购买关系读取成矩阵,方便操作。
手把手教你做一个基于知识图谱的推荐系统
然后分别提取出正样本和负样本的位置信息。
手把手教你做一个基于知识图谱的推荐系统
然后就是对于训练集,测试集,验证集的划分,没有验证集可以让验证集合测试集保证一样即可。
手把手教你做一个基于知识图谱的推荐系统
材料都有了之后,这里就是开始运行知识图谱嵌入技术,windows下可以改成后面的代码。
手把手教你做一个基于知识图谱的推荐系统
然后这里就是在模型训练完毕之后,提取出实体和关联的embedding,方便后续操作。
然后就是构建一个负样本库。来进行之后的训练。
手把手教你做一个基于知识图谱的推荐系统
由于我们这个任务的主要目的是为了推测哪些用户会购买哪些商品,所以仅仅只对负样本打分。

run.py的讲解*

这个主要是训练过程的文件的讲解,基本与上述过程大同小异,只是多加了
手把手教你做一个基于知识图谱的推荐系统
划分五折的过程

手把手教你做一个基于知识图谱的推荐系统
对正样本打分的过程

手把手教你做一个基于知识图谱的推荐系统

以及求指标的过程