本文解决KBQA中的子问题——Relation Detection(关系检测)。关系检测目的是给定一个问句,根据知识库来判断该问句目标的关系是什么。
例如问句“中国的首都是哪里?”,首先锁定问句的中心实体(topic)是“中国”,其次检测与“中国”这个实体具有“首都”关系的实体。类似于知识图谱的补全工作:(中国,首都,?),关系检测即是从(中国,?,?)到(中国,首都,?)的过程。
对于SimpleQuestion简单问答数据集,确定了(中国,首都,?)也就确定了整个三元组(中国,首都,北京)。
对于WebQSP复杂问答,则可能会得到一些三元组(中国,首都,北京),(中国,首都,西安)…,但前提是每个三元组都会自带一些约束,比如时间约束。如何能够利用约束来解决复杂的关系检测时本文的研究重点。
论文PDF地址:https://www.aclweb.org/anthology/P17-1053.pdf
GitHub源码地址:https://github.com/StevenWD/HR-BiLSTM
Abstract
关系检测是许多自然语言处理应用中非常重要的部分,例如知识库问答(Knowledge Base Question Answering)。本文提出一种 hierarchical recurrent neural network(分层的循环神经网络)根据给定的问句识别出对应关系。我们利用 deep residual bidirectional LSTMs(深度残差双向长短期记忆网络)在不同层面上对比问句和关系,另外提出一个简单的KBQA系统将实体链接和本文提出的关系检测集成起来相互增强。实验结果表明本文方法不仅可以在关系检测上获得突出的结果,更重要的是,其在KBQA的两个任务上SimpleQuestions和WebQSP获得了最佳结果。
1 Introduction
KBQA是指在给定一个问句以及知识库的条件下,生成一个KB查询方案,并从知识库中寻找目标答案。知识库问答目前分为两种形式:
- 以SimpleQuestions为典型的简单问答,是单路径问答模型(single-relation question)。即给定一个中心实体,检测出问句要寻找的关系后即可直接获得对应的答案。
- 以WebQSP为典型的复杂问答,寻找的通常是一条多关系路径(multi-relation question)。在这种情况下有可能要获得的答案需要多个三元组组成的路径,也可能出现多关系(one-to-many)问题,因此需要有约束。
KBQA通常包括两个子任务:
- Entity Linking(实体链接)。即给定的问句中的主题词要与知识库做链接,还包括实体识别、实体链接、消歧等步骤。通常简单的方法是使用n-grams词袋模型。
- Relation Detection(关系检测)。其不同于传统的关系抽取是在少量预定义关系基础上进行的,关系检测通常面对的是庞大的关系空间(超过6000个关系类),且经常出现测试集中的关系在训练集中没有出现的情况,即unseen relations。作者统计测试集中14%的关系在训练集中从没有出现过,因此这是一个zero-shot问题。
本文目标:
(1)为解决unseen relations问题,把关系名字分解成单词序列,使用词级别(word-level) 的匹配准则来与关系进行匹配。如果直接使用整个关系名称作为匹配,则没有办法解决unseen问题,但如果使用词级别,则可以通过RNN或CNN将其表征起来,这样即便遇到没有见过的关系,也可以通过每个单词编码起来。
(2)注意到原始的关系名字有时候能够帮助匹配长问题内容,所以同时结合词级别(word-level) 和整个关系名称(relation-level) 进行表征。
(3)使用 deep BiLSTMs 进行问句与关系的匹配,学习不同级别的问题表示。
(4)对于 sequence matching(序列匹配),提出了一个 residual learning(残差学习)的方法,这使模型训练更简单,获得更深(抽象)的问题表示,从而提高 hierarchical matching (层次匹配)。
作者还提出了一个简单KBQA系统的实现,由two-step的关系检测构成。给定一个输入问题和基于问题的实体链接抽取出的候选集,我们提出的实体决策模型在KBQA处理过程当中起关键角色:
(1)首先关系检测可以检测出当前问句较高置信度的关系,根据这些中心实体是否能够与这些关系相连,来对这些中心实体进行重排序(Re-ranking),并挑选一小部分。目标是处理那些模棱两可的实体。
(2)根据挑选的一小部分候选实体,再次进行关系检测,寻找到答案所在的路径。
2 Related Work
Relation Extraction
关系抽取是一种分类问题,通常是给定一个句子以及两个实体,来判断这两个实体是什么关系。通常这类问题的关系是预定义的,且规模很小,因此不会出现zero-shot问题。例如SemEval 2010 Task8 只有19个关系,TACKBP2015有74个关系,ACE2005则有11个粗粒度,32个细粒度的关系。
传统的RE方法依赖于大量手工标注的特征。最近的研究更多的利用深度学习的优势,从word embeddings 到 CNNs,LSTMs,attention models。
Relation Detection in KBQA Systems
对于关系检测任务来说,关系数量大,且容易出现unseen问题。目前的两种解决方法是:
(1)使用预训练的关系表征,例如TransE模型可以获得关系向量。通过事先对所有关系进行预训练,则可以得到统一的向量表示。这一类可以提取关系的全局信息,但可能是稀疏的(有些关系名称可能出现次数很少)
(2)将关系名称拆分为一个个单词或者字母,因此关系检测变为序列匹配或排序问题(sequence matching and ranking),这一类可以捕捉局部信息,但忽略了全局信息。
另一个与关系抽取不同的地方是:
- 关系抽取拥有至少两个实体参数,因此完全可以通过实体信息来增强关系抽取。
- 对于关系检测任务,这一类信息便很难被利用,因为一个问句通常只包含一个中心实体,且知识库中的实体包含多个类型,因此目前没有工作着手对实体类型用于关系检测。
3 Background: Different Granularity in KB Relations
以往的研究将知识库关系检测问题定义为一个序列匹配问题。虽然问题是自然的单词序列,如何将关系表示为序列仍然是一个具有挑战性的问题。在此介绍两个关系序列表示的类型:
(1) Relation Name as a Single Token (relation-level)
将关系名字作为一个单一的单词(relation-level)。
问题:由于训练数量有限,关系覆盖率很低,因此不能很好的推广到大量的开放域关系。
(2) Relation as Word Sequence (word-level)
关系作为词序列(word-level)。
该方法具有较好的泛化能力,但缺乏原始关系名的全局信息。
当只进行单词级匹配时,很难将目标关系“starring roles”与不正确的关系“plays produced”进行比较。这是因为错误的关系包含单词“play”,这与问题(包含“play”)更相似。
word-level更加关注与局部信息,relation-level更加关注于全局信息。
4 Improved KB Relation Detection
本节描述了我们的层次序列匹配与残差学习方法的关系检测。为了将问题匹配到关系的不同方面(具有不同的抽象级别),我们处理了以下三个关于学习 问题/关系 表示的问题。
4.1 Relation Representations from Different Granularity
不同粒度上的关系表征。
作者同时从 word-level 和 relation-level 对关系进行表征。输入的是一个关系或关系路径:
r
=
{
r
1
word
,
…
,
r
M
1
word
}
∪
{
r
1
rel
,
…
,
r
M
2
r
e
l
}
r = \left\{r_{1}^{\text {word }}, \ldots, r_{M_{1}}^{\text {word }}\right\} \cup\left\{r_{1}^{\text {rel }}, \ldots, r_{M_{2}}^{r e l}\right\}
r={r1word ,…,rM1word }∪{r1rel ,…,rM2rel},其中
M
1
M_{1}
M1表示所有关系的单词数量,
M
2
M_{2}
M2表示当前关系或关系路径中所有的关系名称。转化成 word embedding 后,通过共享参数的Bi-LSTM进行表征,分别得到 word-level 和 relation-level 的隐状态矩阵
[
B
1
:
M
1
word
:
B
1
:
M
2
r
e
l
]
\left[\mathbf{B}_{1: M_{1}}^{\text {word }}: \mathbf{B}_{1: M_{2}}^{r e l}\right]
[B1:M1word :B1:M2rel],其中[:]表示拼接。最后分别将两个矩阵的所有隐状态向量进行最大池化,得到最终的关系表示向量
h
r
h^{r}
hr。
4.2 Different Abstractions of Questions Representations
不同层面的问句表征。
使用两层的Bi-LSTM对问句进行表征,输入问句
q
=
{
q
1
,
…
,
1
N
}
q=\left\{q_{1}, \ldots, 1_{N}\right\}
q={q1,…,1N},第一层输出的隐状态向量为
Γ
1
:
N
(
1
)
=
[
γ
1
(
1
)
,
…
,
γ
N
(
1
)
]
\Gamma_{1: N}^{(1)}=\left[\gamma_{1}^{(1)}, \ldots, \gamma_{N}^{(1)}\right]
Γ1:N(1)=[γ1(1),…,γN(1)]。第二层的输入是第一层的隐状态向量,输出则是
Γ
1
:
N
(
2
)
=
[
γ
1
(
2
)
,
…
,
γ
N
(
2
)
]
\Gamma_{1: N}^{(2)}=\left[\gamma_{1}^{(2)}, \ldots, \gamma_{N}^{(2)}\right]
Γ1:N(2)=[γ1(2),…,γN(2)]。
注意:问题表示的第一(第二)层不一定对应于单词(关系)级别的关系表示,相反,问题表示的任何一层都可能与任何一级别的关系表示相匹配。这增加了在不同层次的关系/问题表示之间匹配的难度。下面的部分给出了我们处理这类问题的建议。
4.3 Hierarchical Matching between Relation and Question
关系和问题的分层匹配。HR-BiLSTM模型如下图所示:
我们获得了
Γ
1
:
N
(
1
)
\Gamma_{1: N}^{(1)}
Γ1:N(1)和
Γ
1
:
N
(
2
)
\Gamma_{1: N}^{(2)}
Γ1:N(2),我们希望这两层的表征都可以与关系进行匹配。朴素的方法是分别将两层表征与关系表征
h
r
h_{r}
hr计算相似度,然后得到的两个值进行加权求和。但作者发现这么做实验效果还不如只保留一层LSTM的结果,分析可能因为深层的LSTM会陷入局部最优解,因此很难训练。
为了更好能够训练,引入分层匹配(hierachical matching)的残差网络(Residual Networks),在两个BiLSTM层之间加入shortcut connections。作者提出两种策略:
(1)将两层的输出,按照每个时刻进行求和,即
γ
i
′
=
γ
i
(
1
)
+
γ
i
(
2
)
\gamma_{i}^{\prime}=\gamma_{i}^{(1)}+\gamma_{i}^{(2)}
γi′=γi(1)+γi(2),然后得到N个
γ
i
(
′
)
\gamma_{i}^{(')}
γi(′)的
取最大(max pooling)的作为问句的表征
h
q
h_{q}
hq。
(2)分别对
Γ
1
:
N
(
1
)
\Gamma_{1: N}^{(1)}
Γ1:N(1)和
Γ
1
:
N
(
2
)
\Gamma_{1: N}^{(2)}
Γ1:N(2)应用一次最大池化操作,得到
h
max
(
1
)
\mathbf{h}_{\max }^{(1)}
hmax(1) 和
h
max
(
2
)
\mathbf{h}_{\max }^{(2)}
hmax(2),则
h
q
=
h
max
(
1
)
+
h
max
(
2
)
\mathbf{h}^{q}=\mathbf{h}_{\max }^{(1)}+\mathbf{h}_{\max }^{(2)}
hq=hmax(1)+hmax(2)。
得到了问句的表示,则可以计算相似度: s rel ( r ; q ) = cos ( h r ; h q ) s_{\text {rel }}(\mathbf{r} ; \mathbf{q})=\cos \left(\mathbf{h}^{\mathbf{r}} ; \mathbf{h}^{\mathbf{q}}\right) srel (r;q)=cos(hr;hq)。使用ranking loss训练: l r e l = max { 0 , γ − s rel ( r + ; q ) + s rel ( r − ; q ) } l_{r e l}=\max \left\{0, \gamma-s_{\text {rel }}\left(\mathbf{r}^{+} ; \mathbf{q}\right)+s_{\text {rel }}\left(\mathbf{r}^{-} ; \mathbf{q}\right)\right\} lrel=max{0,γ−srel (r+;q)+srel (r−;q)}。
5 KBQA Enhanced by Relation Detection
作者用现有的实体链接工具获得问句 q 的topK个候选实体,记做
E
L
K
(
q
)
EL_{K}(q)
ELK(q)。整个流程如图所示:
5.1 Entity Re-Ranking
首先使用原始的问句进行关系检测,获得对应每个关系(与
E
L
K
(
q
)
EL_{K}(q)
ELK(q) 中所有候选实体所连接的)的得分,并按照得分从高到低排序获得前
l
l
l 个关系(高置信度关系),记做
R
q
l
R_{q}^{l}
Rql。而候选的某一个中心实体 e 所有相连的关系记做
R
e
R_{e}
Re,因此两者交集即为该候选实体所有得分较高的关系
。如果实体链接工具自身给予每个实体一个排序的得分是
s
l
i
n
k
e
r
s_{linker}
slinker ,则这个实体的最终得分表示为:
s
rerank
(
e
;
q
)
=
α
s
linker
+
(
1
−
α
)
max
r
∈
R
q
l
∩
R
e
s
rel
(
r
;
q
)
s_{\text {rerank }}(e ; q)=\alpha \text { s }_{\text {linker }}+(1-\alpha) \max _{r \in R_{q}^{l} \cap R_{e}} s_{\text {rel }}(r ; q)
srerank (e;q)=α s linker +(1−α)r∈Rql∩Remaxsrel (r;q)
直观的理解就是问句的某一个候选中心实体,其得分则依据初始的实体链接工具的打分,以及与该实体所有相连的高置信度关系得分的最大值。因此我们可以对所有候选实体进行排序,选择最大的 $K’
个
个
个(K’<<K)$,得到新的候选实体集合
E
L
K
′
′
(
q
)
E L_{K^{\prime}}^{\prime}(q)
ELK′′(q)。
总结来说,这种方法就是利用 entity-relation 集合来进行entity linking。
5.2 Relation Detection
其次在 e ∈ E L K ′ ( q ) e \in E L^{\prime}_{K}(q) e∈ELK′(q) 上应用第二次关系检测,得到每个关系 r ∈ R e r \in R_{e} r∈Re 的排序(因为对实体进行了排序和过滤,此时的关系r数量大大减少),但与第一次不同的是,输入的问句中将所有候选实体更换为标签“ < e > <e> <e>”。得分记做 s rel ( r ; e , q ) s_{\text {rel }}(r ; e, q) srel (r;e,q)。
5.3 Query Generation
查询生成。根据实体排序的得分以及第二次关系检测得分,得到最终的得分:
s
(
e
^
,
r
^
;
q
)
=
max
e
∈
E
L
K
′
′
(
q
)
,
r
∈
R
e
(
β
⋅
s
rerank
(
e
;
q
)
+
(
1
−
β
)
⋅
s
rel
(
r
;
e
,
q
)
)
\begin{aligned} s(\hat{e}, \hat{r} ; q)=& \max _{e \in E L_{K^{\prime}}^{\prime}(q), r \in R_{e}}\left(\beta \cdot s_{\text {rerank }}(e ; q)\right.\\ &\left.+(1-\beta) \cdot s_{\text {rel }}(r ; e, q)\right) \end{aligned}
s(e^,r^;q)=e∈ELK′′(q),r∈Remax(β⋅srerank (e;q)+(1−β)⋅srel (r;e,q))
直观理解:在求某一个关系的得分时,这个关系连接的候选中心实体对应一个重排序的得分 s r e r a n k s_{rerank} srerank,其次这个关系在第二次关系检测时(第(2)部分)的得分 s rel ( r ; e , q ) s_{\text {rel }}(r ; e, q) srel (r;e,q),两者加权求和。从最后得到的一组得分中选择最大的得分以及对应的候选实体、关系(关系路径)作为返回结果 <entity,relation(or core-chain)>。
5.4 Constraint Detection
在复杂问题上,通常需要考虑到约束条件。作者提出一种约束检测方法。其包含两个步骤:
- 子图生成(Sub-graph generation):通过前3个步骤得到了最大得分对应的关系或关系路径,因此其指向的尾实体就是答案实体。将这个答案实体所有邻接实体以及相连的关系组成一个子图。
- 子图链接(Entity-linking on sub-graph nodes):将这个子图与问句进行匹配,并计算匹配的得分,如果得分超过阈值,则将其中的约束结点(实体)添加到答案实体上。
6 Experiments
6.1 Task Introduction & Settings
实验使用的两个数据集:
- SimpleQuestions:简单问答,使用小型的FreeBase(2M)。
- WebQSP:复杂问答,使用完整的FreeBase。使用S-MART作为实体链接。
6.2 Relation Detection Results
下表展示了关系检测的效果。
可以发现在两个数据集上,本文的方法HR-BiLSTM达到最优效果。同时消融实验表明基于 word-level 和 relation-level 结合可以提升效果,使用双层LSTM和残差方法也可以提升关系检测效果。
另外也发现在WebQSP上关系检测的结果都很差,这也说明了大量的unseen relation对实验影响很大,也是未来解决问题的关键。
6.3 KBQA End-Task Results
上述结果表明:若去掉重排序或去掉约束检测,效果都会下降,说明重排序和约束检测很重要。
7 Conclusion
本文提出了一种新的知识库关系检测模型 HR-BiLSTM,在问题和知识库关系之间进行分层匹配。模型在知识库关系检测任务上优于以前的方法,提出的KBQA系统也达到最优水平。
参考博客:https://blog.csdn.net/qq_36426650/article/details/106849247