相关博客:
【自然语言处理】【知识图谱】利用属性、值、结构来实现实体对齐
【自然语言处理】【知识图谱】基于图匹配神经网络的跨语言知识图谱对齐
【自然语言处理】【知识图谱】使用属性嵌入实现知识图谱间的实体对齐
【自然语言处理】【知识图谱】用于实体对齐的多视角知识图谱嵌入
【自然语言处理】【知识图谱】MTransE:用于交叉知识对齐的多语言知识图谱嵌入
【自然语言处理】【知识图谱】SEU:无监督、非神经网络实体对齐超越有监督图神经网络?
一、简介
随着知识图谱的发展和应用,有许多的知识图谱被创建并应用于不同的目标。这些图谱可能是互补的,如果可以将这些图谱融合为一个更大的图谱,那么就能改善下游基于知识图谱的应用。将这些知识图谱集成为统一图谱的主要挑战之一就是实体对齐(Entity Alignment)。
在实际应用中,知识图谱通常被保存在
RDF
\text{RDF}
RDF三元组中。
RDF
\text{RDF}
RDF三元组的形式为
⟨
s
u
b
j
e
c
t
,
r
e
l
a
t
i
o
n
s
h
i
p
/
p
r
e
d
i
c
a
t
e
,
o
b
j
e
c
t
⟩
\langle subject, relationship/predicate,object\rangle
⟨subject,relationship/predicate,object⟩
其中,
s
u
b
j
e
c
t
subject
subject表示实体,
o
b
j
e
c
t
object
object表示实体或者属性值。若
o
b
j
e
c
t
object
object为实体,那么称该三元组为关系三元组;若
o
b
j
e
c
t
object
object为属性三元组,则该三元组称为属性三元组。
最近,有许多基于嵌入的实体对齐方法被提出,而这些方法是建立在知识图谱嵌入模型的基础上(例如 TransE \text{TransE} TransE)。 TransE \text{TransE} TransE能够学习关系三元组知识图谱中实体的嵌入向量,并且该向量能够捕获到实体间的语义相似性。但是, TransE \text{TransE} TransE无法直接应用于实体对齐。因为,只有两个知识图谱的嵌入向量落入相同的向量空间,才能使用那些向量进行实体对齐。为了解决这个问题,先前的研究提出分别学习两个知识图谱的嵌入向量,然后使用一个映射矩阵将一个图谱的嵌入向量映射到另一个图谱的空间中。但是,这种方法非常依赖大量的种子对齐实体。然而,种子对齐实体通常很难获得。
论文提出了一种新的嵌入模型来解决上面的限制。首先,从图谱的属性三元组中生成属性嵌入向量;然后,使用属性嵌入向量将两个知识图谱的实体迁移至相同的向量空间。
论文作者观察到,许多知识图谱包含大量的属性三元组,但是目前的实体对齐方法并没有利用起来。例如,在知识图谱 D B p e i d a DBpeida DBpeida、 Y A G O YAGO YAGO、 L i n k e d G e o D a t a LinkedGeoData LinkedGeoData、 G e o n a m e s Geonames Geonames,分别包含47.62%、62.78%、94.66%和76.78%的属性三元组。
论文贡献:
- 提出了一种实体对齐框架,其由一个predicate alignment模块、embedding learning模块和entity alignment模块组成。
- 提出了一种新颖的嵌入向量学习模型,能够将实体嵌入向量和属性嵌入向量相结合,从而为不同的知识图谱生成统一的嵌入空间。
- 论文在三个数据集上进行了评估,结果显示state-of-the-art。
二、预备知识
一个知识图谱 G G G通常是由关系三元组和属性三元组组成。关系三元组的形式为 ⟨ h , r , t ⟩ \langle h,r,t\rangle ⟨h,r,t⟩,其中 r r r是两个实体 h h h和 t t t间的关系。属性三元组的形式为 ⟨ h , r , a ⟩ \langle h,r,a\rangle ⟨h,r,a⟩,其中 a a a是实体 h h h在属性 r r r上的取值。
给定两个知识图谱 G 1 G_1 G1和 G 2 G_2 G2,实体对齐任务的目标是寻找匹配实体对 ⟨ h 1 , h 2 ⟩ \langle h_1,h_2\rangle ⟨h1,h2⟩,其中 h 1 ∈ G 1 , h 2 ∈ G 2 h_1\in G_1,h_2\in G_2 h1∈G1,h2∈G2, h 1 h_1 h1和 h 2 h_2 h2表示现实世界中的同一实体。图谱嵌入方法会为三元组中每个元素分配一个连续的向量表示,形式为 ⟨ h,r,t ⟩ \langle\textbf{h,r,t}\rangle ⟨h,r,t⟩和 ⟨ h,r,ta ⟩ \langle\textbf{h,r,ta}\rangle ⟨h,r,ta⟩,其中黑体表示对应元素的向量表示。
1. TransE
许多基于嵌入的实体对齐算法均是基于TransE,这里对算法TransE进行简单的介绍并说明该方法面临的限制。
给定一个关系三元组 ⟨ h , r , t ⟩ \langle h,r,t\rangle ⟨h,r,t⟩,算法TransE假设实体 t t t的嵌入向量应该与实体 h h h的嵌入向量加上关系 r r r嵌入向量接近,即 h+r ≈ t \textbf{h+r}\approx\textbf{t} h+r≈t。通过这样的方法得到的嵌入向量会保存实体的结构信息,即在共享相似邻居结构的实体,其向量表示也相近。这种能够保存结构信息的嵌入向量,称之为结构嵌入。
TransE通过最小化下面的loss来实现结构嵌入:
J
S
E
=
∑
t
r
∈
T
r
∑
t
r
′
∈
T
r
′
max
(
0
,
[
γ
+
f
(
t
r
)
−
f
(
t
r
′
)
]
)
T
r
=
{
⟨
h
,
r
,
t
⟩
∣
⟨
h
,
r
,
t
⟩
∈
G
}
;
f
(
t
r
)
=
∣
∣
h+r-t
∣
∣
\begin{aligned} &J_{SE}=\sum_{t_r\in T_r}\sum_{t'_r\in T'_r}\text{max}(0,[\gamma+f(t_r)-f(t'_r)])\\ &T_r=\{\langle h,r,t\rangle|\langle h,r,t\rangle\in G\};f(t_r)=||\textbf{h+r-t}|| \end{aligned}
JSE=tr∈Tr∑tr′∈Tr′∑max(0,[γ+f(tr)−f(tr′)])Tr={⟨h,r,t⟩∣⟨h,r,t⟩∈G};f(tr)=∣∣h+r-t∣∣
其中,
∣
∣
x
∣
∣
||\textbf{x}||
∣∣x∣∣表示向量
x
\textbf{x}
x的L1范数,
γ
\gamma
γ是一个边界超参,
T
r
T_r
Tr是训练数据集中的有效关系三元组集合,
T
r
′
T'_r
Tr′是无效关系三元组集合,
E
E
E是
G
G
G中的实体集合。
T
r
′
=
{
⟨
h
′
,
r
,
t
⟩
∥
h
′
∈
E
}
∪
{
⟨
h
,
r
,
t
′
⟩
∣
t
′
∈
E
}
T'_r=\{\langle h',r,t\rangle\|h'\in E\}\cup\{\langle h,r,t'\rangle|t'\in E\}
Tr′={⟨h′,r,t⟩∥h′∈E}∪{⟨h,r,t′⟩∣t′∈E}
将有效三元组集合
T
r
T_r
Tr中的头实体或者尾实体进行随机替换,从而生成无效三元组集合
T
r
′
T'_r
Tr′。
- TransE会为关系三元组中的每个实体生成一个低维且连续的向量,该向量保存了知识图谱中的隐含语言信息。例如,实体 d b p : G e r m a n y dbp:Germany dbp:Germany的嵌入向量与 d b p : F r a n c e dbp:France dbp:France接近,因为这两个实体都是欧洲的国家且具有相似的相邻实体类型(例如president、continet等)。
- 对于实体对齐任务来说,直接使用TransE是有局限性的。具体来说,不同图谱上获得的嵌入向量可能会落入不用的向量空间,导致相似度无法直接计算。目前,通过计算转换矩阵来解决该问题的方法需要依赖大量的种子对齐实体。这种方法不容易扩展且非常容易收到种子对齐实体质量的影响。
三、解决方案概述
整个解决方案如图1所示,其由三部分组成,分别为:predicate alignment模块、embedding learning模块、entity alignment模块。
- 为了使两个知识图谱的关系三元组嵌入向量具有统一的向量空间。predicate alignment模块将两个知识图谱中相似的predicate进行了合并。例如, d b p : b o r n I n dbp:bornIn dbp:bornIn和 y a g o : w a s B o r n I n yago:wasBornIn yago:wasBornIn,这里会使用统一的命名规则将两者合并为 b o r n I n bornIn bornIn。基于predicate的合并,可以将两个知识图谱 G 1 G_1 G1和 G 2 G_2 G2合并为 G 1 _ 2 G_{1\_2} G1_2。然后再将 G 1 _ 2 G_{1\_2} G1_2划分为关系三元组集合 T r T_r Tr和属性三元组集合 T a T_a Ta,用于后面嵌入向量的学习。
- embedding learning模块会将结构嵌入和属性嵌入进行联合学习,从而获得统一向量空间下的实体嵌入向量。具体来说,结构嵌入向量使用关系三元组 T r T_r Tr来学习,属性嵌入使用属性三元组 T a T_a Ta来学习。初始时,来自 G 1 G_1 G1和 G 2 G_2 G2实体的结构嵌入会落入不同的向量空间,因为两个图谱的命名规则不同。相反,从属性三元组 T a T_a Ta中学习到的属性嵌入能够落入相同的向量空间,因为这个属性嵌入是基于字符嵌入获得的。最终,通过属性嵌入将实体的结构嵌入转换至统一的向量空间中。这样就能够使用向量相似度来捕获图谱间的实体相似度。
- 在拥有了 G 1 G_1 G1和 G 2 G_2 G2中所有实体的嵌入向量,那么entity alignment模块就能够发现匹配实体对 ⟨ h 1 , h 2 ⟩ \langle h_1,h_2\rangle ⟨h1,h2⟩,其中 h 1 ∈ G 1 h_1\in G_1 h1∈G1并且 h 2 ∈ G 2 h_2\in G_2 h2∈G2。具体来说,相似度大于阈值 β \beta β,则认为两实体相同。
- 此外,为了进一步改善模型的效果,论文还使用关系传递规则来进一步丰富实体的属性,帮助模型构建更加健壮的属性嵌入向量。
四、Predicate Alignment模块
predicate alignment模块通过重命名两个知识图谱的predicate来实现两图谱的合并,这样就可以使关系的嵌入向量落入统一的向量空间。具体来说,通过一些predicate的命名规则可以将两个predicate进行统一。另外,还有一部分predicate可以通过部分匹配的方式来识别,例如 d b p : d i e d I n dbp:diedIn dbp:diedIn和 y a g o : d i e d I n yago:diedIn yago:diedIn或者 d b p : b o r n I n dbp:bornIn dbp:bornIn和 y a g o : w a s B o r n I n yago:wasBornIn yago:wasBornIn,可以通过编辑距离计算两个predicate最后部分内容的相似度,并设阈值为0.95,从而进一步对齐不同的predicate。
五、Embedding Learning模块
1.结构嵌入(Structure Embedding)
论文在TransE的基础上进行了改进,使得模型更加聚焦在predicate已经对齐的三元组上,从而使模块能够获得有益于实体对齐的嵌入向量。具体来说,通过添加权重
α
\alpha
α来控制嵌入向量的学习,目标函数为
J
S
E
=
∑
t
r
∈
T
r
∑
t
r
′
∈
T
r
′
max
(
0
,
γ
+
α
(
f
(
t
r
)
−
f
(
t
r
′
)
)
)
α
=
c
o
u
n
t
(
r
)
∣
T
∣
\begin{aligned} &J_{SE}=\sum_{t_r\in T_r}\sum_{t'_r\in T'_r}\text{max}(0, \gamma+\alpha(f(t_r)-f(t'_r)))\\ &\alpha=\frac{count(r)}{|T|} \end{aligned}
JSE=tr∈Tr∑tr′∈Tr′∑max(0,γ+α(f(tr)−f(tr′)))α=∣T∣count(r)
其中,
T
r
T_r
Tr是有效关系三元组集合,
T
r
′
T'_r
Tr′是无效关系三元组集合,
c
o
u
n
t
(
r
)
count(r)
count(r)是关系
r
r
r出现的次数,
∣
T
∣
|T|
∣T∣是合并知识图谱
G
1
_
2
G_{1\_2}
G1_2中三元组的总数量。
直觉上,已经对齐的predicate出现次数会高于未对齐的predicate。因为对齐的predicate在两个知识图谱中均有出现,这样就能使模型更加聚焦在对齐的三元组上。
2.属性字符嵌入(Attribute Character Embedding)
类似于TransE,这里将 r r r看作是头实体 h h h到属性值 a a a的翻译。但是,相同的属性值 a a a可能以不同的形式出现在不同的知识图谱中,例如实体的纬度50.9989和50.99888889、人名"Barack Obama" 和"Barach Hussein Obama"。因此,这里使用组合函数来编码属性值,并进一步定义出三元组中每个元素间的关系,即 h+r ≈ f a ( a ) \textbf{h+r}\approx f_a(a) h+r≈fa(a)。 f a ( a ) f_a(a) fa(a)是一个组合函数, a = { c 1 , c 2 , … , c t } a=\{c_1,c_2,\dots,c_t\} a={c1,c2,…,ct}是属性值的字符序列。组合函数能够将属性值编码成一个单独的向量,并将相似的属性值映射到相似的向量表示上。
论文定义了三种组合函数:
-
sum compositional function ( SUM ) \text{sum compositional function}(\textbf{SUM}) sum compositional function(SUM)
该组合函数会将属性值的所有字符向量相加,
f a ( a ) = c 1 + c 2 + ⋯ + c t f_a(a)=\textbf{c}_1+\textbf{c}_2+\dots+\textbf{c}_t fa(a)=c1+c2+⋯+ct
其中, c 1 , c 2 , … , c t \textbf{c}_1,\textbf{c}_2,\dots,\textbf{c}_t c1,c2,…,ct是属性值的字符向量。但是,该组合函数存在一个问题。若两个属性值包含同样的字符集但顺序不同,该组合函数仍然会为这两个属性值分配相同的向量表示。例如坐标"50.15"和"15.05"会有相同的向量表示。 -
LSTM-based compositional function ( LSTM ) \text{LSTM-based compositional function}(\textbf{LSTM}) LSTM-based compositional function(LSTM)
为了解决 SUM \textbf{SUM} SUM的问题,提出了基于LSTM的组合函数。该组合函数使用LSTM来编码字符序列至单个向量,并使用最终的hidden state作为整个属性值的向量表示。
f a ( a ) = f l s t m ( c 1 , c 2 , … , c t ) f_a(a)=f_{lstm}(\textbf{c}_{1},\textbf{c}_{2},\dots,\textbf{c}_t) fa(a)=flstm(c1,c2,…,ct)
其中, f l s t m f_{lstm} flstm表示LSTM网络。 -
N-gram-based compositional function ( N-gram ) \text{N-gram-based compositional function}(\textbf{N-gram}) N-gram-based compositional function(N-gram)
除了使用LSTM以外,还提供了一种基于N-gram的可选组合函数。
f a ( a ) = ∑ n = 1 N ( ∑ i = 1 t ∑ j = i n c j t − i − 1 ) f_a(a)=\sum_{n=1}^N\Big(\sum_{i=1}^t\frac{\sum_{j=i}^n\textbf{c}_j}{t-i-1}\Big) fa(a)=n=1∑N(i=1∑tt−i−1∑j=incj)
其中, N N N是n-gram中 n n n的上限(论文实验中 N = 10 N=10 N=10), t t t是属性值的长度。
最后,为了能够学习得到属性字符的嵌入向量,最小化目标函数
J
C
E
J_{CE}
JCE,
J
C
E
=
∑
t
a
∈
T
a
∑
t
a
′
∈
T
a
′
max
(
0
,
[
γ
+
α
(
f
(
t
a
)
−
f
(
t
a
′
)
)
]
)
T
a
=
{
⟨
h
,
r
,
a
⟩
∈
G
}
;
f
(
t
a
)
=
∣
∣
h+r
−
f
a
(
a
)
∣
∣
T
a
′
=
{
⟨
h
′
,
r
,
a
⟩
∣
h
′
i
n
E
}
∪
{
⟨
h
,
r
,
a
′
⟩
∣
a
′
∈
A
}
\begin{aligned} &J_{CE}=\sum_{t_a\in T_a}\sum_{t'_a\in T'_a}\text{max}(0, [\gamma+\alpha(f(t_a)-f(t'_a))])\\ &T_a=\{\langle h,r,a\rangle\in G\};f(t_a)=||\textbf{h+r}-f_a(a)||\\ &T'_a=\{\langle h',r,a\rangle|h'in E\}\cup\{\langle h,r,a'\rangle|a'\in A\} \end{aligned}
JCE=ta∈Ta∑ta′∈Ta′∑max(0,[γ+α(f(ta)−f(ta′))])Ta={⟨h,r,a⟩∈G};f(ta)=∣∣h+r−fa(a)∣∣Ta′={⟨h′,r,a⟩∣h′inE}∪{⟨h,r,a′⟩∣a′∈A}
其中,
T
a
T_a
Ta是训练数据中的有效属性三元组集合,
T
a
′
T'_a
Ta′是无效属性三元组集合,
A
A
A是
G
G
G中属性集合。无效三元组集合通过随机替换有效三元组的头实体或属性值来生成。
f
(
t
a
)
f(t_a)
f(ta)是基于
h
h
h、
r
r
r和
f
a
(
a
)
f_a(a)
fa(a)的可信评分函数。
3. 联合学习两种嵌入
除了用于学习结构的
J
S
E
J_{SE}
JSE以及学习属性的
J
C
E
J_{CE}
JCE,还需要将两者进行联合学习。即使用属性字符嵌入向量
h
c
e
\textbf{h}_{ce}
hce将结构嵌入向量
h
s
e
\textbf{h}_{se}
hse转换到相同的向量空间,
J
S
I
M
=
∑
h
∈
G
1
∪
G
2
[
1
−
c
o
s
(
h
s
e
,
h
c
e
)
]
J_{SIM}=\sum_{h\in G_1\cup G_2}[1-cos(\textbf{h}_{se},\textbf{h}_{ce})]
JSIM=h∈G1∪G2∑[1−cos(hse,hce)]
其中,
c
o
s
(
h
s
e
,
h
c
e
)
cos(\textbf{h}_{se},\textbf{h}_{ce})
cos(hse,hce)是向量
h
s
e
\textbf{h}_{se}
hse和
h
c
e
\textbf{h}_{ce}
hce的cosine相似度。
直觉上,两图谱的 h c e \textbf{h}_{ce} hce会直接落入相同的向量空间, h s e \textbf{h}_{se} hse则相反。使用 J S I M J_{SIM} JSIM约束两者相似,将会使两图谱的 h s e \textbf{h}_{se} hse也落入相同的向量空间。
最终的联合学习目标函数为
J
=
J
S
E
+
J
C
E
+
J
S
I
M
J=J_{SE}+J_{CE}+J_{SIM}
J=JSE+JCE+JSIM
六、Entity Alignment模块
基于embedding learning学习到的嵌入向量能够令
G
1
G_1
G1和
G
2
G_2
G2中的相似实体具有相似的嵌入向量,所以最终的嵌入向量能够用于实体对齐。具体来说,计算下面的值
h
m
a
p
=
argmax
h
2
∈
G
2
c
o
s
(
h
1
,
h
2
)
h_{map}=\mathop{\text{argmax}}_{h_2\in G_2}cos(\textbf{h}_1,\textbf{h}_2)
hmap=argmaxh2∈G2cos(h1,h2)
若给定一个实体
h
1
∈
G
1
h_1\in G_1
h1∈G1,那么计算
h
1
h_1
h1和所有实体
h
2
∈
G
2
h_2\in G_2
h2∈G2的相似度,并将大于阈值
β
\beta
β的实体对作为对齐实体,即
⟨ h 1 , h m a p ⟩ \langle h_1,h_{map}\rangle ⟨h1,hmap⟩是对齐实体。
七、通过传递性规则来增强三元组
即使结构嵌入能够隐含的学习关系传递的信息,显式地将这些关系传递的信息添加至属性中,也依然能够帮助改进实体间相似度的计算。
例如,给定三元组
⟨ d b p : E m p o r i u m T o w e r , : l o c a t e d I n , d b p : L o n d o n ⟩ \langle dbp:Emporium_Tower,:locatedIn, dbp:London\rangle ⟨dbp:EmporiumTower,:locatedIn,dbp:London⟩和 ⟨ d b p : L o n d o n , : c o u n t r y , d b p : E n g l a n d ⟩ \langle dbp:London,:country,dbp:England\rangle ⟨dbp:London,:country,dbp:England⟩
那么可以推断出, dbp:Emporium_Tower \text{dbp:Emporium\_Tower} dbp:Emporium_Tower和 dbp:England \text{dbp:England} dbp:England有关系。事实上,这个信息能够用来丰富实体 dbp:Emporium_Tower \text{dbp:Emporium\_Tower} dbp:Emporium_Tower。
具体来说,按照如下的规则来利用一跳关系:
给定一对具有传递关系的三元组 ⟨ h 1 , r 1 , t ⟩ \langle h_1,r_1,t\rangle ⟨h1,r1,t⟩和 ⟨ t , r 2 , t 2 ⟩ \langle t,r_2,t_2\rangle ⟨t,r2,t2⟩,将 r 1 . r 2 r_1.r_2 r1.r2作为头实体 h 1 h_1 h1和尾实体 t 2 t_2 t2的关系。那么可以定义一个类似TransE的向量间关系: h 1 + ( r 1 . r 2 ) ≈ t 2 \textbf{h}_1+(\textbf{r}_1.\textbf{r}_2)\approx\textbf{t}_2 h1+(r1.r2)≈t2。这样,若存在传递三元组,则将模板函数中公式 ( 4 ) (4) (4)和 ( 9 ) (9) (9)中的关系向量 r \textbf{r} r替换为 r 1 . r 2 \textbf{r}_1.\textbf{r}_2 r1.r2。