知识图谱的实体往往面临数据融合的问题,因为知识图谱的数据源可能有多个,在不同数据源有对同一实体的不同表达,即使在同一个数据源里也可能存在这种情况,需要通过一定手段将其合并。
知识图谱的数据融合过程通常如下:
1,数据预处理:输入的原始数据源往往存在脏数据和格式不一致数据,需要进行人工进行规整,这一步过程是实际工程中比较费时但是作用很大的工作,没有好的数据处理后续的算法效果往往也不会好。
2,数据分组:我们的目标是找出所有相同的实体,如果不进行数据分组,我们的计算量会是两两比较,对于海量数据的时候计算量过于庞大,所以要事先进行分组。分组的效果既要保证能够比较均衡地分而治之,又要尽量保证不要漏分。
常见的方法包括通过数据本身的类目信息进行分组,比如在融合商品数据的时候可以根据商品的类目信息进行分组;或者根据数据的关键信息,比如在融合人物数据的时候可以根据其出生日期进行分组。
3,属性相似度:经过上一步的分组,每个分组下的实体是有可能是相同的实体的集合,接下来需要对实体的属性进行计算相似度,有了实体各个属性的相似度才容易进行下一步的实体相似度计算。
常见的方法包括:
3.1)纯字符串的:计算编辑距离,levenshtein distance,计算字符串A通过插入/删除/替换操作变换到字符串B的距离;
3.2)集合类型:计算Jaccard相似度,计算集合交集个数/集合并集个数;
3.3)文档类型:通过tf-idf找出每篇文档的关键词,再通过余弦相似度计算关键词集合的相似度。
4,实体相似度:
有了实体各个属性的相似度,可以来计算实体相似度了。常见的方法分为两种:
4.1)回归:通过实体各个属性的相似度,直接判断实体的相似度。可以直接对各个属性相似度拍权重,也可以通过逻辑回归的方式计算出各个属性相似度的权重。
4.2)聚类:直接通过聚类操作,计算出相似实体。可以进行层次聚类,相关性聚类,Canopy+K-means聚类等。