写在前面
之前介绍的关系抽取系列文章主要是属于pipeline形式的,即第一步用实体识别将关系对抽取出来,第二步才是对关系对的分类,这样的做法会导致误差的传递。另外有一种解决方案是端到端的joint model,即上面的两步同时完成,这一思路在直觉上会更优。
1、End-to-End Relation Extraction using LSTMs on Sequences and Tree Structures(Miwa/ACL2016)
作者指出目前关系抽取的做法都是两个子任务(实体抽取及实体关系抽取)组成的pipeline形式,在最终效果上仍有欠缺。于是论文提出了一种端到端的神经网络模型,包括一个双向序列结构LSTM-RNN用于实体抽取,一个依存树形LSTM-RNN用于关系抽取,两个LSTM-RNN模型参数共享,整体框架如下所示,主要分为三个layer。
Embedding layer
不同于常规的只采用词向量 v w v_{w} vw,这里还包括了词性向量 v p v_{p} vp, 依存句法标签 v d v_{d} vd和实体标签 v e v_{e} ve。
Sequence layer
拆开来看其实这就是一个命名实体识别任务(NER描述可参考【论文笔记】IDCNN & Lattice LSTM for NER),用的是双向LSTM,标签记号为BILOU(Begin, Inside, Last, Outside, Unit)。解码decoding阶段采用从左至右贪婪搜索的方式。 h t ( e ) = tanh ( W ( e h ) [ s t ; v t − 1 ( e ) ] + b ( e h ) ) h_{t}^{(e)}=\tanh \left(W^{\left(e_{h}\right)}\left[s_{t} ; v_{t-1}^{(e)}\right]+b^{\left(e_{h}\right)}\right) ht(e)=tanh(W(eh)[st;vt−1(e)]+b(eh)) y t = softmax ( W ( e y ) h t ( e ) + b ( e y ) ) y_{t}=\operatorname{softmax}\left(W^{\left(e_{y}\right)} h_{t}^{(e)}+b^{\left(e_{y}\right)}\right) yt=softmax(W(ey)ht(e)+b(ey))
Dependency layer
使用 tree-structured BiLSTM-RNNs( top-down 和 bottom-up ) 来对实体之间的关系建模。输入是Sequence layer的输出 s t s_{t} st, dependency type embedding v d v_{d} vd以及label embedding v e v_{e} ve, 输出是dependency relation d p d_{p} dp。
d p d_{p} dp第一项是 bottom-up LSTM-RNN 的 top LSTM unit,代表实体对的最低公共父节点(the lowest common ancestor of the target word pair p);第二、三项分别是两个实体对应的 top-down LSTM-RNN 的 hidden state。 d p = [ ↑ h p A ; ↓ h p 1 ; ↓ h p 2 ] d_{p}=\left[\uparrow h_{p_{A}} ; \downarrow h_{p_{1}} ; \downarrow h_{p_{2}}\right] dp=[↑hpA;↓hp1;↓hp2]
关系分类主要还是利用了依存树中两个实体之间的最短路径(shortest path)。主要过程是找到 sequence layer 识别出的所有实体(认为在Sequency layer阶段预测出的带有L
或U
标签的为候选实体对),对每个实体的最后一个单词进行排列组合,再经过 dependency layer 得到每个组合的
d
p
d_{p}
dp,然后同样用两层 NN + softmax 对该组合进行分类,输出这对实体的关系类别。
h
p
(
r
)
=
tanh
(
W
(
r
h
)
d
p
+
b
(
r
h
)
)
h_{p}^{(r)}=\tanh \left(W^{\left(r_{h}\right)} d_{p}+b^{\left(r_{h}\right)}\right)
hp(r)=tanh(W(rh)dp+b(rh))
y
p
=
softmax
(
W
r
y
h
t
r
+
b
(
r
y
)
)
y_{p}=\operatorname{softmax}\left(W^{r_{y}} h_{t}^{r}+b^{(r y)}\right)
yp=softmax(Wryhtr+b(ry))
Training Tricks
- scheduled sampling: 来自论文
Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks
,大致思路是以一定概率用golden label来代替decode阶段的predicted label,减轻误差传递的可能性。 - entity pretraining: 来自论文
Curriculum learning of multiple tasks
,课程学习的思想。做法是先用训练数据预训练实体抽取模型,第二部再是训练整个模型。
2、Joint Entity and Relation Extraction Based on A Hybrid Neural Network(Zhou/2017)
本文提出一种joint learning的关系抽取框架,用一个混合神经网络来识别实体抽取关系,不需要额外的手工特征;另外一个创新是考虑到了entity tag之间的距离。整体框架如下图,包括了三个网络,都没有什么特别的trick,比较容易看懂。
具体的,对于输入句子通过共用的 word embedding 层,然后接双向的 LSTM 层来对输入进行编码。然后分别使用一个 LSTM 来进行命名实体识别(NER)和一个 CNN 来进行关系分类(RC)。
相比现在主流的 NER 模型 BiLSTM-CRF 模型,这里将前一个预测标签进行了 embedding 再传入到当前解码中来代替 CRF 层解决 NER 中的标签依赖问题。
在进行关系分类的时候,需要先根据 NER 预测的结果对实体进行配对,然后将实体之间的文本使用一个 CNN 进行关系分类。所以该模型主要是通过底层的模型参数共享,在训练时两个任务都会通过后向传播算法来更新共享参数来实现两个子任务之间的依赖。
3、Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme(Zheng/ACL2017)
本文提出了一种新型的序列标注方案,将联合抽取问题转换为序列标注问题。
The Tagging Scheme
标注方案如上,每一个词都有一个标签:
- O:others,和该任务无关的词标签
- 非O(三部分组成):
- 实体位置信息:BIES(Begin, Inside, End,Single)
- 关系类别信息:relation type,来自预定义的关系集合
- 关系角色信息: 1 or 2,代表在一个三元组中的第一个实体还是第二个实体
The End-to-end Model
端到端的模型如上,主要包括两个部分:Bi-LSTM的encoder和LSTM的decoder。看图就很清楚啦
PPT HERE
CODE HERE
4、Extracting Entities and Relations with Joint Minimum Risk Training(Sun/NAACL2018)
将最小风险训练方法(minimum risk training,MRT)引入联合关系抽取任务,提供了一种轻量的方式来加强实体抽取和关系抽取两个子模块的关联。MRT方法的优势在于优化句子级别的损失而不是词语级别,这样可以使得模型学习到更多global information。与Miwa的联合模型类似,将实体抽取任务看做是序列标注问题,将关系抽取任务看做是多分类问题,之后将这两个子任务进行联合误差训练。模型如下
CODE HERE
5、Joint Extraction of Entities and Relations Based on a Novel Graph Scheme(Wang/2018)
作者在对联合抽取研究做review后提出两点不足:
- 大多数研究基于参数共享的方式来实现联合抽取,其导致实体和关系以及关系和关系之间的联系不能被很好地利用;
- Zheng提出的标注体系将问题转化成了一个序列标注问题,从而可以有效地进行jointly decoding。但是对于over-lapping relation问题仍然不能建模。
over-lapping relation就是一个句子的实体关系对之间存在重叠。如下图
基于此,本文的创新如下:
- 设计一套了转化规则,将实体识别和关系抽取联合任务转化为一个有向图的生成问题
- 计了一个特殊的递归神经网络,可以更好的建模关系和关系之间的依赖性
Transition System
状态表示
使用元组 ( σ , δ , e , β , R , E ) (\sigma, \delta, e, \beta, R, E) (σ,δ,e,β,R,E)来表示每个时刻的状态,其中 σ \sigma σ是一个保存已生成实体的栈, δ \delta δ是一个保存被从 σ \sigma σ中临时弹出之后会被重新压入的实体的栈, e e e是用来存储正在被处理的部分实体块, β \beta β是一个包含未处理词的缓冲区, R R R是用来保存已经生成的关系弧, E E E是用来保存已经生成的实体弧。
转移动作
其中前七项是关系生成动作,用于生成关系,后三项是实体生成动作,用于生成实体。
转移动作先决条件
每个动作都需要满足一定的先决条件,以确保生成的实体和关系有向图的合理性。
动作执行序列
以John lives in Los Angeles California
为例,所对应的动作执行序列如下。初始状态为
(
[
]
,
[
]
,
[
]
,
[
1
,
⋯
,
n
]
,
∅
,
∅
)
([ ],[ ],[ ],[1, \cdots, n], \emptyset, \emptyset)
([],[],[],[1,⋯,n],∅,∅),,终止状态为
(
σ
,
δ
,
[
]
,
[
]
,
R
,
E
)
(\sigma, \delta,[ ],[ ], R, E)
(σ,δ,[],[],R,E)
Search Algorithm
基于上述转换系统,我们的解码器为每个给定句子预测其最佳动作序列。统初始化时,把输入句子以相反的顺序压入β中,这样第一个单词就在β的顶部。σ,δ,e和A每个都包含一个空栈标记。在每一步预测中,系统通过计算模型状态的表示(由β,σ,δ,e和A决定)来预测要执行的动作。无论其他状态如何,当β和e都为空(空栈符号除外)时,解码完成。
如上图所示,
t
t
t时刻的模型状态被定义为:
m
t
=
max
{
0
,
W
[
s
t
;
b
t
;
p
t
;
e
t
;
a
t
]
+
d
}
m_{t}=\max \left\{0, W\left[s_{t} ; b_{t} ; p_{t} ; e_{t} ; a_{t}\right]+d\right\}
mt=max{0,W[st;bt;pt;et;at]+d}
t
t
t时刻选取动作的概率可以由上式得到:
p
(
z
t
∣
m
t
)
=
exp
(
g
z
t
T
m
t
+
q
z
t
)
∑
z
′
∈
A
(
S
,
B
)
exp
(
g
z
′
T
m
t
+
q
z
′
)
p\left(z_{t} | m_{t}\right)=\frac{\exp \left(g_{z_{t}}^{\mathrm{T}} m_{t}+q_{z_{t}}\right)}{\sum_{z^{\prime} \in \mathcal{A}(S, B)} \exp \left(g_{z^{\prime}}^{\mathrm{T}} m_{t}+q_{z^{\prime}}\right)}
p(zt∣mt)=∑z′∈A(S,B)exp(gz′Tmt+qz′)exp(gztTmt+qzt)给定输入句子,任何合理的动作序列z的概率可以表示为:
p
(
z
∣
w
)
=
∏
t
=
1
∣
z
∣
p
(
z
t
∣
m
t
)
p(z | w)=\prod_{t=1}^{|z|} p\left(z_{t} | m_{t}\right)
p(z∣w)=t=1∏∣z∣p(zt∣mt)于是我们有:
(
E
∗
,
R
∗
)
=
argmax
E
,
R
∏
t
=
1
∣
z
∣
p
(
z
t
∣
m
t
)
\left(E^{*}, R^{*}\right)=\operatorname{argmax}_{E, R} \prod_{t=1}^{|z|} p\left(z_{t} | m_{t}\right)
(E∗,R∗)=argmaxE,Rt=1∏∣z∣p(zt∣mt)
因此,实体识别和关系抽取联合任务就被集成到我们的转移系统中。在测试的时候,我们的算法贪心的选择最大概率的动作,直到满足终止状态条件。
CODE HERE
小结
基于联合学习进行关系抽取的文章不是很多,通过以上文章,我们可以将联合抽取策略进行分类:
- 参数共享:如第一篇和第二篇
- 标注模型:如第三篇
- 最小风险训练:如第四篇
- 有向图模型:如第五篇
以上~
2018.05.29