一、Background
从文本中抽取实体及其关系是NLP中的一种结构化预测任务,比如细粒度观点挖掘,语义角色标注等等。
一些方法被提出用于抽取实体及其关系。这些方法可以被分为两类:pipeline的方法和joint models。联合模型的性能要优于pipeline的方法,因为关系类型的信息能辅助实体抽取,反之亦然。
RNN是序列标注的常用模型。但是,RNN在识别句子中非相邻的单词之间的关系时有点困难。对于这些任务,使用树结构的RNN更合适。比如,Miwa and Bansal(2016)提出了基于RNN的联合抽取模型,使用LSTM用于实体抽取,tree-LSTM用于关系分类。这就导致模型的性能严重依赖于依存树,将其限制为句子级别的抽取以及存在依赖解析器的语言。另外,他们的模型也不是联合抽取实体及其关系,首先抽取实体,然后在所有实体对中进行关系分类。
二、Motivation
纯粹的RNN模型很难捕捉到非相邻单词之间的依赖关系,而基于树的LSTM模型依赖于依赖解析,泛化性差。 因此作者提出了一个新颖的基于RNN的模型,用于实体及其关系的联合抽取。与其它模型不同,作者的模型不依赖于依存树信息。
三、Model
我们的模型包含一个多层的双向LSTM,学习句中每个单词的表示。我们使用顶层的隐藏层表示用于实体及其关系的联合抽取。对于每个单词,我们输出一个实体标签和一个关系标签。实体标签对应实体类型,关系标签是一个元祖,包含相关的实体和关系类型。如图一所示。我们将预测关系标签从实体级别转换为单词级别。比如,对于关系"ORG-AFF",我们对实体“ITV News”中的每个词分别建模。也就是说,分别建模“ITV”与“Martin Geissler”、“News”与“Martin Geissler”之间的关系。我们在sequence layer后接pointer-like network,以此对每个单词找到对应的关系标签,如图二所示。
3.1 Multi-layer Bi-directional Recurrent Network
使用多层双向LSTM来捕捉单词之间的长期依赖信息。
h
t
→
=
L
S
T
M
(
x
t
,
h
t
−
1
→
)
\overrightarrow {h_t}=LSTM(x_t, \overrightarrow {h_{t-1}})
ht=LSTM(xt,ht−1)
h
t
←
=
L
S
T
M
(
x
t
,
h
t
+
1
←
)
\overleftarrow {h_t}=LSTM(x_t, \overleftarrow {h_{t+1}})
ht=LSTM(xt,ht+1)
在本篇论文中,我们只使用最后一层L的隐藏层状态输入到下一层中,计算顶层的隐藏层表示如下:
z
t
'
=
V
→
h
→
t
(
L
)
+
V
←
h
←
t
(
L
)
+
c
z^'_t=\overrightarrow V \overrightarrow h_t^{(L)}+\overleftarrow V \overleftarrow h_t^{(L)}+c
zt'=Vht(L)+Vht(L)+c
3.2 Entity Detection
将实体检测视为序列标注问题,标注机制为BILOU。对于句中的每个单词,我们通过softmax输出每个实体类型的概率:
y
t
=
s
o
f
t
m
a
x
(
U
z
t
'
+
b
)
y_t=softmax(Uz^'_t+b)
yt=softmax(Uzt'+b)
从图二中,我们也可以看到,作者将上一时刻的输出的标签输入到top-hidden layer中,以此捕捉标签之间的依赖关系。为了添加这个连接操作,我们将输出转化为label embedding
b
t
−
1
k
b_{t-1}^k
bt−1k。我们表示每个标签类型k为密集表示
b
k
b_k
bk。我们计算输出层的表示:
z
t
=
L
S
T
M
(
[
z
t
'
;
b
t
−
1
k
]
,
h
t
−
1
)
z_t=LSTM([z^'_t;b^k_{t-1}],h_{t-1})
zt=LSTM([zt';bt−1k],ht−1)
y
t
=
s
o
f
t
m
a
x
(
U
z
t
+
b
'
)
y_t=softmax(Uz_t+b^')
yt=softmax(Uzt+b')
3.3 Attention Model
我们使用attention模型用于关系分类。attention模型,通过编码器中的句子表示z,可以计算得到一个概率分布p,
d
i
d_i
di表示解码端第i个单词。这个概率分布表示了编码器中不同单词的重要性。
u
t
i
=
v
T
t
a
n
h
(
W
1
z
+
W
2
d
i
)
u^i_t=v^Ttanh(W_1z+W_2d_i)
uti=vTtanh(W1z+W2di)
p
t
i
=
s
o
f
t
m
a
x
(
v
t
i
)
p^i_t=softmax(v^i_t)
pti=softmax(vti)
我们在模型中使用了指针网络,是attention模型的一种变体。指针网络将这些
p
t
i
p^i_t
pti解释为输入编码序列上的概率分布,并使用
u
t
i
u_t^i
uti作为输入元素的指针。我们可以使用这些指针来编码当前单词和先前预测的单词之间的关系。
3.4 Relation detection
我们将关系抽取也视为序列标注问题。对于每个单词,我们想要在之前的单词中找到与当前单词相关的单词以及它们之间的关系类型。比如,“Safwan”和单词“Martin”、“Geissler”存在“PHYS”关系。简单点,在训练过程中假设当前词只与之前的一个词存在关系。比如,“Safwan”与“Geissler”存在“PHYS”关系。
在每个时间步中,我们堆叠之前时间步的隐藏层表示
z
≤
t
2
z_{\leq t}^2
z≤t2和对应的label embedding
b
≤
t
b_{\leq t}
b≤t。我们只堆叠最顶层的隐藏层表示,并且单词的实体标签是非O的。那么attention的权重向量可以如下计算:
u
≤
t
t
=
v
T
t
a
n
h
(
W
1
[
z
≤
t
;
b
≤
t
]
+
W
2
[
z
t
;
b
t
]
)
u^t_{\leq t}=v^Ttanh(W_1[z_{\leq t};b_{\leq t}]+W_2[z_t;b_t])
u≤tt=vTtanh(W1[z≤t;b≤t]+W2[zt;bt])
p
≤
t
t
=
s
o
f
t
m
a
x
(
u
≤
t
t
)
p^t_{\leq t}=softmax(u^t_{\leq t})
p≤tt=softmax(u≤tt)
四、Experiment
五、Conclusion