今天是2023年11月26日,星期日,天津,天气晴。
我们回到知识图谱这个话题。
本文主要围绕知识图谱表示的落地应用这一主题展开论述,介绍其中的两个重要场景,并结合实际的案例出发进行展示,以加深理解。
知识图谱表示学习,能够将实体和关系嵌入到一个低维空间,使得相似的实体和关系尽可能相近。基于这样一种假设,我们可以得到知识补全以及实体推荐这两个主要应用点。
1、实体补全
实体补全问题,是知识图谱推理的一个形式化表现,包括边的预测和实体或属性的预测两种。形式化出来就是给定
在具体实现上,知识图谱补全任务用来预测三元组(h,r,t)中缺失实体h,t或r的任务,对于每个待测试三元组,每个评测三元组,移去头部实体(迭代的方式替换尾部实体)、轮流替换成词表中的其他实体,构建错误的三元组实体。利用关系函数计算头部实体和尾部实体的相似度,对于这个相似度来讲,正确的三元组的值应该比较小,而错误样本的相似度值会比较大。用关系函数对所有的三元组(包括正确的三元组和错误的三元组)进行计算,并按照升序排序。因此,针对这个结果,就延伸出来了hit@k、MRR等评估指标。
2、实体推荐
这个在具体的实现上,可以基于预先训练好的实体向量,再加入相似度计算方式得到,也可以融合字面相似度,利用fasttext、word2vec等策略现。
下面以FB15k-237这一数据集,采用TransE表示学习训练的过程进行流程介绍。
该方法的输入包括三元组triples.txt,实体文件entity和关系文件relation三部分组成,后面两者可以从第一个文件中处理得到。如下表示了一个三元组文件:
例如:relation_embedding.narray,大小为关系数量*向量维度
首先,我们可以进一步形成向量文件以供相似检索使用,例如:将实体embedding转换为对应的向量文件
通过gensim内置的cosine相似度方法,可以快速的召回向量相似的实体或者关系类型,例如:
1)实体召回
由于利用不同表示学习方法得到的向量表示文件并不相通,其在训练阶段是通严格通过对应的评分函数来进行约束的,因此在测试阶段,将训练得到的向量进行加载,应用评分函数进行计算,得到对应的实体id及其score得分,然后根据id映射关系回查到对应的实体即可。
例如,对于(美国,首都,?)这个三元组,会有北京、华盛顿、洛杉矶、巴黎、费城等多个候选城市,可以通过组合,然后进行得分排序,进行输出。理想情况下,华盛顿的得分会最高。
本文主要介绍了关于知识图谱表示训练的过程,以及两个主要应用场景。
不过,我们可以发展,无论是知识推理,还是实体推荐,其都面临一个很大的现实问题,即增量更新。
因为,在落地上,还存在增量更新的问题,后续图谱是会不断增量更新的,如何适应增量更新,快速得到的质量较好的表示是一个重大挑战。