基于ptranse模型的知识图谱链接预测方法
技术领域
1.本方法涉及一种基于ptranse模型的知识图谱链接预测方法。
背景技术:
2.知识库将人类知识组织成结构化的知识系统,它描述现实世界中实体(entity)间的关系(relation)。人们花费大量精力构建了各种结构化的知识库,如语言知识库wordnet、世界知识库freebase等。知识库是推动人工智能学科发展和支撑智能信息服务应用(如智能搜索、智能问答、个性化推荐等)的重要基础技术。为了改进信息服务质量,国内外互联网公司(特别是搜索引擎公司)纷纷推出知识库产品,如谷歌知识图谱、微软bing satori、百度知心以及搜狗知立方等。著名的ibm watson问答系统和苹果siri语音助理的背后,知识库也扮演着重要角色。知识库的兴起拉开了智能信息检索从字符串匹配跃迁至智能理解的序幕。
3.知识图谱由google公司于2012年6月正式提出,是一种基于图的数据结构。知识图谱是一种结构化的语义知识库,以图的形式来展现现实世界中各个实体及其相互之间的关系,并用形式化的方式来进行描述。知识图谱的基本组成单元的通用表示形式是实体、“实体
‑
关系
‑
实体”三元组,以及实体的“属性
‑
值”对。知识图谱以“实体
‑
关系
‑
实体”或“实体
‑
属性
‑
属性值”的三元组表达形式存储,这些数据将构成可观的实体关系网络,即知识的“图谱”。
4.表示学习的目标是,通过机器学习将研究对象的语义信息表示为稠密低维实值向量。知识表示学习是面向知识库中实体和关系的表示学习,通过将实体或关系投影到低维向量空间,能够实现对实体和关系的语义信息的表示,可以高效地计算实体、关系及其之间的复杂语义关联。知识库的表示学习旨在将实体和关系嵌入到一个低维空间中。大多数现有的方法在表示学习中只考虑直接关系,而ptranse提出了一种基于路径的表示学习模型,它将关系路径作为表示学习实体之间的转换。但是它仅仅依赖于关系,并且直接使用特定实体信息,在推演多步关系时仍然存在一定局限性。
5.长短期记忆网络(long short
‑
term memory,lstm),最早由hochreiter、schmidhuber于1997年提出,该模型由于能更好地发现长期依赖关系而被广泛用于处理时间序列信息。lstm可以看作为特殊的rnn,其主要为解决长序列训练过程中的梯度消失及梯度爆炸问题,能够在更长的时间序列上依然表现优异。
技术实现要素:
6.为了克服现有技术的不足,本发明提出了基于ptranse模型的知识图谱链接预测方法,对知识库中三元组的关系和实体分别进行关系编码和实体类型编码,获得相应的向量输出,将向量经过lstm处理后的结果输入能量函数,来判定这个三元组是否成立,从而预测知识图谱中实体间的链接关系;提升了三元组的表示精度,增加了预测结果的准确度。
7.本发明提供如下的技术方案:
8.一种基于ptranse模型的知识图谱链接预测方法,所述方法包括以下步骤:
9.第一步、从知识库中构建目标三元组,并获得该三元组中头实体和尾实体之间所有的路径关系;
10.第二步、进行关系编码,结合word2vec将目标三元组中的直接关系和所有路径关系表示成向量,并将路径关系表示成的向量输入lstm进行顺序编码;
11.第三步、进行实体类型编码,获取目标三元组的头实体和尾实体的类型上下文向量;
12.第四步、计算关系路径可靠性,并将上述结果输入能量函数,判断这个三元组是否成立。
13.进一步,所述第一步的过程如下:
14.1.1、在知识库中获取实体集e和关系集r,从中构建一个三元组s={(h,r,t)|h,t∈e∧r∈r},r是实体h和t之间的直接关系,h是头实体,t是尾实体;
15.1.2、获取h和t之间所有的关系路径集合p={p1,p2,
…
p
n
},其中,p
i
表示路径集合p中第i条路径,n表示关系路径的数量,h和t之间第i条路径表示为p
i
=<h,r
i1
,r
i2
,
…
,r
im
,t>,m表示这条关系路径上关系的数量。
16.所述第二步中,word2vec模型由mikolov等人于2013年提出,该模型将文本中的内容词汇通过转换处理,化简为空间向量,词向量的数值受上下文的影响,蕴含了词与词之间相互的关联性,过程如下:
17.2.1、将头实体h和尾实体t之间的关系路径上的关系使用word2vec转化为向量;初始化一个hashmap,用于存放头实体h和尾实体t之间的关系表示成的向量集合;
18.2.2、将hashmap中的向量顺序输入lstm,用lstm的最后一个状态作为关系路径的向量表示,用v
π
(p)表示;
19.2.3、将头实体h和尾实体t之间的直接关系r使用word2vec转化为向量,并将该向量记为再将输入lstm,用lstm的最后一个当前隐藏状态作为直接关系r的向量表示,用v
π
(r)表示。
20.更进一步,所述2.1的流程如下:
21.2.1.1、初始化一个hashmap,用于存放数组;
22.2.1.2、初始化一个arraylist,命名为relationlist,用于存放路径上的关系;
23.2.1.3、取头实体h和尾实体t之间的第i条关系路径,0<i≤n,将所有这条路径上的关系按照顺序存入relationlist;
24.2.1.4、初始化一个数组arrayvec,其长度为relationlist的长度,用于存放关系转化成的向量;
25.2.1.5、遍历relationlist,得到第j个关系,0<j≤relationlist.length,使用word2vec将关系转化为向量vec
j
;
26.2.1.6、将向量vec
j
存入arrayvec[j
‑
1];
[0027]
2.1.7、判断relationlist是否遍历完成,若否,返回2.1.5,否则进行2.1.8;
[0028]
2.1.8、将数组arrayvec存入hashmap,hashmap的key值为i,value为数组arrayvec;
[0029]
2.1.9、判断关系路径是否已经全部存入hashmap,若否,返回2.1.3,否则进行2.2;
[0030]
所述2.2中,lstm主要由细胞状态和“门”结构。细胞状态相当于信息传输的路径,让信息能在序列链中传递下去;lstm有三种门结构:遗忘门、输入门和输出门,遗忘门的功能是决定应丢弃或保留哪些信息,来自前一个隐藏状态的信息和当前输入的信息同时传递到sigmoid函数中去,输出值介于0和1之间,越接近0意味着越应该丢弃,越接近1意味着越应该保留。输入门用于更新细胞状态;首先将前一层隐藏状态的信息和当前输入的信息传递到sigmoid函数中去,将值调整到0
‑
1之间来决定要更新哪些信息;0表示不重要,1表示重要;输出门用来确定下一个隐藏状态的值,隐藏状态包含了先前输入的信息,首先将前一个隐藏状态和当前输入传递到sigmoid函数中,然后将新得到的细胞状态传递给tanh函数;
[0031]
其中sigmoid函数常被用做神经网络的激活函数,其公式如下:
[0032][0033]
其中tanh函数是一个双曲正切函数,值域为(
‑
1,1),其公式如下:
[0034][0035]
再进一步,所述2.2的过程如下:
[0036]
2.2.1、遍历hashmap,取key为k的value值,0<k≤n;
[0037]
2.2.2、遍历value当中的数组,取第x个向量vec
x
,其中x的取值范围为0<x≤hashmap.get(k).length;
[0038]
2.2.3、设置lstm初始细胞状态c0=0,初始隐藏状态h0=0;
[0039]
2.2.4、将先前细胞状态c
x
‑1、先前隐藏状态h
x
‑1和向量vec
x
输入lstm,输出当前细胞状态c
x
和当前隐藏状态h
x
。其中,先前细胞状态和先前隐藏状态即为上一层lstm的当前细胞状态和当前隐藏状态;继续重复执行2.2.2直至数组内的元素遍历完毕
[0040]
2.2.5、判断hashmap是否遍历完成,若否,重复步骤2.2.1,否则进入步骤2.2.6;
[0041]
2.2.6、获得lstm的当前隐藏状态,并将它作为这条关系路径的向量表示,即v
π
(p);
[0042]
2.2.7、从步骤2.1.3重新开始,直到计算出头实体h和尾实体t之间所有关系路径的向量表示;
[0043]
更进一步,所述2.2.4中,lstm的计算步骤如下:
[0044]
2.2.4.1、计算遗忘门:将先前隐藏状态h
x
‑1和向量vec
x
拼接成一个向量vech,经过一层全连接层计算后,再将vech传入sigmoid函数,获得遗忘门的输出,f
x
;
[0045]
2.2.4.2、计算输入门:将vech分别传入sigmoid函数和tanh函数,vech传入sigmoid函数后再经过一层全连接层计算,获得输入门输出i
x
,vech传入tanh函数后的输出值为候选向量
ā
x
,将sigmoid函数和tanh函数的输出值相乘;
[0046]
2.2.4.3、计算细胞状态:将先前细胞状态与遗忘门输出值相乘,再加上sigmoid函数和tanh函数的输出值相乘的结果,当前细胞状态计算公式如下:
[0047]
c
x
=f
x
·
c
x
‑1 i
x
·
ā
x
[0048]
2.2.4.4、计算输出门:将vech经过一层全连接层计算后输入sigmoid函数,得到o
x
,再将当前细胞状态c
x
输入tanh函数后的结果与o
x
相乘,得到当前隐藏状态h
x
。
[0049]
进一步,所述2.3的计算过程如下:
[0050]
2.3.1、设置lstm初始细胞状态c0=0,初始隐藏状态h0=0;
[0051]
2.3.2、计算遗忘门:将先前隐藏状态h0和向量r拼接成一个向量rh,经过一层全连接层计算后,再将rh传入sigmoid函数,获得遗忘门的输出,f1;
[0052]
2.3.3、计算输入门:将rh分别传入sigmoid函数和tanh函数,rh传入sigmoid函数后再经过一层全连接层计算,获得输入门输出i1,vech传入tanh函数后的输出值为候选向量
ā1,将sigmoid函数和tanh函数的输出值相乘;
[0053]
2.3.4、计算细胞状态:将先前细胞状态与遗忘门输出值相乘,再加上sigmoid函数和tanh函数的输出值相乘的结果,当前细胞状态计算公式如下:
[0054]
c1=f1·
c0 i1·
ā1[0055]
2.3.5、计算输出门:将rh经过一层全连接层计算后输入sigmoid函数,得到o1,再将当前细胞状态c1输入tanh函数后的结果与o1相乘,得到当前隐藏状态,h1,即是所求v
π
(r)。
[0056]
所述第三步的过程如下:
[0057]
3.1、初始化一个hashmap,命名为entitymap,用于存放第二步中选择的关系路径上的头实体h和尾实体t之间的实体表示成的向量集合;
[0058]
3.2、获取选定关系路径上的头实体h和尾实体t之间的所有实体(包括头实体h和尾实体t)的实体类型;
[0059]
3.3、用word2vec把实体的实体类型转化为向量,再用lstm处理这些向量,最终结果存入hashmap;
[0060]
进一步,所述3.3的步骤如下:
[0061]
3.3.1、初始化一个arraylist,将选定关系路径上的所有实体,包括头实体h和尾实体t按顺序存入arraylist;
[0062]
3.3.2、遍历arraylist,给每一个实体设置一个类型层次结构的集合l,实体e
t
表示arraylist中第t个实体的表示,0<t≤n,n表示arraylist的长度。其中,e0=h,e
arraylist.length
‑1=t,l
t
表示第t个实体的类型层次结构集合,l
t
={l
t,1
,
…
,l
t,c
},l
t,1
表示最具体的类型,l
t,c
表示实体e
t
高度为c的类型层次结构中最抽象的类型;
[0063]
3.3.3、将每个实体的层次类型转化为向量,得到v
t
={v
t
(l
t,1
),
…
,v
t
(l
t,c
)};
[0064]
3.3.4、判断是否遍历完成,若否,返回3.3.3,否则,进入3.3.5;
[0065]
3.3.5、计算实体e
t
选择的类型向量,并计算实体e
t
的类型上下文向量;
[0066]
3.3.6、获取头实体h和尾实体t的类型上下文向量;
[0067]
3.3.7、将实体和实体的类型上下文向量存入hashmap,key为实体,value为该实体的类型上下文向量;
[0068]
更进一步,所述步骤3.3.5的过程如下:
[0069]
3.3.5.1、设置初始细胞状态c0=f
init,c
(v
π
(p)),初始隐藏状态h0=f
init,h
(v
π
(p)),其中,f
init,c
,f
init,h
是两个独立的前馈网络;
[0070]
3.3.5.2、计算上下文向量计算公式为:
[0071]
3.3.5.3、遍历arraylist,计算实体e
t
选择第m层抽象结构后的向量表示,计算公式如下,其中f
att,type
是一个前馈网络:
[0072][0073]
3.3.5.4、计算实体e
t
选择第m层结构类型的权重α
t,m
,这个权重表示m是正确的抽象级别的概率,计算公式如下,其中exp(x)=e
x
:
[0074][0075]
3.3.5.5、计算实体e
t
的类型上下文向量表示其计算公式如下:
[0076][0077]
3.3.5.6、将先前隐藏状态和先前细胞状态以及,类型向下文向量输入lstm,计算当前隐藏状态和当前细胞状态;
[0078]
3.3.5.7、判断是否遍历完成,若否,返回3.3.5.3,否则,进入步骤3.3.5.8
[0079]
3.3.5.8、计算头实体h的类型上下文向量表示,即计算
[0080]
3.3.5.9、计算尾实体t的类型上下文向量表示,即计算
[0081]
更进一步,步骤3.3.5.6的过程如下:
[0082]
3.3.5.6.1、计算遗忘门:将先前隐藏状态h
t
‑1和向量拼接成一个向量经过一层全连接层计算后,再传入sigmoid函数,获得遗忘门的输出,f
x
;
[0083]
3.3.5.6.2、计算输入门:将分别传入sigmoid函数和tanh函数,传入sigmoid函数后再经过一层全连接层计算,获得输入门输出i
t
,传入tanh函数后的输出值为候选向量将sigmoid函数和tanh函数的输出值相乘。
[0084]
3.3.5.6.3、计算细胞状态:将先前细胞状态与遗忘门输出值相乘,再加上sigmoid函数和tanh函数的输出值相乘的结果,当前细胞状态计算公式如下:
[0085][0086]
3.3.5.6.4、计算输出门:将经过一层全连接层计算后输入sigmoid函数,得到o
t
,再将当前细胞状态c
t
输入tanh函数后的结果与o
t
相乘,得到当前隐藏状态,h
t
;
[0087]
所述第四步过程如下:
[0088]
4.1、使用ptranse模型的路径约束资源分配算法(path
‑
constraint resource allocation algorithm,pcra),计算出第二步中选定的这条关系路径的关系路径可靠性r(p|h,t);
[0089]
4.2、重复4.1直到计算出所有关系路径的关系路径可靠性;
[0090]
4.3、计算这个三元组的能量函数;
[0091]
进一步,所述4.3的计算过程如下:
[0092]
4.3.1、计算头实体h、直接关系r和尾实体t组成的三元组的能量函数,其中,h用头实体的类型上下文向量表示,t用尾实体t的类型上下文向量表示,r用2.3的结果v
π
(r)表示。在ptranse中,关系表示为头实体向量和尾实体向量之间的平移,即h r=t,计算能量函数就是计算头实体向量与关系向量的和与尾实体向量之间的偏移量,即计算h r
‑
t的值。计算公式如下,其中||||表示计算向量的模长:
[0093][0094]
4.3.2、计算头实体h、所有关系路径p和尾实体t组成的三元组的能量函数,其中,h用头实体的类型上下文向量表示,t用尾实体t的类型上下文向量表示,p用2.2.6的结果v
π
(p)表示,计算公式如下:
[0095][0096]
其中,z是归一化因子,表示所有关系路径可靠性的总和,z=∑
p∈p(h,t)
r(p|h,t),r(p|h,t)表示这条关系路径的关系路径可靠性,用4.1的结果表示。e(h,p,t)的计算公式如下所示;
[0097]
e(h,p,t)=||h p
‑
t||=||p
‑
(t
‑
h)||=||p
‑
r||=e(p,r)
[0098]
而||p
‑
r||=||v
π
(p)
‑
v
π
(r)||;
[0099]
要使得直接关系三元组的能量函数e(h,r,t)最小,就要保证直接关系r≈t
‑
h,由此,将e(h,p,t)的计算公式进行变形,h p
‑
t变形为p
‑
(t
‑
h),而r≈t
‑
h,因此h p
‑
t可以变形为p
‑
r,计算e(h,p,t)就是计算e(p,r),即关系路径的向量表示与直接关系r的向量表示的偏移量的模长;
[0100]
4.3.3、计算头实体、尾实体和所有关系路径组成的三元组的能量函数,计算公式如下:
[0101]
g(h,r,t)=e(h,r,t) e(h,p,t)
[0102]
4.3.4、判断能量函数的值是否小于一个设定的值,若小于,这个直接关系r可以链接头实体h和尾实体r,这个三元组就成立;否则,不成立。
[0103]
本发明的有益效果主要表现在:在对知识图谱进行链接预测时,可以使用本方法对三元组进行关系编码和实体类型编码来进行预测结果,优化ptranse模型对三元组的表示,引入了实体和关系的上下文,提升了三元组的表示精度,增加了预测结果的准确度。
具体实施方式
[0104]
下面对本发明做进一步说明。
[0105]
一种基于ptranse模型的知识图谱链接预测方法,所述方法包括以下步骤:
[0106]
第一步、从知识库中构建目标三元组,并获得该三元组中头实体和尾实体之间所有的路径关系,过程如下:
[0107]
1.1、在知识库中获取实体集e和关系集r,从中构建一个三元组s={(h,r,t)|h,t∈e∧r∈r},r是实体h和t之间的直接关系,h是头实体,t是尾实体;
[0108]
1.2、获取h和t之间所有的关系路径集合p={p1,p2,
…
p
n
},其中,p
i
表示路径集合p中第i条路径,n表示关系路径的数量,h和t之间第i条路径表示为p
i
=<h,r
i1
,r
i2
,
…
,r
im
,t>,m表示这条关系路径上关系的数量。
[0109]
第二步、进行关系编码,结合word2vec将目标三元组中的直接关系和所有路径关系表示成向量,并将路径关系表示成的向量输入lstm进行顺序编码;
[0110]
所述第二步中,word2vec模型由mikolov等人于2013年提出,该模型将文本中的内容词汇通过转换处理,化简为空间向量,词向量的数值受上下文的影响,蕴含了词与词之间
相互的关联性,过程如下:
[0111]
2.1、将头实体h和尾实体t之间的关系路径上的关系使用word2vec转化为向量;初始化一个hashmap,用于存放头实体h和尾实体t之间的关系表示成的向量集合;
[0112]
2.1.1、初始化一个hashmap,用于存放数组;
[0113]
2.1.2、初始化一个arraylist,命名为relationlist,用于存放路径上的关系;
[0114]
2.1.3、取头实体h和尾实体t之间的第i条关系路径,0<i≤n,将所有这条路径上的关系按照顺序存入relationlist;
[0115]
2.1.4、初始化一个数组arrayvec,其长度为relationlist的长度,用于存放关系转化成的向量;
[0116]
2.1.5、遍历relationlist,得到第j个关系,0<j≤relationlist.length,使用word2vec将关系转化为向量vec
j
;
[0117]
2.1.6、将向量vec
j
存入arrayvec[j
‑
1];
[0118]
2.1.7、判断relationlist是否遍历完成,若否,返回2.1.5,否则进行2.1.8;
[0119]
2.1.8、将数组arrayvec存入hashmap,hashmap的key值为i,value为数组arrayvec;
[0120]
2.1.9、判断关系路径是否已经全部存入hashmap,若否,返回2.1.3,否则进行2.2;
[0121]
2.2、将hashmap中的向量顺序输入lstm,用lstm的最后一个状态作为关系路径的向量表示,用v
π
(p)表示;
[0122]
所述2.2中,lstm主要由细胞状态和“门”结构。细胞状态相当于信息传输的路径,让信息能在序列链中传递下去;lstm有三种门结构:遗忘门、输入门和输出门,遗忘门的功能是决定应丢弃或保留哪些信息,来自前一个隐藏状态的信息和当前输入的信息同时传递到sigmoid函数中去,输出值介于0和1之间,越接近0意味着越应该丢弃,越接近1意味着越应该保留;输入门用于更新细胞状态,首先将前一层隐藏状态的信息和当前输入的信息传递到sigmoid函数中去。将值调整到0
‑
1之间来决定要更新哪些信息,0表示不重要,1表示重要;输出门用来确定下一个隐藏状态的值,隐藏状态包含了先前输入的信息,首先将前一个隐藏状态和当前输入传递到sigmoid函数中,然后将新得到的细胞状态传递给tanh函数;
[0123]
其中sigmoid函数常被用做神经网络的激活函数,其公式如下:
[0124][0125]
其中tanh函数是一个双曲正切函数,值域为(
‑
1,1),其公式如下:
[0126][0127]
所述2.2的过程如下:
[0128]
2.2.1、遍历hashmap,取key为k的value值,0<k≤n;
[0129]
2.2.2、遍历value当中的数组,取第x个向量vec
x
,其中x的取值范围为0<x≤hashmap.get(k).length;
[0130]
2.2.3、设置lstm初始细胞状态c0=0,初始隐藏状态h0=0;
[0131]
2.2.4、将先前细胞状态c
x
‑1、先前隐藏状态h
x
‑1和向量vec
x
输入lstm,输出当前细胞状态c
x
和当前隐藏状态h
x
。其中,先前细胞状态和先前隐藏状态即为上一层lstm的当前细
胞状态和当前隐藏状态;继续重复执行2.2.2直至数组内的元素遍历完毕,计算过程如下:
[0132]
2.2.4.1、计算遗忘门:将先前隐藏状态h
x
‑1和向量vec
x
拼接成一个向量vech,经过一层全连接层计算后,再将vech传入sigmoid函数,获得遗忘门的输出,f
x
;
[0133]
2.2.4.2、计算输入门:将vech分别传入sigmoid函数和tanh函数,vech传入sigmoid函数后再经过一层全连接层计算,获得输入门输出i
x
,vech传入tanh函数后的输出值为候选向量
ā
x
,将sigmoid函数和tanh函数的输出值相乘;
[0134]
2.2.4.3、计算细胞状态:将先前细胞状态与遗忘门输出值相乘,再加上sigmoid函数和tanh函数的输出值相乘的结果,当前细胞状态计算公式如下:
[0135]
c
x
=f
x
·
c
x
‑1 i
x
·
ā
x
[0136]
2.2.4.4、计算输出门:将vech经过一层全连接层计算后输入sigmoid函数,得到o
x
,再将当前细胞状态c
x
输入tanh函数后的结果与o
x
相乘,得到当前隐藏状态h
x
;
[0137]
2.2.5、判断hashmap是否遍历完成,若否,重复步骤2.2.1,否则进入步骤2.2.6;
[0138]
2.2.6、获得lstm的当前隐藏状态,并将它作为这条关系路径的向量表示,即v
π
(p);
[0139]
2.2.7、从步骤2.1.3重新开始,直到计算出头实体h和尾实体t之间所有关系路径的向量表示;
[0140]
2.3、将头实体h和尾实体t之间的直接关系r使用word2vec转化为向量,并将该向量记为再将输入lstm,用lstm的最后一个当前隐藏状态作为直接关系r的向量表示,用v
π
(r)表示,过程如下:
[0141]
2.3.1、设置lstm初始细胞状态c0=0,初始隐藏状态h0=0;
[0142]
2.3.2、计算遗忘门:将先前隐藏状态h0和向量r拼接成一个向量rh,经过一层全连接层计算后,再将rh传入sigmoid函数,获得遗忘门的输出,f1;
[0143]
2.3.3、计算输入门:将rh分别传入sigmoid函数和tanh函数,rh传入sigmoid函数后再经过一层全连接层计算,获得输入门输出i1,vech传入tanh函数后的输出值为候选向量
ā1,将sigmoid函数和tanh函数的输出值相乘;
[0144]
2.3.4、计算细胞状态:将先前细胞状态与遗忘门输出值相乘,再加上sigmoid函数和tanh函数的输出值相乘的结果,当前细胞状态计算公式如下:
[0145]
c1=f1·
c0 i1·
ā1[0146]
2.3.5、计算输出门:将rh经过一层全连接层计算后输入sigmoid函数,得到o1,再将当前细胞状态c1输入tanh函数后的结果与o1相乘,得到当前隐藏状态,h1,即是所求v
π
(r)。
[0147]
第三步、进行实体类型编码,获取目标三元组的头实体和尾实体的类型上下文向量,过程如下:
[0148]
3.1、初始化一个hashmap,命名为entitymap,用于存放第二步中选择的关系路径上的头实体h和尾实体t之间的实体表示成的向量集合;
[0149]
3.2、获取选定关系路径上的头实体h和尾实体t之间的所有实体(包括头实体h和尾实体t)的实体类型;
[0150]
3.3、用word2vec把实体的实体类型转化为向量,再用lstm处理这些向量,最终结果存入hashmap;
[0151]
3.3.1、初始化一个arraylist,将选定关系路径上的所有实体,包括头实体h和尾实体t按顺序存入arraylist;
[0152]
3.3.2、遍历arraylist,给每一个实体设置一个类型层次结构的集合l,实体e
t
表示arraylist中第t个实体的表示,0<t≤n,n表示arraylist的长度。其中,e0=h,e
arraylist.length
‑1=t,l
t
表示第t个实体的类型层次结构集合,l
t
={l
t,1
,
…
,l
t,c
},l
t,1
表示最具体的类型,l
t,c
表示实体e
t
高度为c的类型层次结构中最抽象的类型;
[0153]
3.3.3、将每个实体的层次类型转化为向量,得到v
t
={v
t
(l
t,1
),
…
,v
t
(l
t,c
)};
[0154]
3.3.4、判断是否遍历完成,若否,返回3.3.3,否则,进入3.3.5;
[0155]
3.3.5、计算实体e
t
选择的类型向量,并计算实体e
t
的类型上下文向量,计算过程如下:
[0156]
3.3.5.1、设置初始细胞状态c0=f
init,c
(v
π
(p)),初始隐藏状态h0=f
init,h
(v
π
(p)),其中,f
init,c
,f
init,h
是两个独立的前馈网络;
[0157]
3.3.5.2、计算上下文向量计算公式为:
[0158]
3.3.5.3、遍历arraylist,计算实体e
t
选择第m层抽象结构后的向量表示,计算公式如下,其中f
att,type
是一个前馈网络:
[0159][0160]
3.3.5.4、计算实体e
t
选择第m层结构类型的权重α
t,m
,这个权重表示m是正确的抽象级别的概率,计算公式如下,其中exp(x)=e
x
:
[0161][0162]
3.3.5.5、计算实体e
t
的类型上下文向量表示其计算公式如下:
[0163][0164]
3.3.5.6、将先前隐藏状态和先前细胞状态以及,类型向下文向量输入lstm,计算当前隐藏状态和当前细胞状态;
[0165]
3.3.5.7、判断是否遍历完成,若否,返回3.3.5.3,否则,进入步骤3.3.5.8
[0166]
3.3.5.8、计算头实体h的类型上下文向量表示,即计算
[0167]
3.3.5.9、计算尾实体t的类型上下文向量表示,即计算
[0168]
3.3.6、获取头实体h和尾实体t的类型上下文向量,计算过程如下:
[0169]
3.3.5.6.1、计算遗忘门:将先前隐藏状态h
t
‑1和向量拼接成一个向量经过一层全连接层计算后,再传入sigmoid函数,获得遗忘门的输出,f
x
;
[0170]
3.3.5.6.2、计算输入门:将分别传入sigmoid函数和tanh函数,传入sigmoid函数后再经过一层全连接层计算,获得输入门输出i
t
,传入tanh函数后的输出值为候选向量将sigmoid函数和tanh函数的输出值相乘。
[0171]
3.3.5.6.3、计算细胞状态:将先前细胞状态与遗忘门输出值相乘,再加上sigmoid函数和tanh函数的输出值相乘的结果,当前细胞状态计算公式如下:
[0172][0173]
3.3.5.6.4、计算输出门:将经过一层全连接层计算后输入sigmoid函数,得到o
t
,再将当前细胞状态c
t
输入tanh函数后的结果与o
t
相乘,得到当前隐藏状态,h
t
;
[0174]
3.3.7、将实体和实体的类型上下文向量存入hashmap,key为实体,value为该实体的类型上下文向量;
[0175]
第四步、计算关系路径可靠性,并将上述结果输入能量函数,判断这个三元组是否成立,过程如下:
[0176]
4.1、使用ptranse模型的路径约束资源分配算法(path
‑
constraint resource allocation algorithm,pcra),计算出第二步中选定的这条关系路径的关系路径可靠性r(p|h,t),pcra为lin于2015年提出的算法;
[0177]
4.2、重复4.1直到计算出所有关系路径的关系路径可靠性;
[0178]
4.3、计算这个三元组的能量函数,计算过程如下:
[0179]
4.3.1、计算头实体h、直接关系r和尾实体t组成的三元组的能量函数,其中,h用头实体的类型上下文向量表示,t用尾实体t的类型上下文向量表示,r用2.3的结果v
π
(r)表示。在ptranse中,关系表示为头实体向量和尾实体向量之间的平移,即h r=t,计算能量函数就是计算头实体向量与关系向量的和与尾实体向量之间的偏移量,即计算h r
‑
t的值。计算公式如下,其中||||表示计算向量的模长:
[0180][0181]
4.3.2、计算头实体h、所有关系路径p和尾实体t组成的三元组的能量函数,其中,h用头实体的类型上下文向量表示,t用尾实体t的类型上下文向量表示,p用2.2.6的结果v
π
(p)表示,计算公式如下:
[0182][0183]
其中,z是归一化因子,表示所有关系路径可靠性的总和,z=∑
p∈p(h,t)
r(p|h,t)。r(p|h,t)表示这条关系路径的关系路径可靠性,用4.1的结果表示。e(h,p,t)的计算公式如下所示:
[0184]
e(h,p,t)=||h p
‑
t||=||p
‑
(t
‑
h)||=||p
‑
r||=e(p,r)
[0185]
而||p
‑
r||=||v
π
(p)
‑
v
π
(r)||;
[0186]
要使得直接关系三元组的能量函数e(h,r,t)最小,就要保证直接关系r≈t
‑
h,由此,将e(h,p,t)的计算公式进行变形,h p
‑
t变形为p
‑
(t
‑
h),而r≈t
‑
h,因此h p
‑
t可以变形为p
‑
r,计算e(h,p,t)就是计算e(p,r),即关系路径的向量表示与直接关系r的向量表示的偏移量的模长。
[0187]
4.3.3、计算头实体、尾实体和所有关系路径组成的三元组的能量函数,计算公式如下:
[0188]
g(h,r,t)=e(h,r,t) e(h,p,t)
[0189]
4.3.4、判断能量函数的值是否小于一个设定的值,若小于,这个直接关系r可以链接头实体h和尾实体r,这个三元组就成立;否则,不成立。
[0190]
本说明书的实施例所述的内容仅仅是对发明构思的实现形式的列举,仅作说明用
途。本发明的保护范围不应当被视为仅限于本实施例所陈述的具体形式,本发明的保护范围也及于本领域的普通技术人员根据本发明构思所能想到的等同技术手段。
技术特征:
1.一种基于ptranse模型的知识图谱链接预测方法,其特征在于,所述方法包括以下步骤:第一步、从知识库中构建目标三元组,并获得该三元组中头实体和尾实体之间所有的路径关系;第二步、进行关系编码,结合word2vec将目标三元组中的直接关系和所有路径关系表示成向量,并将路径关系表示成的向量输入lstm进行顺序编码;第三步、进行实体类型编码,获取目标三元组的头实体和尾实体的类型上下文向量;第四步、计算关系路径可靠性,并将上述结果输入能量函数,判断这个三元组是否成立。2.如权利要求1所述的一种基于ptranse模型的知识图谱链接预测方法,其特征在于,所述第一步的过程如下:1.1、在知识库中获取实体集e和关系集r,从中构建一个三元组s={(h,r,t)|h,t∈e∧r∈r},r是实体h和t之间的直接关系,h是头实体,t是尾实体;1.2、获取h和t之间所有的关系路径集合p={p1,p2,
…
p
n
},其中,p
i
表示路径集合p中第i条路径,n表示关系路径的数量,h和t之间第i条路径表示为p
i
=<h,r
i1
,r
i2
,
…
,r
im
,t>,m表示这条关系路径上关系的数量。3.如权利要求1或2所述的一种基于ptranse模型的知识图谱链接预测方法,其特征在于,所述第二步的过程如下:2.1、将头实体h和尾实体t之间的关系路径上的关系使用word2vec转化为向量;初始化一个hashmap,用于存放头实体h和尾实体t之间的关系表示成的向量集合;2.2、将hashmap中的向量顺序输入lstm,用lstm的最后一个状态作为关系路径的向量表示,用v
π
(p)表示;2.3、将头实体h和尾实体t之间的直接关系r使用word2vec转化为向量,并将该向量记为再将输入lstm,用lstm的最后一个当前隐藏状态作为直接关系r的向量表示,用v
π
(r)表示。4.如权利要求3所述的一种基于ptranse模型的知识图谱链接预测方法,其特征在于,所述2.1的流程如下:2.1.1、初始化一个hashmap,用于存放数组;2.1.2、初始化一个arraylist,命名为relationlist,用于存放路径上的关系;2.1.3、取头实体h和尾实体t之间的第i条关系路径,0<i≤n,将所有这条路径上的关系按照顺序存入relationlist;2.1.4、初始化一个数组arrayvec,其长度为relationlist的长度,用于存放关系转化成的向量;2.1.5、遍历relationlist,得到第j个关系,0<j≤relationlist.length,使用word2vec将关系转化为向量vec
j
;2.1.6、将向量vec
j
存入arrayvec[j
‑
1];2.1.7、判断relationlist是否遍历完成,若否,返回2.1.5,否则进行2.1.8;2.1.8、将数组arrayvec存入hashmap,hashmap的key值为i,value为数组arrayvec;2.1.9、判断关系路径是否已经全部存入hashmap,若否,返回2.1.3,否则进行2.2。
5.如权利要求3所述的一种基于ptranse模型的知识图谱链接预测方法,其特征在于,所述2.2中,lstm由细胞状态和“门”结构,细胞状态相当于信息传输的路径,让信息能在序列链中传递下去;lstm有三种门结构:遗忘门、输入门和输出门,遗忘门的功能是决定应丢弃或保留哪些信息,来自前一个隐藏状态的信息和当前输入的信息同时传递到sigmoid函数中去,输出值介于0和1之间,越接近0意味着越应该丢弃,越接近1意味着越应该保留;输入门用于更新细胞状态;首先将前一层隐藏状态的信息和当前输入的信息传递到sigmoid函数中去,将值调整到0
‑
1之间来决定要更新哪些信息;0表示不重要,1表示重要;输出门用来确定下一个隐藏状态的值,隐藏状态包含了先前输入的信息,首先将前一个隐藏状态和当前输入传递到sigmoid函数中,然后将新得到的细胞状态传递给tanh函数;其中sigmoid函数常被用做神经网络的激活函数,其公式如下:其中tanh函数是一个双曲正切函数,值域为(
‑
1,1),其公式如下:6.如权利要求5所述的一种基于ptranse模型的知识图谱链接预测方法,其特征在于,所述2.2的过程如下:2.2.1、遍历hashmap,取key为k的value值,0<k≤n;2.2.2、遍历value当中的数组,取第x个向量vec
x
,其中x的取值范围为0<x≤hashmap.get(k).length;2.2.3、设置lstm初始细胞状态c0=0,初始隐藏状态h0=0;2.2.4、将先前细胞状态c
x
‑1、先前隐藏状态h
x
‑1和向量vec
x
输入lstm,输出当前细胞状态c
x
和当前隐藏状态h
x
,其中,先前细胞状态和先前隐藏状态即为上一层lstm的当前细胞状态和当前隐藏状态;继续重复执行2.2.2直至数组内的元素遍历完毕2.2.5、判断hashmap是否遍历完成,若否,重复步骤2.2.1,否则进入步骤2.2.6;2.2.6、获得lstm的当前隐藏状态,并将它作为这条关系路径的向量表示,即v
π
(p);2.2.7、从步骤2.1.3重新开始,直到计算出头实体h和尾实体t之间所有关系路径的向量表示。7.如权利要求6所述的一种基于ptranse模型的知识图谱链接预测方法,其特征在于,所述2.2.4中,lstm的计算步骤如下:2.2.4.1、计算遗忘门:将先前隐藏状态h
x
‑1和向量vec
x
拼接成一个向量vech,经过一层全连接层计算后,再将vech传入sigmoid函数,获得遗忘门的输出,f
x
;2.2.4.2、计算输入门:将vech分别传入sigmoid函数和tanh函数,vech传入sigmoid函数后再经过一层全连接层计算,获得输入门输出i
x
,vech传入tanh函数后的输出值为候选向量将sigmoid函数和tanh函数的输出值相乘;2.2.4.3、计算细胞状态:将先前细胞状态与遗忘门输出值相乘,再加上sigmoid函数和tanh函数的输出值相乘的结果,当前细胞状态计算公式如下:2.2.4.4、计算输出门:将vech经过一层全连接层计算后输入sigmoid函数,得到o
x
,再将
当前细胞状态c
x
输入tanh函数后的结果与o
x
相乘,得到当前隐藏状态h
x
。8.如权利要求3所述的一种基于ptranse模型的知识图谱链接预测方法,其特征在于,所述2.3的计算过程如下:2.3.1、设置lstm初始细胞状态c0=0,初始隐藏状态h0=0;2.3.2、计算遗忘门:将先前隐藏状态h0和向量r拼接成一个向量rh,经过一层全连接层计算后,再将rh传入sigmoid函数,获得遗忘门的输出,f1;2.3.3、计算输入门:将rh分别传入sigmoid函数和tanh函数,rh传入sigmoid函数后再经过一层全连接层计算,获得输入门输出i1,vech传入tanh函数后的输出值为候选向量将sigmoid函数和tanh函数的输出值相乘;2.3.4、计算细胞状态:将先前细胞状态与遗忘门输出值相乘,再加上sigmoid函数和tanh函数的输出值相乘的结果,当前细胞状态计算公式如下:2.3.5、计算输出门:将rh经过一层全连接层计算后输入sigmoid函数,得到o1,再将当前细胞状态c1输入tanh函数后的结果与o1相乘,得到当前隐藏状态,h1,即是所求v
π
(r)。9.如权利要求1或2所述的一种基于ptranse模型的知识图谱链接预测方法,其特征在于,所述第三步的过程如下:3.1、初始化一个hashmap,命名为entitymap,用于存放第二步中选择的关系路径上的头实体h和尾实体t之间的实体表示成的向量集合;3.2、获取选定关系路径上的头实体h和尾实体t之间的所有实体的实体类型,所有实体包括头实体h和尾实体t;3.3、用word2vec把实体的实体类型转化为向量,再用lstm处理这些向量,最终结果存入hashmap;所述3.3的步骤如下:3.3.1、初始化一个arraylist,将选定关系路径上的所有实体,包括头实体h和尾实体t按顺序存入arraylist;3.3.2、遍历arraylist,给每一个实体设置一个类型层次结构的集合l,实体e
t
表示arraylist中第t个实体的表示,0<t≤n,n表示arraylist的长度,其中,e0=h,e
arraylist.length
‑1=t,l
t
表示第t个实体的类型层次结构集合,l
t
={l
t,1
,
…
,l
t,c
},l
t,1
表示最具体的类型,l
t,c
表示实体e
t
高度为c的类型层次结构中最抽象的类型;3.3.3、将每个实体的层次类型转化为向量,得到v
t
={v
t
(l
t,1
),
…
,v
t
(l
t,c
)};3.3.4、判断是否遍历完成,若否,返回3.3.3,否则,进入3.3.5;3.3.5、计算实体e
t
选择的类型向量,并计算实体e
t
的类型上下文向量;3.3.6、获取头实体h和尾实体t的类型上下文向量;3.3.7、将实体和实体的类型上下文向量存入hashmap,key为实体,value为该实体的类型上下文向量;所述步骤3.3.5的过程如下:3.3.5.1、设置初始细胞状态c0=f
init,c
(v
π
(p)),初始隐藏状态h0=f
init,h
(v
π
(p)),其中,f
init,c
,f
init,h
是两个独立的前馈网络;3.3.5.2、计算上下文向量计算公式为:
3.3.5.3、遍历arraylist,计算实体e
t
选择第m层抽象结构后的向量表示,计算公式如下,其中f
att,type
是一个前馈网络:3.3.5.4、计算实体e
t
选择第m层结构类型的权重α
t,m
,这个权重表示m是正确的抽象级别的概率,计算公式如下,其中exp(x)=e
x
:3.3.5.5、计算实体e
t
的类型上下文向量表示其计算公式如下:3.3.5.6、将先前隐藏状态和先前细胞状态以及,类型向下文向量输入lstm,计算当前隐藏状态和当前细胞状态;3.3.5.7、判断是否遍历完成,若否,返回3.3.5.3,否则,进入步骤3.3.5.83.3.5.8、计算头实体h的类型上下文向量表示,即计算3.3.5.9、计算尾实体t的类型上下文向量表示,即计算所述步骤3.3.5.6的过程如下:3.3.5.6.1、计算遗忘门:将先前隐藏状态h
t
‑1和向量拼接成一个向量经过一层全连接层计算后,再传入sigmoid函数,获得遗忘门的输出,f
x
;3.3.5.6.2、计算输入门:将分别传入sigmoid函数和tanh函数,传入sigmoid函数后再经过一层全连接层计算,获得输入门输出i
t
,传入tanh函数后的输出值为候选向量将sigmoid函数和tanh函数的输出值相乘;3.3.5.6.3、计算细胞状态:将先前细胞状态与遗忘门输出值相乘,再加上sigmoid函数和tanh函数的输出值相乘的结果,当前细胞状态计算公式如下:3.3.5.6.4、计算输出门:将经过一层全连接层计算后输入sigmoid函数,得到o
t
,再将当前细胞状态c
t
输入tanh函数后的结果与o
t
相乘,得到当前隐藏状态,h
t
。10.如权利要求1或2所述的一种基于ptranse模型的知识图谱链接预测方法,其特征在于,所述第四步过程如下:4.1、使用ptranse模型的路径约束资源分配算法,计算出第二步中选定的这条关系路径的关系路径可靠性r(p|h,t);4.2、重复4.1直到计算出所有关系路径的关系路径可靠性;4.3、计算这个三元组的能量函数;所述4.3的计算过程如下:4.3.1、计算头实体h、直接关系r和尾实体t组成的三元组的能量函数,其中,h用头实体的类型上下文向量表示,t用尾实体t的类型上下文向量表示,r用2.3的结果v
π
(r)表示;在ptranse中,关系表示为头实体向量和尾实体向量之间的平移,即h r=t,计算能量函
数就是计算头实体向量与关系向量的和与尾实体向量之间的偏移量,即计算h r
‑
t的值,计算公式如下,其中||||表示计算向量的模长:4.3.2、计算头实体h、所有关系路径p和尾实体t组成的三元组的能量函数,其中,h用头实体的类型上下文向量表示,t用尾实体t的类型上下文向量表示,p用2.2.6的结果v
π
(p)表示,计算公式如下:其中,z是归一化因子,表示所有关系路径可靠性的总和,z=∑
p∈p(h,t)
r(p|h,t),r(p|h,t)表示这条关系路径的关系路径可靠性,用4.1的结果表示,e(h,p,t)的计算公式如下所示:e(h,p,t)=||h p
‑
t||=||p
‑
(t
‑
h)||=||p
‑
r||=e(p,r)而||p
‑
r||=||v
π
(p)
‑
v
π
(r)||;要使得直接关系三元组的能量函数e(h,r,t)最小,就要保证直接关系r≈t
‑
h,由此,将e(h,p,t)的计算公式进行变形,h p
‑
t变形为p
‑
(t
‑
h),而r≈t
‑
h,因此h p
‑
t可以变形为p
‑
r,计算e(h,p,t)就是计算e(p,r),即关系路径的向量表示与直接关系r的向量表示的偏移量的模长;4.3.3、计算头实体、尾实体和所有关系路径组成的三元组的能量函数,计算公式如下:g(h,r,t)=e(h,r,t) e(h,p,t)4.3.4、判断能量函数的值是否小于一个设定的值,若小于,这个直接关系r可以链接头实体h和尾实体r,这个三元组就成立;否则,不成立。
技术总结
一种基于PtransE模型的知识图谱链接预测方法,包括以下步骤:第一步、从知识库中构建目标三元组,并获得该三元组中头实体和尾实体之间所有的路径关系;第二步、进行关系编码,结合Word2vec将目标三元组中的直接关系和所有路径关系表示成向量,并将路径关系表示成的向量输入LSTM进行顺序编码;第三步、进行实体类型编码,获取目标三元组的头实体和尾实体的类型上下文向量;第四步、计算关系路径可靠性,并将上述结果输入能量函数,判断这个三元组是否成立。本发明提升了三元组的表示精度,增加了预测结果的准确度。测结果的准确度。
技术研发人员:陆佳炜 朱昊天 王小定 吴俚达 徐俊 程振波 高飞 肖刚
受保护的技术使用者:浙江工业大学
技术研发日:2021.03.04
技术公布日:2021/6/29
转载请注明原文地址:https://doc.8miu.com/read-277.html