Joint entity recognition and relation extraction as a multi-head selection problem
联合实体识别和关系提取作为多头选择问题
Abstract
本文利用CRF进行NER识别,并将关系抽取视为一个多头选择问题(给定头实体和关系),一个头实体可能参与多组关系。
1 Model
模型的输入为一个token序列,然后将其表示为单词向量,经过BiLSTM获得一个更复杂的向量表示,CRF层sigmod层能够产生两种任务的输出。
每个token(如Smith)的输出包括两层:
- 一个是实体识别标签(例如I-PER表示token的类型为PER)
- 另一个是集合,这个集合包含三元组的头实体token和两个实体之间的关系(如:{(Center, Work for), (Atlanta, Lives in)})
- note: 本文采用基于token的编码,所以让一个实体的最后一个单词作为实体的头部
- 例如:“John Smith”和“Disease Control Center”之间有一种"works for"关系,本文没有链接所有实体的token,而是链接Smith,Works for,Center
- 对于没有关系的情况,本文引入N标签
1.1 Embedding layer
- 输入:一个token序列
- 词嵌入+字符嵌入
- 引入字符嵌入的原因:字符级的向量可以融入一些前缀和后缀的形态学特征。如:在Adverse Drug Events(ADE)数据集中,"toxicity毒性"可以指定不良药物事件类型,如“neurotoxicity” or “hepatotoxicity” (如“神经毒性”或“肝脏毒性”),因此字符嵌入具有很强的信息量
1.2 BiLSTM encoding layer
从两个方向上捕获较长的依赖关系:
h
i
=
[
h
→
i
;
h
←
i
]
h_i=[\overset{\rightarrow}{h}_i;\overset{\leftarrow}{h}_i]
hi=[h→i;h←i]
1.3 NER
将NER转化为序列标注问题,将BiLSTM的输出送入到softmax或CRF层来计算每个token的最可能实体标记。
每个实体
w
i
w_i
wi对应所有标签的得分:
s
e
(
h
i
)
=
V
e
f
(
U
e
h
i
+
b
e
)
s^e(h_i) = V^ef(U^eh_i+b^e)
se(hi)=Vef(Uehi+be)
其中上标e表示为NER任务,
f
(
⋅
)
f(\cdot)
f(⋅)表示激活函数,
V
e
∈
R
p
×
l
,
U
e
∈
R
l
×
2
d
,
b
e
∈
R
l
V^e\in R^{p\times l},U^e\in R^{l\times 2d}, b^e\in R^l
Ve∈Rp×l,Ue∈Rl×2d,be∈Rl,d是LSTM隐藏层的大小,p是实体识别标签数,l是BiLSTM层的宽度
计算给定token
w
i
w_i
wi所有候选tags的概率:
P
r
(
t
a
g
∣
w
i
)
=
s
o
f
t
m
a
x
(
s
(
h
i
)
)
P
r
(
t
a
g
∣
w
i
)
∈
R
p
Pr(tag|w_i)=softmax(s(h_i))\\ Pr(tag|w_i)\in R^p
Pr(tag∣wi)=softmax(s(hi))Pr(tag∣wi)∈Rp
下一层的输入有两个:LSTM的输出状态
h
i
h_i
hi和学习到的标签嵌入表示
g
i
g_i
gi
z
i
=
[
h
i
;
g
i
]
z_i=[h_i;g_i]
zi=[hi;gi]
1.4 Relation extraction as multi-head selection
对每个head,需要预测二元组( y ∧ i , c ∧ i \overset{\wedge}{y}_i,\overset{\wedge}{c}_i y∧i,c∧i),其中 y ∧ i \overset{\wedge}{y}_i y∧i是当前token的关系对象, c ∧ i \overset{\wedge}{c}_i c∧i是两者之间的关系
输入:给定一个序列 w w w和一组关系标签集合 R \mathcal{R} R 作为输入
目标:为每个token w i w_i wi 标识最有可能的head 向量 y ∧ i ∈ w \overset{\wedge}{y}_i\in w y∧i∈w 和最有可能的对应关系标签向量 r ∧ i ∈ R \overset{\wedge}{r}_i\in \mathcal{R} r∧i∈R
计算给定
w
i
,
w
j
w_i,w_j
wi,wj 和
r
k
r_k
rk 之间的分数如下:
s
r
(
z
j
,
z
i
,
r
k
)
=
V
r
f
(
U
r
z
j
+
W
r
z
i
+
b
r
)
s^r(z_j,z_i,r_k)=V^rf(U^rz_j+W^rz_i+b^r)
sr(zj,zi,rk)=Vrf(Urzj+Wrzi+br)
其中上标r表示关系抽取任务,
V
r
∈
R
l
,
U
r
∈
R
l
×
(
2
d
+
b
)
,
W
r
∈
R
l
×
(
2
d
+
b
)
,
b
r
∈
R
l
V^r\in R^l,U^r\in R^{l\times (2d+b)},W^r\in R^{l\times (2d+b)}, b^r\in R^l
Vr∈Rl,Ur∈Rl×(2d+b),Wr∈Rl×(2d+b),br∈Rl
将分数映射为概率:
P
r
(
h
e
a
d
=
w
j
,
l
a
b
e
l
=
r
k
∣
w
i
)
=
σ
(
s
r
(
z
j
,
z
i
,
r
k
)
)
(1)
Pr(head=w_j,label=r_k|w_i)=\sigma(s^r(z_j,z_i,r_k)) \tag{1}
Pr(head=wj,label=rk∣wi)=σ(sr(zj,zi,rk))(1)
最小化交叉熵损失函数:
L
r
e
l
=
∑
i
=
0
n
∑
j
=
0
m
−
l
o
g
P
r
(
h
e
a
d
=
y
i
,
j
,
r
e
l
a
t
i
o
n
=
r
i
,
j
∣
w
i
)
\mathcal{L}_{rel}=\sum_{i=0}^{n}\sum_{j=0}^{m}-logPr(head=y_{i,j},relation=r_{i,j}|w_i)
Lrel=i=0∑nj=0∑m−logPr(head=yi,j,relation=ri,j∣wi)
其中
y
i
∈
w
、
r
i
∈
R
y_i\in w、r_i\in \mathcal{R}
yi∈w、ri∈R是
w
i
w_i
wi的真实头向量和关系标签向量,m是
w
i
w_i
wi关系的数目,训练之后,需要保持
y
∧
i
\overset{\wedge}{y}_i
y∧i和关系标签
r
∧
i
\overset{\wedge}{r}_i
r∧i的组合超过公式1中定义的联合概率的阈值。
最终的损失函数为:
L
N
E
R
+
L
r
e
l
\mathcal{L}_{NER}+ \mathcal{L}_{rel}
LNER+Lrel
2 启示
- 从论文中没有读懂到底怎么抽取尾实体的
- 也可以选择先抽头实体,再抽尾实体和关系,也是多头选择
- 论文太长了,34页