基于门控图神经网络的知识库问答语义建模
18年,对知识库问题的建模方法,放弃,没看完
0. Abstract
大多数知识库问答方法都是基于语义分析的。在本文中,我们解决了由多个实体和关系组成的复杂语义解析的学习向量表示问题。以前的工作主要集中在为一个问题选择正确的语义关系,而忽略了语义分析的结构:**实体之间的联系和关系的方向。**我们建议使用门控图神经网络(Gated Graph Neural Networks)来编码语义解析的图结构。我们在两个数据集上显示,图形网络优于所有没有明确建模结构的基线模型。错误分析证实,我们的方法可以成功地处理复杂的语义分析。
1. Introduction
一个成功的知识库QA保证系统将最终为事实知识提供一个普遍可访问的自然语言界面。QA需要通过知识库中可用的实体和关系对问题语义进行精确建模,以便检索正确答案。
图1表示了一个例子。
所描绘的图结构由来自知识库和特殊 q − n o d e q-node q−node的实体和关系组成。知识库中任何可以代替 q − n o d e q-node q−node的实体都是答案的一部分。
本文描述了一种解决知识库问答问题的语义解析方法。也就是说,对于每个输入问题,我们构建一个显式的结构语义解析(语义图),语义解析可以被确定性地转换为查询,以从知识库中提取答案。如图1所示。在以前的工作中使用了类似的图形表示
然而,现代语义分析方法通常侧重于输入问题的句法分析(Reddy等人,2016)或检测单个知识库关系。而语义解析的结构被忽略或者仅仅被近似建模。Reddy等人(2016)使用问题的句法结构来构建所有可能的语义解析,然后应用带有手动定义特征的线性模型来选择正确的解析。它们的特征的子集编码了关于语义解析的图结构的基本信息(例如,节点的数量)。Yih等人(2015)和Bao等人(2016)的最先进的方法将所有语义解析限制为单个核心关系和可以添加到其中的一小组约束。他们的系统使用手动特征作为约束,并使用核心关系和问题之间的相似性分数来建模语义解析。
上述系统在WebQuestions数据集上进行了评估。图2根据需要识别的关系数量绘制了最先进系统的结果,以获得问题的正确答案。例如,图1中的问题需要两个关系来找到答案。从图2中可以清楚地看到,现代方法中缺乏结构建模导致在需要一个以上关系的更复杂的问题上表现更差。
我们称能够为复杂的问题找到正确的语义解析为explicitly model the semantic structure
.在本文中,我们解决了这一差距,并研究了对语义解析的结构进行编码的方法,以及提高更复杂问题的性能的方法。
特别地,我们采用了李等人(2016)中描述的门控图神经网络(GGNNs),处理语义分析并打分。
为了验证广义神经网络确实提供了一种改进,我们基于以前的工作构建了一组基线,并在相同的受控质量保证环境中对其进行了培训和评估。在整个实验过程中,我们使用维基数据开放领域知识库(Vrandeˇ ci c和Kr otzsch,2014)来构建语义解析并检索答案
Contributions
- 我们的分析表明,目前的知识库问答解决方案在复杂的问题上表现不佳;
- 我们将门控图神经网络应用到有标记边的有向图上,并对它们进行调整以处理知识库中大量可能的实体和关系类型。据我们所知,我们是第一个使用GGNNs进行语义解析和KB QA的;
- 与强基线相比,我们用于语义分析的门控图神经网络实现提高了复杂问题的性能。结果显示,与最佳非图形模型相比,分数提高了27.4%。
Code and data sets我们的系统可以与预先训练好的模型一起使用,用维基数据回答事实问题,或者在任何有问答配对的数据集上重新训练
https://github.com/UKPLab/coling2018-graph-neural-networks-question-answering
2. Semantic parsing
2.1. Semantic graphs
我们采用图形形式的结构语义表示来编码问题的含义
图形结构由 问题变量节点(q),维基百科实体(Taylor Swift),维基百科关系类型(PERFORMER)和约束(参见图3中带有约束的示例图)。q节点始终存在,表示问题的答案。也就是说,知识库中的所有实体都可以取代它的位置,这样所有的关系和约束都保持不变,这就是问题的答案。
我们把一个图记为一组边 E E E。每个边将 q q q节点链接到一个或两个Wikidata实体(二元或三元边)。边集 E E E是通过维基数据关系和实体定义的。形式上,维基数据可以描述为一个非常大的图 W = ( E , R , I ) W = (E,R,I) W=(E,R,I), E E E是实体, R R R是一组二元关系类型, I I I是编码为 r ( e 1 , e 2 ) r(e_1, e_2) r(e1,e2)的关系实例的集合, r ∈ R , e 1 , e 2 ∈ E r\in R, {e_1,e_2} \in E r∈R,e1,e2∈E(e.g. CAPITAL(Hawaii, Honolulu)).
维基数据中的三元关系实例被存储为一个主关系三元组和一个附加的修饰符,该修饰符本身也是一个二元关系: r 2 ( r 1 ( e 1 , e 2 ) , e 3 ) , r 1 , r 2 ∈ R , e 1 , e 2 , e 3 ∈ E r_2(r_1(e_1,e_2), e_3), {r_1, r_2} \in R, {e_1,e_2,e_3} \in E r2(r1(e1,e2),e3),r1,r2∈R,e1,e2,e3∈E (e.g. CHARACTER ROLE? CAST MEMBER(Star Wars, Carrie Fisher), Princess Leia?)
然后,语义图的边集 E E E由对应于维基数据关系实例的二元和三元边组成,用 q q q代替其中一个关系参数(???暂时不明白关系参数是指的那个)。对于时序关系,第二个参数可以是argmax或argmin约束。这意味着只有具有该关系的最大值或最小值的实体才被考虑作为答案。这个定义代表了一阶逻辑语义分析的子集,仅限于谓词的连接。这些图也同构于SPARQL查询,可用于根据知识库评估图。
2.2 Semantic graph construction
Yih等人(2015)定义了一种不需要完整语法分析的逐步阶段图生成方法,并在随后的论文中采用(Bao等人,2016;彭等,2017)。我们使用与伊等人(2015)相同的过程来构建语义图,并进行一系列修改,使我们能够构建更具表现力和更复杂的图。
我们定义了一组状态和一组可以应用于每个状态的动作,以扩展当前语义图。状态是一个图和一组自由实体的元组: S = ( G , E ) S = (G ,E) S=(G,E),定义 F = e ∣ e ∈ E F = {e|e \in E} F=e∣e∈E。自由实体集合 F F F是在问题中被识别但尚未被添加到图中的实体。第一个状态是一个没有边的空图的元组和一组在问题 S 1 = ( , F ) S^1=({}, F) S1=(,F)中标识的所有实体。
设 A = a e , a c , a m A = {a_e,a_c,a_m} A=ae,ac,am为在当前状态下扩展图形可以采取的一组动作。
- a e a_e ae: 在状态 S t S^t St下,自由实体集 F F F出栈 e e e执行 a e a_e ae(add entity)。然后,它查询知识库,并检索实体 e e e的可用关系类型集 R e R_e Re。对于每个关系类型 r ∈ R E r \in R_E r∈RE,它创建了图的一个新副本,并在关系类型为 r r r的 q q q节点和 e e e节点之间添加了一个新的有向边: a e ( G , F ) = { G ⋃ r ( q , e ) , F − 3 ∣ e ∈ F , r ∈ R e } a_e(G, F) = \{G \bigcup r(q, e), F-3|e\in F,r \in R_e \} ae(G,F)={G⋃r(q,e),F−3∣e∈F,r∈Re}。我们允许 q q q节点和实体 e e e之间的两步路径: r ( q , d ) ∨ r ( d , e ) r(q,d) \vee r(d, e) r(q,d)∨r(d,e)
- a c a_c ac: (add constraint) 与 a e a_e ae相同,出栈节点 e e e,但是,它没有添加新的边,而是向图中最后添加的边添加了一个修改器,从而创建了一个三元边: a c ( G , F ) = { G ⋃ r 2 ( r 1 ( q , e 1 ) , e 2 ) , F − e 2 ∣ e 2 ∈ F , r 2 ∈ R e 2 , r 1 ( q , e 1 ) ∈ G } a_c(G,F)=\{G \bigcup r_2(r_1(q, e_1), e_2), F-e_2 | e_2 \in F, r_2 \in R_{e2}, r_1(q, e_1) \in G\} ac(G,F)={G⋃r2(r1(q,e1),e2),F−e2∣e2∈F,r2∈Re2,r1(q,e1)∈G}
- a m a_m am: (add argmax/argmin) 将带有argmax或argmin排序约束的新边添加到语义图中: a m ( G , F ) = { G ⋃ r ( q , a r g m a x ) , F ; G ⋃ r ( q , a r g m i n ) , F ∣ r ∈ R d } a_m(G,F) = \{G \bigcup r(q, argmax), F; G \bigcup r(q, argmin), F | r\in R_d \} am(G,F)={G⋃r(q,argmax),F;G⋃r(q,argmin),F∣r∈Rd},其中 R d R_d Rd是一组允许日期作为值的知识库关系类型。我们的语义图构建过程允许通过在最后状态 S t S^t St上定义的动作 A A A的迭代应用来有效地搜索给定问题的可能图的空间
3 Representation learning
然后我们使用一个简单的奖励函数 γ γ γ来判断一个语义图是否是输入问题的正确语义解析。下面我们描述我们用来学习问题和图形表示的架构。
3.1 Deep Convolutional Networks
DCNN用在句子级表示是有效的。DCNN架构如图5所示,它用于将输入问题映射到固定大小的向量表示。输入
x
=
{
<
s
>
,
x
1
,
x
2
,
.
.
.
,
x
n
,
<
f
>
}
x = \{<s>, x_1, x_2, ..., x_n, <f>\}
x={<s>,x1,x2,...,xn,<f>}
50维GloVe,embedding加入CNN,池化+全连接+ReLU 获得
v
q
v_q
vq
3.2 Gated Graph Neural Networks
门图神经网络通过基于邻近节点和关系迭代更新图节点的表示来处理图。我们采用GGNNs进行语义解析,学习语义图的向量表示。
对于图 G G G,抽取在图中所有实体 V V V和所有边关系类型 R R R。我们使用维基数据中的标签来计算实体和关系类型的向量(图6)。这使我们能够直接从知识库中整合数百万个实体和数百种关系类型的信息。
对于节点
e
∈
V
e \in V
e∈V或边
r
∈
R
r \in R
r∈R,我们检索标签并序列号:
I
=
{
l
1
,
l
2
,
.
.
.
,
l
n
}
I=\{l_1, l_2, ..., l_n\}
I={l1,l2,...,ln},用GloVe映射+全连接层获得:
h
l
=
t
a
n
h
(
W
1
[
∑
n
=
1
∣
l
∣
]
+
b
1
)
h_l = tanh(W_1[\sum_{n=1}^|l|]+b_1)
hl=tanh(W1[∑n=1∣l∣]+b1)。我们用实体的标签向量初始化图节点的隐藏状态:
h
v
(
1
)
=
h
l
e
h_v^{(1)}=h_{le}
hv(1)=hle
我们进一步转换关系标签向量以获得关系类型的方向嵌入:KaTeX parse error: Expected group after '^' at position 4: h_r^̲' = Wh_{lr}, h_…
在以前的工作中,使用相同的单词嵌入作为输入来构造问题和关系表示已经被证明是成功的
Propagation Model: GGNNs 是一种递归神经网络。