手把手教你写一个基于知识图谱的推荐系统
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的讲解*
这个主要是训练过程的文件的讲解,基本与上述过程大同小异,只是多加了
划分五折的过程
对正样本打分的过程
以及求指标的过程