A Unified MRC Framework for Named Entity Recognition
关于A Unified MRC Framework for Named Entity Recognition的文献理解,为了方便快速理解,我选择性记录。
文章目录
摘要
命名实体识别(NER)是自然语言处理(NLP)中的一项任务,根据命名实体是否嵌套分为:nested NER 和 flat NER。一般的模型采用的大多是 sequence labeling models(序列标记模型),它只能实现分配单一label给单一token,而nested NER可能出现一个token具有多个label的情况。
本篇论文采用machine reading comprehension (MRC) 的方式,改善传统sequence labeling models。对于命名实体识别转换成一个QA问题,即根据问题找答案,如此一来,nested NER就转换成寻找多个问题的answer。
一、数据集
首先,将带有标记的NER数据集改造成三元集合:(Question, Answer, Context)。
对于每一个标签
y
∈
Y
y \in Y
y∈Y 将其关联成
m
m
m个问题:
q
y
=
{
q
1
,
q
2
,
.
.
.
,
q
m
}
q_y=\{q_1, q_2, ..., q_m\}
qy={q1,q2,...,qm}
实体关联为:
x
s
t
a
r
t
,
e
n
d
=
{
x
s
t
a
r
t
,
x
s
t
a
r
t
+
1
,
⋅
⋅
⋅
,
x
e
n
d
−
1
,
x
e
n
d
}
x_{start,end}=\{x_{start}, x_{start+1},· · · , x_{end-1}, x_{end}\}
xstart,end={xstart,xstart+1,⋅⋅⋅,xend−1,xend}即为文章
X
X
X的一个子串,其中满足
s
t
a
r
t
≤
e
n
d
start\leq end
start≤end
这样我们就可以得到一个三元组
(
q
y
,
x
s
t
a
r
t
,
e
n
d
,
X
)
(q_y,x_{start,end},X)
(qy,xstart,end,X)即三元集合(Question, Answer, Context)
二、模型细节
1.框架
主要是利用BERT实现,训练数据改造为:
{
[
C
L
S
]
,
q
1
,
q
2
,
.
.
.
,
q
m
,
[
S
E
P
]
,
x
1
,
x
2
,
.
.
.
,
x
n
}
,
[
C
L
S
]
\{[CLS], q_1, q_2, ..., q_m,[SEP], x_1, x_2, ..., x_n\},[CLS]
{[CLS],q1,q2,...,qm,[SEP],x1,x2,...,xn},[CLS]和
[
S
E
P
]
[SEP]
[SEP]为特殊标记。
BERT在接收这个训练数据后会输出一个矩阵
E
∈
R
n
×
d
E\in \mathbb{R}^{n\times d}
E∈Rn×d 其中
d
d
d表示BERT最后一层的向量维数
2.跨度选择
(1)开始位置预测
利用BERT训练出来的结果
E
E
E预测预测每个token作为开始的机率:
P
s
t
a
r
t
=
s
o
f
t
m
a
x
e
a
c
h
r
o
w
(
E
⋅
T
s
t
a
r
t
)
∈
R
n
×
2
P_{start}=softmax_{each\ row}(E \cdot T_{start})\in \mathbb{R}^{n\times 2}
Pstart=softmaxeach row(E⋅Tstart)∈Rn×2
其中
T
s
t
a
r
t
∈
R
d
×
2
T_{start}\in \mathbb R^{d\times 2}
Tstart∈Rd×2需要训练,
P
s
t
a
r
t
P_{start}
Pstart给出了相应位置的token作为开始下标的机率
(2)结束位置预测
与开始位置预测过程一致,只是用的是 T e n d T_{end} Tend矩阵,概率矩阵也是用 P e n d P_{end} Pend进行储存
(3)开始-结束 匹配
在预测过程中,可能会有多个同一类别的实体,这意味着有多个开始和结束下标。由于命名实体可能重叠嵌套,将开始下标和最近的结束下标匹配并不适用,所以需要一个新的方法进行匹配。
通过对
P
s
t
a
r
t
,
P
e
n
d
P_{start},P_{end}
Pstart,Pendargmax,可以得到起始位置和结束位置的索引:
I
^
s
t
a
r
t
=
{
i
∣
a
r
g
m
a
x
(
P
s
t
a
r
t
(
i
)
)
=
1
,
i
=
1
,
.
.
.
,
n
}
I
^
e
n
d
=
{
j
∣
a
r
g
m
a
x
(
P
e
n
d
(
i
)
)
=
1
,
j
=
1
,
.
.
.
,
n
}
\hat I_{start}=\{i|argmax(P_{start}^{(i)})=1,i=1,...,n\} \\ \hat I_{end}=\{j|argmax(P_{end}^{(i)})=1,j=1,...,n\}
I^start={i∣argmax(Pstart(i))=1,i=1,...,n}I^end={j∣argmax(Pend(i))=1,j=1,...,n}
训练一个二分类模型对开始和结束位置匹配:
P
i
s
t
a
r
t
,
j
e
n
d
=
s
i
g
m
o
i
d
(
m
⋅
c
o
n
c
a
t
(
E
i
s
t
a
r
t
,
E
j
e
n
d
)
)
P_{i_{start},j_{end}}=sigmoid(m\cdot concat(E_{i_{start}},E_{j_{end}}))
Pistart,jend=sigmoid(m⋅concat(Eistart,Ejend))
其中
m
∈
R
1
×
2
d
m\in \mathbb{R}^{1\times 2d}
m∈R1×2d需要训练
(4)训练和测试
开始和结束位置的损失参数为:
L
s
t
a
r
t
=
C
E
(
P
s
t
a
r
t
,
Y
s
t
a
r
t
)
L
e
n
d
=
C
E
(
P
e
n
d
,
Y
e
n
d
)
\mathcal{L}_{start}=CE(P_{start},Y_{start})\\ \mathcal{L}_{end}=CE(P_{end},Y_{end})
Lstart=CE(Pstart,Ystart)Lend=CE(Pend,Yend)
开始和结束位置匹配的损失函数为:
L
s
p
a
n
=
C
E
(
P
s
t
a
r
t
,
e
n
d
,
Y
s
t
a
r
t
,
e
n
d
)
\mathcal{L}_{span}=CE(P_{start,end},Y_{start,end})
Lspan=CE(Pstart,end,Ystart,end)
总体损失函数为:
L
=
α
L
s
t
a
r
t
+
β
L
e
n
d
+
γ
L
s
p
a
n
\mathcal{L}=\alpha \mathcal{L}_{start}+\beta \mathcal{L}_{end}+\gamma\mathcal{L}_{span}
L=αLstart+βLend+γLspan
注意:
α
,
β
,
γ
∈
[
0
,
1
]
\alpha,\beta,\gamma\in[0,1]
α,β,γ∈[0,1]是控制各损失函数对总体贡献超参数。
三、结果展示
嵌套NER的数据集的结果:
平面NER数据集上的结果展示:
查询问题和句子之间的注意力矩阵,可以看到问题和正确答案的相关性很高。
可以看到BERT-MRC比BERT-Tagger需要更少的数据。