Instance-Based Learning of Span Representations:A Case Study through Named Entity Recognition
基于实例的跨度表示学习:命名实体识别的实例研究
Abstract
本文提出了一种学习跨度相似性的基于实例的学习方法,能够在不失去性能的前提下建立具有较高可解释性的模型
1 Introduction
基于实例的学习方法(通过学习实例之间的相似性)。在推理时,将最相似的训练实例的类标签分配给新的实例。
采用token span的原因:
- 为实体候选“World Health Organization”分配不一致的标签
- 采用BIO标注:B-LOC I-ORG I-ORG
- 而真实标签:B-ORG I-ORG I-ORG
- 采用span预测,可以为每个span分配一个标签(可以解决嵌套NER问题)。
2 Model
2.1 NER as span classification
给定一个由T个单词的句子 X = ( w 1 , w 2 , . . . , w T ) X=(w_1,w_2,...,w_T) X=(w1,w2,...,wT),首先列举出可能的span S ( X ) \mathcal{S}(X) S(X),并给每个span s ∈ S ( X ) s\in \mathcal{S}(X) s∈S(X)分配类标签 y ∈ Y y\in \mathcal{Y} y∈Y。
把每个span写成 s = ( a , b ) s=(a,b) s=(a,b),其中 1 ≤ a ≤ b ≤ T 1\le a \le b \le T 1≤a≤b≤T
-
可能存在的spans 为 S ( X ) = { ( 1 , 1 ) , ( 1 , 2 ) , ( 1 , 3 ) , . . . , ( 4 , 5 ) , ( 5 , 5 ) } \mathcal{S}(X)=\{(1,1),(1,2),(1,3),...,(4,5),(5,5)\} S(X)={(1,1),(1,2),(1,3),...,(4,5),(5,5)}
-
F r a n z K a f k a \mathrm{Franz\ Kafka} Franz Kafka, s = ( 1 , 2 ) s=(1,2) s=(1,2),被分配为人名类标签 y = P E R y=PER y=PER
-
其他的非实体span被分配到null标签(y=NULL)
每个span s 被分配为标签y的概率可以用softmax函数建模:
P
(
y
∣
s
)
=
e
x
p
(
s
c
o
r
e
(
s
,
y
)
)
∑
y
′
e
x
p
(
s
c
o
r
e
(
s
,
y
′
)
)
P(y|s) = \frac{exp(score(s,y))}{\sum_{y^{'}}exp(score(s,y^{'}))}
P(y∣s)=∑y′exp(score(s,y′))exp(score(s,y))
score函数通过使用每个标签的权重向量
W
y
W_y
Wy和span特征向量
h
s
h_s
hs来计算:
s
c
o
r
e
(
s
,
y
)
=
w
y
⋅
h
s
score(s,y) = w_y\cdot h_s
score(s,y)=wy⋅hs
NULL 标签的得分被计算为一个常数:
s
c
o
r
e
(
s
,
y
=
N
U
L
L
)
=
0
score(s,y=NULL)=0
score(s,y=NULL)=0
loss 为负对数似然函数log-likelihood:
L
=
−
∑
(
X
,
Y
)
∈
D
∑
(
s
,
y
)
∈
S
(
X
,
Y
)
l
o
g
P
(
y
∣
s
)
\mathcal{L}=-\sum_{(X,Y)\in \mathcal{D}}\sum_{(s,y)\in \mathcal{S}(X,Y)}log P(y|s)
L=−(X,Y)∈D∑(s,y)∈S(X,Y)∑logP(y∣s)
其中
S
(
X
,
Y
)
\mathcal{S}(X,Y)
S(X,Y)是一组有span s和它的ground-truth label y组成的对
2.2 Instance-based span model
根据实例的span模型根据span之间的相似度对每个span进行分类
一个实体候选 F r a n z K a f k a \mathrm{Franz\ Kafka} Franz Kafka以及训练集的span被映射到特征向量空间。在向量空间中,分别计算所有候选对和训练实例 ( s 1 , s 2 , . . . , s 9 ) (s_1,s_2,...,s_9) (s1,s2,...,s9)之间的相似性,计算token概率分布,并给出PER概率最高的token分。
形式上,在邻域组件分析框架中,定义邻域span概率,即在训练集中选择一个span
s
i
∈
S
(
X
)
s_i\in \mathcal{S}(X)
si∈S(X)(可能的span)然后在剩余的候选集中的span中选择其他span
s
j
s_j
sj作为它的邻域:
P
(
s
j
∣
s
i
,
D
’
)
=
e
x
p
(
s
c
o
r
e
(
s
i
,
s
j
)
)
∑
s
k
∈
S
(
D
’
)
e
x
p
(
s
c
o
r
e
(
s
i
,
s
k
)
)
(1)
P(s_j|s_i,\mathcal{D}^{’}) = \frac{exp(score(s_i,s_j))}{\sum_{s_k\in \mathcal{S(D}{’})}exp(score(s_i,s_k))}\tag{1}
P(sj∣si,D’)=∑sk∈S(D’)exp(score(si,sk))exp(score(si,sj))(1)
本文从训练集
D
’
=
D
∖
(
X
,
Y
)
\mathcal{D^{’}=D}\setminus {(X,Y)}
D’=D∖(X,Y)中排除输入句子X以及它的真实标签Y,并把其他所有的span都作为候选者
S
(
D
’
)
=
{
s
∈
S
(
X
’
)
∣
(
X
’
,
Y
’
)
∈
D
′
}
\mathcal{S(D^{’})}=\{s\in\mathcal{S}(X^{’})|(X^{’},Y^{’})\in \mathcal{D^{'}}\}
S(D’)={s∈S(X’)∣(X’,Y’)∈D′}。评分函数返回的是span
s
i
,
s
j
s_i,s_j
si,sj之间的相似度。
然后计算span
s
i
s_i
si被分配给标签
y
i
y_i
yi的概率:
P
(
y
i
∣
s
i
)
=
∑
s
j
∈
S
(
D
′
,
y
i
)
P
(
s
j
∣
s
i
,
D
′
)
S
(
D
′
,
y
i
)
=
{
s
j
∈
D
′
∣
y
i
=
y
j
}
P(y_i|s_i) = \sum_{s_j\in \mathcal{S(D^{'},y_i)}}P(s_j|s_i,\mathcal{D^{'}})\\ \mathcal{S(D^{'},y_i)}= \{s_j\in \mathcal{D^{'}}|y_i=y_j\}
P(yi∣si)=sj∈S(D′,yi)∑P(sj∣si,D′)S(D′,yi)={sj∈D′∣yi=yj}
将具有与span
s
i
s_i
si相同标签的相邻span的概率相加,最小化的损失函数是负对数似然:
L
=
−
∑
(
X
,
Y
)
∈
D
∑
(
s
i
,
y
i
)
∈
S
(
X
,
Y
)
l
o
g
P
(
y
i
∣
s
i
)
\mathcal{L}=-\sum_{(X,Y)\in \mathcal{D}}\sum_{(s_i,y_i)\in \mathcal{S}(X,Y)}log P(y_i|s_i)
L=−(X,Y)∈D∑(si,yi)∈S(X,Y)∑logP(yi∣si)
S
(
X
,
Y
)
\mathcal{S}(X,Y)
S(X,Y)是一个span
s
i
s_i
si对的集合,它的真实标签是
y
i
y_i
yi,推理时,根据最大边远概率预测标签:
y
i
∧
=
a
r
g
m
a
x
y
∈
Y
P
(
y
∣
s
i
)
\overset{\wedge}{y_i} = \underset{y\in\mathcal{Y}}{arg\ max}P(y|s_i)
yi∧=y∈Yarg maxP(y∣si)
2.3 Efficient neighbor probability computation
等式1中邻域span 概率 P ( s j ∣ s i , D ′ ) P(s_j|s_i,\mathcal{D}^{'}) P(sj∣si,D′)取决于整个训练集 D ′ \mathcal{D}^{'} D′,这样计算成本太高了,因此使用随机采样来从训练集 D ′ \mathcal{D}^{'} D′中检索k个句子 D " = { ( X k ′ , Y k ′ ) } k = 0 K \mathcal{D}^{"}=\{(X_k^{'},Y_k^{'})\}_{k=0}^{K} D"={(Xk′,Yk′)}k=0K,训练时,从每个epoch的每个mini-batch中随机采样k个句子,可以在时间和内存两个方面都进行优化,使用V100,只用不到一天的时间。
3 Experiments
3.1 Experiment setup
Data CoNLL-2003进行flat NER;GENIA进行nested NER
**Encoder and span representation **使用word embedding和字符级CNN来编码,编码后的token表示为:
w
1
:
T
=
(
w
1
,
w
2
,
.
.
.
,
w
T
)
w_{1:T}=(w_1,w_2,...,w_T)
w1:T=(w1,w2,...,wT)
将编码后的token输入到双向LSTM中计算上下文向量得到
h
1
:
T
→
\overset{\rightarrow}{h_{1:T}}
h1:T→和
h
1
:
T
←
\overset{\leftarrow}{h_{1:T}}
h1:T←,然后为每个span
s
=
(
a
,
b
)
s=(a,b)
s=(a,b)生成
h
s
l
s
t
m
h_s^{lstm}
hslstm。
- 对于flat NER :
h s l s t m = [ h b → − h a − 1 → , h a ← − h b + 1 ← ] h_s^{lstm}=[\overset{\rightarrow}{h_b}-\overset{\rightarrow}{h_{a-1}},\overset{\leftarrow}{h_a}-\overset{\leftarrow}{h_{b+1}}] hslstm=[hb→−ha−1→,ha←−hb+1←]
- 对于nested NER:
h s l s t m = [ h b → − h a − 1 → , h a ← − h b + 1 ← , h a → + h b → , h a ← + h b ← ] h_s^{lstm}=[\overset{\rightarrow}{h_b}-\overset{\rightarrow}{h_{a-1}},\overset{\leftarrow}{h_a}-\overset{\leftarrow}{h_{b+1}},\overset{\rightarrow}{h_a}+\overset{\rightarrow}{h_{b}},\overset{\leftarrow}{h_a}+\overset{\leftarrow}{h_{b}}] hslstm=[hb→−ha−1→,ha←−hb+1←,ha→+hb→,ha←+hb←]
接着使用一个权重矩阵乘以
h
s
l
s
t
m
h_s^{lstm}
hslstm
h
s
=
W
h
s
l
s
t
m
h_s=Wh_s^{lstm}
hs=Whslstm
对于在基于实例的span模型中的公式1的评分函数,本文使用两个span表示的内积:
s
c
o
r
e
(
s
i
,
s
j
)
=
h
s
i
⋅
h
s
j
score(s_i,s_j)=h_{si}\cdot h_{sj}
score(si,sj)=hsi⋅hsj
3.2 Model configuration
- mini-batch中随机检索K=50个训练句子
- 利用余弦相似度选择K=50个最近邻的训练句子
- 词嵌入Glove=100维
3.3 Overall F1 scores
-
基于实例的span模型和基于分类器的span模型结果相当
-
基于实例的学习方法能够不牺牲性能构造NER模型
3.5 Effects of training data size
图2展示了模型分别训练了所有、1/2、1/4、1/8的训练数据,得到的CoNLL-2003验证集的F1值
-
随着训练数据的减少,两个模型的性能逐渐降低
-
两个模型的指标曲线相当
4 启示
- 应用了相似度的方式进行NER,能否迁移到zero-shot呢?
- 论文的模型部分表达的很好