当前位置:   article > 正文

【知识图谱】知识融合

知识融合

一、知识融合

1、基本概念

知识融合目标是融合各个层面(概念层、数据层)的知识,在合并两个知识图谱(本体)时,需要确认:

  • 等价实例(数据层面)
  • 等价类/子类
  • 等价属性/子属性

相关的术语:(不同维度的描述)

  • 知识融合 (Knowledge Fusion):最为全面
  • Schema层面: 属性和概念
    • 本体对齐 (Ontology Alignment)
    • 本体匹配 (Ontology Matching)
  • 数据层面:
    • Record Linkage (传统数据库领域)
    • Entity Resolution (传统数据库领域)
    • 实体对齐 (Entity Alignment)

2、数据层的知识融合

数据层的知识融合主要强调实体的知识融合

最主要的工作:实体对齐,即找出等价实例

(1)不同KG的知识融合

下图是将猫王从YAGOElvisPedia进行融合的例子。

最主要的工作:实体对齐,即找出等价实例,图中的sameAs就是融合的关键步骤。
在这里插入图片描述

(2)不同知识库的知识融合

来源于不同知识库的“自由女神像”
在这里插入图片描述

(3)不同来源数据的知识融合

在这里插入图片描述

(4)知识在线融合

示例:实体——扑热息痛
在这里插入图片描述

此外,还有跨语言等的知识融合。

3、Schema层的知识融合

Schema层的融合主要强调概念和属性等的融合。

示例:医疗知识图谱——如将中文医疗知识图谱与UMLS体系结构概念等的融合
在这里插入图片描述

4、技术及其挑战

知识融合需要

  • 确定哪些会对齐在一起;
  • 从不同地方抽取出来的数据的置信度是多少;
  • 这些置信度如何随着融合而合理的聚合。

注意:知识融合并不是合并两个知识图谱,而是发现两个知识图谱之间的等价实例、等价或为包含关系等概念或属性。

知识融合的主要技术挑战

  • 数据质量的挑战
    • 命名模糊,数据输入错误,数据丢失,数据格式不一致,缩写等
  • 数据规模的挑战:
    • 数据量大 (并行计算),数据种类多样性,不再仅仅通过名字匹配,多种关系,更多链接等

5、相关比赛——OAEI

OAEI (Ontology Alignment Evaluation Initiative)本体对齐竞赛:用来评估各种本体对齐算法,以达到评估、比较、交流以及促进本体对齐工作的目的。

OAEI每年举办一次,结果公布在官网上。

Tracks
在这里插入图片描述

二、知识融合的基本技术流程

1、基本技术流程

知识融合一般分为两步:本体对齐实体匹配,因为两者相关性,方法思路如下:
==》Pipeline方法、Joint方法

它们的基本流程相似,如下:

在这里插入图片描述

2、数据预处理

数据预处理阶段:原始数据的质量会直接影响到最终链接的结果,不同的数据集对同一实体的描述方式往往是不相同的,对这些数据进行归一化处理是提高后续链接精确度的重要步骤

数据预处理相关技术

  • 语法正规化
    • 语法匹配:联系电话的表示方法
    • 综合属性:家庭地址的表达方式
  • 数据正规化
    • 移除空格,《》,“”,-,等符号
    • 输入错误类的拓扑错误
    • 用正式名字替换昵称和缩写等

3、记录链接

假设两个实体的记录 x x x y y y x x x y y y 在第 i i i 个属性上的值是 x i , y i x_i,y_i xi,yi,那么通过如下两步进行记录链接

  • 属性相似度
    • 综合单个属性相似度得到属性相似度向量
      [ s i m ( x 1 , y 1 ) , s i m ( x 2 , y 2 ) , … , s i m ( x N , y N ) ] [sim(x_1,y_1),sim(x_2,y_2),…,sim(x_N,y_N)] [sim(x1,y1),sim(x2,y2),,sim(xN,yN)]
  • 实体相似度
    • 根据属性相似度向量得到一个实体的相似度

(1)属性相似度

计算属性相似度的方法:编辑距离(基于字符)、集合相似度计算 和 基于向量的相似度计算

① 编辑距离

Levenshtein distance (最小编辑距离)

  • 目的:用最少的编辑操作将一个字符串转换成另一个。
  • 示例:将 Lvensshtain 转换成Levenshtein
    在这里插入图片描述
    上述将 Lvensshtain 转换成Levenshtein,总共的操作 3 次,编辑距离也就是 3。
  • 求解:Levenshtein distance是一个典型的动态规划问题,可以使用动态规划算法计算:
    { D ( 0 , 0 ) = 0 D ( i , 0 ) = D ( i − 1 , 0 ) + 1 1 < i ≤ N D ( 0 , j ) = D ( 0 , j − 1 ) + 1 1 < j ≤ M \left\{
    D(0,0)amp;=0D(i,0)amp;=D(i1,0)+1amp;1lt;iND(0,j)amp;=D(0,j1)+1amp;1lt;jM
    \right.
    D(0,0)D(i,0)D(0,j)=0=D(i1,0)+1=D(0,j1)+11<iN1<jM

    D ( i , j ) = min ⁡ { D ( i − 1 , j ) + 1 D ( i , j − 1 ) + 1 D ( i − 1 , j − 1 ) + 1 D(i,j)=\min\left\{
    D(i1,j)+1D(i,j1)+1D(i1,j1)+1
    \right.
    D(i,j)=minD(i1,j)+1D(i,j1)+1D(i1,j1)+1
    其中, + 1 +1 +1 表示的是插入,删除和替换的代价。

Wagner and Fisher distance:(Levenshtein 的扩展)

  • 基本思想:将该模型中编辑操作的代价赋予了不同的权重
  • 模型计算 如下:
    { D ( 0 , 0 ) = 0 D ( i , 0 ) = D ( i − 1 , 0 ) + d e l [ x ( i ) ] 1 &lt; i ≤ N D ( 0 , j ) = D ( 0 , j − 1 ) + d e l [ y ( j ) ] 1 &lt; j ≤ M \left\{
    D(0,0)amp;=0D(i,0)amp;=D(i1,0)+del[x(i)]amp;1lt;iND(0,j)amp;=D(0,j1)+del[y(j)]amp;1lt;jM
    \right.
    D(0,0)D(i,0)D(0,j)=0=D(i1,0)+del[x(i)]=D(0,j1)+del[y(j)]1<iN1<jM

    D ( i , j ) = min ⁡ { D ( i − 1 , j ) + d e l [ x ( i ) ] D ( i , j − 1 ) + i n s [ y ( j ) ] D ( i − 1 , j − 1 ) + s u b [ x ( i ) , y ( j ) ] D(i,j)=\min\left\{
    D(i1,j)+del[x(i)]D(i,j1)+ins[y(j)]D(i1,j1)+sub[x(i),y(j)]
    \right.
    D(i,j)=minD(i1,j)+del[x(i)]D(i,j1)+ins[y(j)]D(i1,j1)+sub[x(i),y(j)]

    其中, delins 以及 sub 分别是删除、插入和替换的代价。

Edit Distance with affine gaps:引入 gap penalty 概念

  • 基本思想:将上述的插入,删除和替换操作用用gap opening和gap extension代替
  • Gap Penalty 的参考:

    https://en.wikipedia.org/wiki/Gap_penalty
    www.cs.cmu.edu/~ckingsf/bioinfo-lectures/gaps.pdf

  • 编辑操作的代价也就表示为:
    c o s t ( g ) = s + e ∗ l cost(g)=s+e*l cost(g)=s+el
    其中, s s s 是 open gap 的代价, e e e 是 extend gap 的代价, l l l 是 gap 的长度。
  • 示例:将 Lvensshtain 转换成Levenshtein在这里插入图片描述
    • 首先将首尾对其,然后将需要添加和修改的位置变成Gap。
    • 其中, E \mathcal{E} E 代表一个gap,结合上述代价公式,若设置 s = 2 , e = 1 s=2,e=1 s=2,e=1 上述编辑操作代价为 ( 2 + 1 ∗ 1 ) ∗ 4 = 12 (2+1∗1)∗4=12 (2+11)4=12
② 基于集合相似度

Dice 系数——度量两个集合的相似性

  • 基本思想:可以把字符串理解为一种集合,因此Dice距离也会用于度量字符串的相似性。
  • 定义
    s i m D i c e ( s , t ) = 2 ∣ S ∩ T ∣ ∣ S ∣ + ∣ T ∣ sim_{Dice}(s, t) = \frac{2|S \cap T|}{|S|+|T|} simDice(s,t)=S+T2ST
  • 示例:以 Lvensshtain 转换成Levenshtein为例
    • 两者相似度为 2 ∗ 9 / ( 11 + 11 ) = 0.82 2*9/ (11+11)= 0.82 29/(11+11)=0.82

Jaccard 系数

  • 适合处理 短文本的相似度
  • 定义
    s i m J a c c a r d ( s , t ) = ∣ S ∩ T ∣ ∣ S ∪ T ∣ sim_{Jaccard}(s, t) = \frac{|S \cap T|}{|S \cup T|} simJaccard(s,t)=STST

文本转换为集合:

  • 使用符号分隔单词
  • 使用 n-gram 分割单词,用 n-gram 分割句子来构建集合
  • 示例:如将 Lvensshtain 分割为 {Lv},{ve},...,{in}
③ 基于向量的相似度

TF-IDF

  • 目标:用来评估某个字或者用某个词对一个文档的重要程度。可以用来过滤常见词、保留重要词。
  • 计算公式
    T F − I D F = T F i , j × I D F i TF-IDF=TF_{i,j}\times{IDF_{i}} TFIDF=TFi,j×IDFi
    • 其中,TF:词频(term frequency) 指的是某一个给定的词语在该文件中出现的频率,衡量了一个词在一个文档中的重要程度;
      T F i , j = n i , j ∑ k n k , j TF_{i,j}=\frac{n_{i,j}}{\sum_k{n_{k,j}}} TFi,j=knk,jni,j
    • IDF:逆向文件频率(inverse document frequency) 是一个词语普遍重要性的度量,如冠词a、an、the等虽然出现频率高但是并不重要。
      I D F i = log ⁡ ∣ D ∣ 1 + ∣ j : t i ∈ d j ∣ IDF_{i} = \log\frac{|D|}{1 + |{j:t_{i}\in d_{j}}|} IDFi=log1+j:tidjD
  • 示例:比如某个语料库中有5万篇文章,含有 健康 的有2万篇,现有一篇文章,共1000个词, 健康 出现30次,则 T F − I D F = 30 / 1000 × log ⁡ ( 50000 / ( 20000 + 1 ) ) = 0.012 TF−IDF=30/1000 \times{\log(50000/(20000+1))}=0.012 TFIDF=30/1000×log(50000/(20000+1))=0.012

(2)实体相似度

实体相似度的方法:聚合(加权平均、手动制定规则、分类器)、聚类(层次聚类、相关性聚类、Canopy + K-means)和表示学习。

① 基于聚合的方法

相似度得分向量: [ s i m ( x 1 , y 1 ) , . . . , s i m ( x N , y N ) ] [ sim(x_1, y_1),..., sim(x_N, y_N)] [sim(x1,y1),...,sim(xN,yN)]

常用方法

  • 加权平均 w 1 × s i m ( x 1 , y 1 ) + … + w N × s i m ( x N , y N ) w_1 \times sim(x_1, y_1) + \ldots + w_N \times sim(x_N, y_N) w1×sim(x1,y1)++wN×sim(xN,yN)
  • 手动制定规则 s i m ( x 1 , y 1 ) &gt; T 1    a n d ( o r )   …   s i m ( x i , y i ) &gt; T i sim(x_1, y_1)&gt;T1 \ \ and(or) \ \ldots \ sim(x_i, y_i)&gt;T_i sim(x1,y1)>T1  and(or)  sim(xi,yi)>Ti
  • 分类器:逻辑回归,决策树,SVM和条件随机场等

存在问题

  • 训练集的生成——(最关键)
  • 分类不均衡 (更多不匹配的记录对);
  • 误分类

解决方法

  • 无监督/半监督 (EM,生成模型等);
  • 主动学习 (众包等)
② 基于聚类的方法

层次聚类 (Hierarchical Clustering)

  • 基本思想:通过计算不同类别数据点之间的相似度对在不同的层次的数据进行划分,最终形成树状(二叉树)的聚类结构。
  • 具体方法:底层的原始数据可以通过相似度函数计算,类之间的相似度有如下三种算法:
    • SL(Single Linkage)算法:SL算法又称为最邻近算法 (nearest-neighbor),是用两个类数据点中距离最近的两个数据点间的相似度作为这两个类的距离。
    • CL (Complete Linkage)算法:与SL不同的是取两个类中距离最远的两个点的相似度作为两个类的相似度。
    • AL (Average Linkage)算法:用两个类中所有点之间相似度的均值作为类间相似度。
  • 示例:由左图的数据,用欧氏距离和SL进行层次聚类:
    在这里插入图片描述
    可以计算出B,C之间的欧氏距离为 ( B − C ) 2 = ( 38.5 − 39.5 ) 2 = 1 \sqrt{(B-C)^2}=\sqrt{(38.5-39.5)^2}=1 (BC)2 =(38.539.5)2 =1;
    接着将B和C组合,再次计算距离为:
    在这里插入图片描述
    其中单个数据与之间的距离计算如: D = ( B − A ) 2 + ( C − A ) 2 2 = 21.6 + 22.6 2 D=\frac{\sqrt{(B-A)^2}+\sqrt{(C-A)^2}}{2}=\frac{21.6+22.6}{2} D=2(BA)2 +(CA)2 =221.6+22.6
    之后计算类与类之间的距离,如计算(A,F)和(B,C)之间的距离: D = ( A − B ) 2 + ( A − C ) 2 + ( F − B ) 2 + ( F − C ) 2 4 D=\frac{\sqrt{(A-B)^2} + \sqrt{(A-C)^2} + \sqrt{(F-B)^2} + \sqrt{(F-C)^2}}{4} D=4(AB)2 +(AC)2 +(FB)2 +(FC)2
    最终得到如下两个类:
    在这里插入图片描述
    前面的每一步的计算结果以树状图的形式展现出来就是层次聚类树:
    在这里插入图片描述

相关性聚类

  • 符号定义 r x y r_{xy} rxy 表示 x , y x,y x,y 被分配在同一类中, P x y P_{xy} Pxy 代表 x , y x,y x,y 是同一类的概率( x , y x,y x,y 之间的相似度), w + x y ( = P x y ) {w^+}_{xy}(=P_{xy}) w+xy(=Pxy) w − x y ( = 1 − P x y ) {w^-}_{xy}(=1-P_{xy}) wxy(=1Pxy) 分别是切断 x , y x,y x,y 之间的边的代价和保留边的代价
  • 目标:使用最小的代价找到一个聚类方案:
    • 该问题的最优化是一个NP-Hard 问题,可以使用贪婪算法近似求解。
      min ⁡ ∑ r x y w x y − + ( 1 − r x y ) w x y + \min\sum{r_{xy}w^-_{xy}+(1-r_{xy})w^+_{xy}} minrxywxy+(1rxy)wxy+处的最优化是一个NP-Hard问题,可以使用贪婪算法近似求解。
  • 示例:如下图所示,实线表示两数据点有关系,将其归为一类,会给最终结果贡献 w − x y {w^-}_{xy} wxy;虚线表示两数据点没有关系,将其归为一类,给最终结果贡献 w + x y {w^+}_{xy} w+xy
    在这里插入图片描述
    • 从图中可以看出相关性聚类和最大流最小割类似;
    • 相似度较高的,被切断的概率较低;
    • 相似度较低的,被保留的概率较低。

Canopy + K-means

  • Canopy聚类最大的特点:不需要事先指定 K K K 值 (即clustering的个数),经常将Canopy和K-means配合使用
  • Canopy+K均值的流程图
    在这里插入图片描述
  • 过程:原始数据使用List来存储,也就是图中的小圆点。在算法的一开始,选定两个阈值T1(the loose distance)>T2(the tight distance)。初始时,List中的每一个点都是一个Canopy类。
    在这里插入图片描述
    • (1)从集合选出一个点P,将其做第一个类的中心,并将这个点从List中删除,称其为Canopy1。(后续产生第i个类成为Canopyi);
    • (2)对剩下集合的所有点计算到点P的distance。
    • (3)将所有distance<T2的点都从集合List中删除,说明这些点离Canopy1已经足够近,避免重复加入到其他Canopy。
    • (4)将所有distance<T1的点都对到以P为中心的Canopy1中,若点i的distance>T1,则将其作为第i个类Canopyi;
    • (5)对List重复步骤(1)~(4)知道List为空,则可以形成多个Canopy类。
③ 基于知识表示学习

知识嵌入

  • 知识嵌入:将知识图谱中的实体和关系都映射低维空间向量,直接用数学表达式来计算各个实体之间相似度。
  • 特点:不依赖任何的文本信息,获取到的都是数据的深度特征。
  • 实现:可使用 TransE 模型。在使用TransE模型之后我们可以得到实体与向量之间的关系来判断两个实体的关系,如下所示:
    在这里插入图片描述

预链接的实体对

  • 背景:在基于知识表示学习的实体相似度计算中,我们要考虑如何将两个知识图谱嵌入到同一个空间。其桥梁是预链接的实体对(训练数据,如使用一些开放知识图谱中的sameAS数据)。
  • 主要的方法有两种:
    • 联合知识嵌入
      • 将两个KG的三元组糅合在一起共同训练,并将预链接实体对视为具有SameAS关系的三元组,从而对两个KG的空间进行约束。
      • 实现:Hao Zhu et al. Iterative Entity Alignment via Knowledge Embeddings, IJCAI 2017
    • 双向监督训练
      • 两个KG单独进行训练,使用预链接数据交替进行监督。
  • 链接实体的过程:在嵌入到同一个空间之后需要对实体进行连接,KG向量训练达到稳定状态之后,对于KG1每一个没有找到链接的实体,在KG2中找到与之距离最近的实体向量进行链接,距离计算方法可采用任何向量之间的距离计算,例如欧式距离或Cosine距离。

4、分块(Blocking)

分块:从给定的知识库中的所有实体对中,选出潜在匹配的记录对作为候选项,并将候选项的大小尽可能的缩小。
动机:为了使数据可以分而治之,使每一块较小的同时要保证覆盖率,让显然不需要链接的、不相关的实体排除在block外。为了在保证覆盖率的情况下来减少精确匹配的必要性。

常用分块方法

  • 基于 Hash 函数的分块方法
    • 对于记录 x x x,有 h a s h ( x ) = h i hash(x)=h_i hash(x)=hi,则x映射到与关键字 h i h_i hi 绑定的块 C i C_i Ci 上。
    • 常见的hash函数:字符串的前n个字;n-grams;结合多个简单的hash函数等
  • 邻近分类:Canopy聚类;排序邻居算法;Red-Blue Set Cover

5、负载均衡

负载均衡 (Load Balance):来保证所有块中的实体数目相当,从而保证分块对性能的提升程度。

最简单的方法:多次 Map-Reduce 操作。

6、结果评估

评价指标

  • 准确率、召回率、F值
  • 整个算法的运行时间

三、典型知识融合工具

1、本体匹配(本体对齐)工具——Falcon-AO

Falcon-AO:是一个基于Java的自动本体匹配系统,已经成为 RDF(S) 和 OWL 所表达的 Web本体 相匹配的一种实用和流行的选择。

系统架构如下:
在这里插入图片描述

  • 匹配算法库使用 4 种匹配算法
    • V-Doc算法:基于虚拟文档的语言学匹配,将实体及其周围的实体、文本等信息作为一个集合形成虚拟文档,然后可以使用如TF-IDF等算法进行操作。
    • I-Sub算法:基于编辑距离的字符串匹配。
    • GMO算法:基于本体RDF图结构的匹配。
    • PBM算法:基于分而治之的大本体匹配。
  • 相似度组合策略:首先使用PBM进行分而治之,然后使用语言学算法(V-Doc、I-Sub)进行处理,然后使用结构学算法(GMO)接收前两者结果再做处理,最后连通前面两者的输出使用贪心算法进行选取。
    在这里插入图片描述
    • 语言学可比性
      • 语言学算法找到的映射单元数目对比本体概念数目
    • 结构可比性
      • 本体间使用的原语的数目对比
    • 映射单元集成
      • 语言学可比性和结构可比性分别分为高、中、低档
    • 映射单元选取算法
      • 贪心选取

2、实体匹配工具——Dedupe

Dedupe:用于模糊匹配,记录去重和实体链接的Python库。

(1)指定谓词集合&相似度函数

主要内容:属性的定义。Dedupe的输入需要指定属性的类型,在内部为给每个属性类型指定一个谓词集合以及相似度计算方法

示例:下图是对 比尔盖茨name 属性的简单描述,将每个属性都映射上去,会形成一个大的谓词集合。
在这里插入图片描述

(2)训练Blocking

训练Blocking :通过 Red-Blue set cover 找到最优谓词集合来分块。

最优谓词集合至少能覆盖95% (可以指定)的正样本对,负样本对被误分到同一个block中越少越好。
在这里插入图片描述

(3)训练逻辑回归 (LR)模型

使用用户标记的正负样本对训练LR模型,来进行分类。

LR不能确定的会返回给用户进行标注(Active Learning)。

3、实体匹配工具——Limes

Limes:一个基于度量空间的实体匹配发现框架,适合于大规模数据链接,编程语言是Java。

整体框架
在这里插入图片描述

流程

  • 符号定义:源数据集 S S S,目标数据集 T T T,阈值 θ \theta θ
  • (1)样本选取:从目标数据集 T T T选取样本点 E E E 来代表 T T T 中数据。
    • 样本点:能代表距离空间的点。应该在距离空间上均匀分布,各个样本之间距离尽可能大。
  • (2)过滤:计算 s ∈ S s\in S sS e ∈ E e\in E eE 之间的距离 m ( s , e ) m(s,e) m(s,e),利用三角不等式进行过滤。
  • 三角不等式过滤: 给定 ( A , m ) (A, m) (A,m) m m m 是度量标准,相当于相似性函数, A A A 中的点 x , y x,y x,y z z z
    相当于三条记录,根据三角不等式有: m ( x , y ) ≤ m ( x , z ) + m ( z , y ) m(x, y) \le m(x, z) + m(z, y) m(x,y)m(x,z)+m(z,y) 上式通过推理可以得到:
    m ( x , y ) − m ( y , z ) &gt; θ → m ( x , z ) &gt; θ m(x,y) - m(y, z)&gt;\theta \rightarrow m(x, z)&gt; \theta m(x,y)m(y,z)>θm(x,z)>θ
    其中, y y y 相当于样本点。因为样本点 E E E 的数量是远小于目标数据集 T T T 的数量,所以过滤这一步会急剧减少后续相似性比较的次数,因而对大规模的Web数据,这是非常高效的算法。
    推理式说明 m ( x , z ) &gt; θ m(x, z) &gt; \theta m(x,z)>θ 的计算可以省去。
  • (3)相似度计算:相似度计算见上
  • (4)序列化:存储为用户指定格式

4、实体匹配工具——Silk

Silk:An open source framework for integrating heterogeneous data sources.

整体框架
在这里插入图片描述

  • 预处理:会将索引的结果排名前N的记录下来进行作为候选对,进行下一步更精准的匹配 (损失精度)。
  • 相似度计算:里面包含了很多相似度计算的方法。
  • 过滤:过滤掉相似度小于给定阈值的记录对。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/479836
推荐阅读
相关标签
  

闽ICP备14008679号