实体链指(3)EL:End-to-End
前面已经由一篇综述大致了解了Entity Linking的定义和任务框架,以及对Disambiguation-Only 的2篇具有代表性的论文进行了介绍,本篇主要介绍End-to-End的两篇代表性论文。
1 End-to-end neural entity linking
Motivation
这是一篇2018年的end2end的文章,处于前BERT时期。首先说下作者的动机:当前EL系统大致分为2个子任务:MD/NER和ED(MD:mention detection,ED:entity disambiguation),通常情况下,解决这2个子任务是独立进行的,那么作者认为拆开独立进行这2个子任务有什么问题呢:
- 作者认为MD和ED这2个子任务互相是有依赖关系的,而这一点被忽略掉了。这种相互依赖可以这么理解:
(1)MD阶段产出的多个不同的可链接的span可以为ED阶段提供更多的上下文线索
(2)在特定的上下文中找到真正的实体,实体带着KB中丰富的信息,又能进一步激励模型检测gold mention的边界,尤其是对于多字mention。 - MD阶段如果出现了实体识别错误,这种错误会传递到ED阶段,影响link的正确性,并且这种错误无法修复
- 需要对query中每个mention进行消歧,候选生成和消歧都会进行多次,无法实现one-pass
- 不符合人的思维习惯
出于以上这些考虑,作者提出端到端的实体链指模型。接下来就从下到上,来看下作者是如何搭建这个end2end的模型的。
Neural Joint Mention Detection and Entity Disambiguation
Word and Char Embeddings(context-independent embs)
最底层的word embedding使用的是预训练好的word2vec,char embedding 是基于字符LSTM,使用前向LSTM的word的最后1个字符的隐向量,和后向LSTM的word的第1个字符的隐向量,2个隐向量进行拼接即为char embedding:
[
h
L
f
;
h
1
b
]
[h_L^f;h_1^b]
[hLf;h1b],其中word
w
=
{
z
1
,
.
.
.
,
z
L
}
w=\{z_1,...,z_L\}
w={z1,...,zL},
z
i
z_i
zi 为word
w
w
w的第i个字符:
h
t
f
=
F
W
D
−
L
S
T
M
(
h
t
−
1
f
,
z
t
)
h_t^f = FWD-LSTM(h_{t-1}^f, z_t)
htf=FWD−LSTM(ht−1f,zt)
h
t
b
=
B
K
W
D
−
L
S
T
M
(
h
t
+
1
b
,
z
t
)
h_t^b = BKWD-LSTM(h_{t+1}^b, z_t)
htb=BKWD−LSTM(ht+1b,zt)
最后将word embedding和char embedding拼接在一起,就组成了token
w
w
w 的context-independent word and char embedding
,记为
{
v
k
}
k
∈
1
,
T
‾
\{v_k\}_{k\in \overline{1,T}}
{vk}k∈1,T。
Mention Representation(context-aware word embs)
在前面word-char embedding的基础上接一个BiLSTM,然后每个word的前向LSTM和后向LSTM拼接得到context-aware word emb
,记为
x
k
x^k
xk。在此基础上又得出mention的表征:即对于每个mention,将mention的first word embedding、last word embedding、以及“soft head” embedding 拼接在一起,再过一个投影层,即得到mention表征,记为
g
m
=
[
x
q
;
x
r
;
x
^
m
]
g_m=[x_q;x_r;\hat x^m]
gm=[xq;xr;x^m],其中
x
^
m
\hat x^m
x^m为“soft head” embedding,其计算就是在mention的words embedding上做了一个attention机制:
score:
α
k
=
<
w
α
,
x
α
>
\alpha_k=<w_\alpha,x_\alpha>
αk=<wα,xα>
weight:
α
k
m
=
exp
(
α
k
)
∑
t
=
q
r
exp
(
α
t
)
\alpha_k^m=\frac{\exp(\alpha_k)}{\sum_{t=q}^r\exp(\alpha_t)}
αkm=∑t=qrexp(αt)exp(αk)
attn:
x
^
m
=
∑
k
=
q
r
α
k
m
⋅
v
k
\hat{x}^m=\sum_{k=q}^r \alpha_k^m \cdot v_k
x^m=∑k=qrαkm⋅vk
实验发现soft head embedding只能带来细微的提升,可能是由于大部分mention都不超过2个words的长度。所以为了学习到各个字向量之间的非线性关联,又增加了一个投影层: x m = F F N N 1 ( g m ) x^m=FFNN_1(g^m) xm=FFNN1(gm),并且投影层还能将m投影到和entity表征的相同size大小。
Entity Embeddings(fixed continuous entity representations)
entity embedding则是提前预训练好,训练方式:对每个entity 使用如下的exponential model来近似word-entity 的先验条件分布
p
^
(
w
∣
e
)
\hat{p}(w|e)
p^(w∣e),该分布可通过word co-occurrence counts获得(即基于字词共现、类似于共现矩阵等统计特征获得):
exp
(
⟨
x
w
,
y
e
⟩
)
∑
w
′
∈
W
exp
(
⟨
x
w
′
,
y
e
⟩
)
≈
p
^
(
w
∣
e
)
\frac{\exp(\langle x_w,y_e \rangle)}{\sum_{w\prime \; \in \;W \exp(\langle x_{w^\prime},y_e \rangle)}}\approx \hat{p}(w|e)
∑w′∈Wexp(⟨xw′,ye⟩)exp(⟨xw,ye⟩)≈p^(w∣e)
其中 x m x_m xm是fixed pre-trained word vectors, y e y_e ye则是需要通过训练得到的entity embedding。
Final Local Score(context-aware entity-mention score)
对于每个span mention,最多选择s个实体候选,然后计算基于mention侧和entity侧context表征的相似度打分(点乘),以捕获对MD和ED决策有用的信息。除此之外还会结合一个log-prior probability(经验条件分布
log
p
(
e
j
∣
m
)
\log p(e_j|m)
logp(ej∣m)可以从wiki等数据集中通过统计计算得到),然后接上一个浅层前馈网络FFNN ,以得到最终的context-aware entity-mention score
:
Ψ
(
e
j
,
m
)
=
F
F
N
N
2
(
[
log
p
(
e
j
∣
m
)
;
⟨
x
m
,
y
j
⟩
]
)
\Psi(e_j,m)=FFNN_2([\log p(e_j|m);\langle x^m,y_j\rangle])
Ψ(ej,m)=FFNN2([logp(ej∣m);⟨xm,yj⟩])
喂入 F F N N 2 FFNN_2 FFNN2的出了上述两个特征外,这里还可以考虑引入Long Range Context Attention: 一般是context words w i w_i wi对候选实体 e j e_j ej的soft attention score。
Training
训练时最小化目标:
θ
∗
=
arg min
θ
∑
m
∈
M
∑
e
∈
C
(
m
)
V
(
Ψ
θ
(
e
,
m
)
)
\theta^*=\argmin_\theta \sum_{m\in M}\sum_{e\in C(m)}V(\Psi_\theta (e,m))
θ∗=θargminm∈M∑e∈C(m)∑V(Ψθ(e,m))
其中
V
V
V可以是各种loss,能够加强gold pairs的得分,以使得正例pair和负例尽可能线性可分(联想到SVM的间隔最大化):
V
(
Ψ
θ
(
e
,
m
)
)
=
{
max
(
0
,
γ
−
Ψ
θ
(
e
,
m
)
)
,
i
f
(
e
,
m
)
∈
G
max
(
0
,
Ψ
θ
(
e
,
m
)
)
,
i
f
o
t
h
e
r
w
i
s
e
V(\Psi_\theta (e,m))=\begin{cases} \max(0,\gamma-\Psi_\theta (e,m)), &if(e,m)\in G\\\max(0,\Psi_\theta (e,m)),&if \; otherwise \end{cases}
V(Ψθ(e,m))={max(0,γ−Ψθ(e,m)),max(0,Ψθ(e,m)),if(e,m)∈Gifotherwise
Inference
- 选择所有可能链接的token spans: M = m ∣ ( C ( m ) > = 1 ) M={m|(C(m)>=1)} M=m∣(C(m)>=1), C ( m ) C(m) C(m)为mention m m m的候选集和;
- 只有e-m pair final score大于阈值 δ \delta δ的pair才会保留下来,其他会淘汰掉。阈值 δ \delta δ是在验证集上确定的,由验证集的micro F1 metric最大化选定;
- 最后确定span时是基于贪心策略,即只有与之前产出的span(得到更高分的)不重合的span才会被继续选择。
Global Disambiguation
全局消歧(Global Disambiguation)指对于一段文本中的多个 mention 同时进行消歧,认为同一段文本中的实体具有较强的相互关联,全局策略能进一步利用此信息 。则对应的global score记为
G
(
e
j
,
m
)
G(e_j,m)
G(ej,m),则global final score可改写为:
Φ
(
e
j
,
m
)
=
F
F
N
N
3
(
[
Ψ
(
e
j
,
m
)
;
G
(
e
j
,
m
)
]
)
\Phi(e_j,m)=FFNN_3([\Psi(e_j,m);G(e_j,m)])
Φ(ej,m)=FFNN3([Ψ(ej,m);G(ej,m)])
此时最小化目标改写为local final score和global final score共同最小化:
θ
∗
=
arg min
θ
∑
d
∈
D
∑
m
∈
M
∑
e
∈
C
(
m
)
V
(
Ψ
θ
(
e
,
m
)
)
+
V
(
Φ
(
e
,
m
)
)
\theta^*=\argmin_\theta \sum_{d\in D} \sum_{m\in M}\sum_{e\in C(m)}V(\Psi_\theta (e,m))+V(\Phi(e,m))
θ∗=θargmind∈D∑m∈M∑e∈C(m)∑V(Ψθ(e,m))+V(Φ(e,m))
Experiments & Results
实验使用的数据集AIDA/CoNLL是目前开放的最大的EL数据集,训练集包含1.8w个mention和946个文章,测试集包含231文章的4,485个 mentions。实验分别在 强匹配(strong mating) 和 弱匹配(weak matching) 标准上进行。强匹配是指必须精准预测出mention span的边界以及对应的entity,弱匹配是指预测出的mention span和gold mention中间有交集就算预测正确,但必须链指到正确的entity上。实验结果如下:
从上面两个表可以看出:
- 无论是在强匹配还是弱匹配,我们的模型大都能在各个数据集上表现的最好(红色)或次好(蓝色)
- 此外还可以观察到:弱匹配 EL 结果与强匹配结果相当,表明本文的方法非常擅长检测提及边界。
作者实验的不同版本的模型:
- Base model:对应模型图的FFNN2,但是只使用了mention local score和 log-prior,没有Long Range Context Attention
- Base model + att:Base Model + Long Range Context Attention
- Base model + att + global:加了全局消歧score,对应完整的模型图
- ED base model + att + global Stanford NER:模型运行在Stanford NER system上(直接使用其产出的NER结果代替模型mantion span产出过程?)
2 Efficient one-pass end-to-end entity linking for questions
Present Situation
这是一篇2020年的文章,处于后BERT时代,主要针对解决问答任务。作者首先分析了当前EL任务现状的一些问题:
- 真实世界的文本数据总是不规范的(脏数据、格式不标准、忽略大小写、没有标点等),这给entity link带来了极大挑战;
- 大部分entity link聚焦在 ED的子任务,即前提是给出gold mention,而不是end2end;
- 很多系统SOTA是在很长的、格式良好的长文档上评测的,例如新闻、而不是在有噪声的短文本上,例如搜索系统的query;
- 大部分先前的工作只注重提升识别的准确率,而忽略了性能;
所以作者提出了在像问答、检索等这种noisy的短文本上,实现一个快速的、高效的、准确的EL 模型,作者主要使用了Bi-encoder的框架,接下来看看是如何建模的。
ELQ Model
首先是question侧和entity侧的context表征:
- question representations:
[ q 1 . . . q n ] T = B E R T ( [ C L S ] q 1 . . . q n [ S E P ] ) ∈ R n × h [\bm{q}_1...\bm{q}_n]^T=\rm{BERT}([CLS]q_1...q_n[SEP])\in \mathbb{R}^{n\times h} [q1...qn]T=BERT([CLS]q1...qn[SEP])∈Rn×h - entity representations:
x e = B E R T [ C L S ] ( [ C L S ] t ( e i ) [ E N T ] d ( e i ) [ S E P ] ) ∈ R h \bm{x}_e=\rm{BERT}_{[CLS]}([CLS]t(e_i)[ENT]d(e_i)[SEP]) \in \mathbb{R}^h xe=BERT[CLS]([CLS]t(ei)[ENT]d(ei)[SEP])∈Rh
其中q表示question、t(ei)实体的wiki页面的title信息,d(ei)实体的wiki页面的描述信息(Wikipedia article的前128个token)。
Mention Detection
Mention候选是指question中所有长度至多为
L
L
L的spans
[
i
,
j
]
[i, j]
[i,j],那么一个即span candidate能成为一个mention的得分即为
p
(
[
i
,
j
]
∣
q
u
e
s
t
i
o
n
)
p([i,j]|question)
p([i,j]∣question):
p
(
[
i
,
j
]
)
=
σ
(
S
s
t
a
r
t
(
i
)
)
+
σ
(
S
e
n
d
(
j
)
)
+
∑
t
=
i
t
S
m
e
n
t
i
o
n
(
t
)
p([i,j])=\sigma(S_{start}(i))+\sigma(S_{end}(j))+\sum_{t=i}^t S_{mention}(t)
p([i,j])=σ(Sstart(i))+σ(Send(j))+t=i∑tSmention(t)
其中
σ
(
S
s
t
a
r
t
(
i
)
)
\sigma(S_{start}(i))
σ(Sstart(i))为该span的第一个字是一个mention的开头的得分,
σ
(
S
e
n
d
(
j
)
)
\sigma(S_{end}(j))
σ(Send(j))为该span的最后一个字是一个mention的结尾的得分,除此之外还计算了span中每个字是mention的一部分的得分
∑
t
=
i
t
S
m
e
n
t
i
o
n
(
t
)
\sum_{t=i}^t S_{mention}(t)
∑t=itSmention(t),然后三者相加得到mention probability
:
p
(
[
i
,
j
]
)
p([i,j])
p([i,j])
Entity Disambiguation
消歧/链指阶段需要计算mention span候选表征和entity候选的相似度打分,前面基于question侧的表征$ [ q 1 . . . q n ] [\bm{q}_1...\bm{q}_n] [q1...qn],可以计算mention span的表征 y i , j y_{i,j} yi,j:
y i , j = 1 j − i + 1 ∑ t = i j q t ∈ R h \bm{y}_{i,j}=\frac{1}{j-i+1}\sum_{t=i}^j \bm{q}_t\in \mathbb{R}^h yi,j=j−i+11t=i∑jqt∈Rh
即对mention候选span的各个token的表征取平均:
a
v
g
(
q
i
,
⋅
⋅
⋅
,
q
j
)
avg(q_i,···,q_j)
avg(qi,⋅⋅⋅,qj)。然后基于mention和entity表征计算相似度打分:
s
(
e
,
[
i
,
j
]
)
=
x
e
T
y
i
,
j
s(e,[i,j])=\bm{x}_e^T\bm{y}_{i,j}
s(e,[i,j])=xeTyi,j
基于这个打分再计算整个候选实体集上的条件似然概率分布
p
(
e
∣
[
i
,
j
]
)
p(e|[i,j])
p(e∣[i,j]),即所有候选实体的softmax:
p
(
e
∣
[
i
,
j
]
)
=
exp
(
s
(
e
,
[
i
,
j
]
)
)
∑
e
′
∈
E
exp
(
s
(
e
′
,
[
i
,
j
]
)
)
p(e|[i,j])=\frac{\exp(s(e,[i,j]))}{\sum_{e^{\prime}\in E} \exp(s(e^{\prime},[i,j]))}
p(e∣[i,j])=∑e′∈Eexp(s(e′,[i,j]))exp(s(e,[i,j]))
Training
上述2个子任务分别得到2个概率分布:mention probabilities
:
p
(
[
i
,
j
]
)
p([i, j])
p([i,j])和likelihood distribution overall entities
:
p
(
e
∣
[
i
,
j
]
)
p(e|[i,j])
p(e∣[i,j]),训练时相当于是MD和ED的一个联合训练任务,loss是2个任务的loss之和:.
(1)
L
M
D
L_{MD}
LMD:所有mention candidates的二值交叉熵损失,如果
[
i
,
j
]
[i, j]
[i,j]是gold mention span,则
y
[
i
,
j
]
=
1
y[i,j] = 1
y[i,j]=1否则为0, 其中N是mention span candidates总数:
L
M
D
=
−
1
N
∑
1
≤
i
≤
j
≤
min
(
i
+
L
−
1
,
n
)
(
y
[
i
,
j
]
log
p
(
[
i
,
j
]
)
+
(
1
−
y
[
i
,
j
]
)
log
(
1
−
p
(
[
i
,
j
]
)
)
)
L_{MD}=-\frac{1}{N}\sum_{1\le i\le j \le \min(i+L-1,n)} (y_{[i,j]}\log p([i,j])+(1-y_{[i,j]})\log (1-p([i,j])))
LMD=−N11≤i≤j≤min(i+L−1,n)∑(y[i,j]logp([i,j])+(1−y[i,j])log(1−p([i,j])))
(2)
L
E
D
L_{ED}
LED:负对数似然(极大似然法),其中
e
g
e_g
eg是mention span
[
i
,
j
]
[i, j]
[i,j]的gold entity:
L
E
D
=
−
log
p
(
e
g
∣
[
i
,
j
]
)
L_{ED}=-\log p(e_g|[i,j])
LED=−logp(eg∣[i,j])
L = L M D + L E D L = L_{MD}+L_{ED} L=LMD+LED
Inference
-
给定一个输入question q,使用MD模型获得mention span 候选集和:
M = [ i , j ] : 1 ≤ i ≤ j ≤ m i n ( i + L − 1 , n ) , p ( [ i , j ] ) > γ M = {[i, j] : 1 ≤ i ≤ j ≤ min(i+L−1, n), p([i, j]) >γ} M=[i,j]:1≤i≤j≤min(i+L−1,n),p([i,j])>γ,其中 γ γ γ是阈值(超参); -
然后为每个mention span计算联合概率:
p ( e , [ i , j ] ) = p ( e ∣ [ i , j ] ) p ( [ i , j ] ) p(e, [i, j]) = p(e|[i, j])p([i, j]) p(e,[i,j])=p(e∣[i,j])p([i,j]) -
实际计算中,因为Wikipedia中Entity数量太多,Softmax不好计算,所以会设计参数来对entity候选数进行限制,例如只计算每个保留下来的mention的top10个最近的Entity来计算softmax。
Experiments & Results
评估采用的是弱匹配,即entity要是完全正确的,mention只需要span和gold span有交集: [ m s , m e ] ∩ [ m ^ s , m ^ e ] ≠ ∅ [m_s, m_e] \cap [\hat{m}_s, \hat{m}_e] \ne \varnothing [ms,me]∩[m^s,m^e]=∅。
评估指标:
p
=
∣
C
∣
∣
T
^
∣
,
r
=
∣
C
∣
∣
T
∣
,
F
1
=
2
p
r
p
+
r
p=\frac{|C|}{|\hat{T}|},r=\frac{|C|}{|T|},F_1=\frac{2pr}{p+r}
p=∣T^∣∣C∣,r=∣T∣∣C∣,F1=p+r2pr
其中 T T T是gold entity-mention tuples的集和, T ^ \hat{T} T^是predicted entity-mention tuples的集和。
第1个实验使用的是基于2个QA数据集:WebQSP 和 GraphQuestions构建的一个EL的标注数据集:WebQSPEL and GraphQEL ,其中每个question的groundtruth是 ( e , [ m s , m e ] ) (e, [m_s,m_e]) (e,[ms,me])pair的列表。
从Table2 可以看到本文基于BERT的Bi-encider模型在效果和运行时间上都远远优于当前其他SOTA模型。此外在 WebQSPEL 的情况下,本文ELQ模型比 TAGME 好 2.3 倍。在运行时间上,本文的ELQ模型(one-pass)比BLINK(multiple pass)要快近2倍,但是比TAGME要慢,不过TAGME是非神经网络的模型。
第2个实验是QA相关的实验,为了证明本文搭建的EL对 QA任务准确性的影响,作者使用 GraphRetriever 对文本开放域问答任务进行了实验(Gretriever在完成QA任务的检索过程中有使用EL去召回文章)。 原始的Gretriever使用的是TAGME作为其EL部分,作者将ELQ替换它原始的TAGME并保持其他组件不变,同时也将TF-IDF这类在检索中常用的基础方法也作为baseline,结果看表3:
可以看到文本提出的模型在3个QA数据集上都表现优异,特别是在WebQuestions (WQ) 和 Natural Questions (NQ),这2个数据集主要来自 Web 查询,数据基本都是由简短、嘈杂的question组成,这符合我们最初想要解决的问题出发点,可以看到使用 ELQ 替换 TAGME 能显著提高性能,其中在 WQ 和 NQ数据集上 的绝对改进分别为 5.9% 和 3.9%。
虽然在 Wikipedia 上训练的 ELQ 总体上取得了不错的效果,但在 WebQSPEL 上进一步微调会在 WQ 上获得额外收益。这表明,如果同一领域中有实体链接的标注数据可用,那么使用它们来微调 ELQ 可以带来进一步的收益。
最后一个实验作者是训练好的bi-encoder拆分成2个独立的组件,然后去分别比较他们各自的能力,这里作为基线的BLINK也拆分成2个组件进行比较,结果看表4:
从上表可以看出,即使拆分开,单独的MD和EL也是要优于基线的,这表明作者一开始的设想得到了验证:即MD和EL这2个子任务是相互依赖的,并且通过联合训练能进一步使得模型利用这种依赖,而促使2个子任务互相获益。
ELQ这种端到端的模型需要事先提供mention边界,例如枚举所有可能的mention span,但对于question和query这种数据来说,尤其是WebQSP这种非常简短的问句,枚举所有可能的mention的代价是可以承受的。况且实际训练和infer时也会采取一些策略,来淘汰不可能的mention候选,尽可能缩小复杂度,例如设置一些阈值等。
[1] Kolitsas, Nikolaos, Octavian-Eugen Ganea, and Thomas Hofmann. “End-to-end neural entity linking.” arXiv preprint arXiv:1808.07699 (2018).
[2] Li, Belinda Z., et al. “Efficient one-pass end-to-end entity linking for questions.” arXiv preprint arXiv:2010.02413 (2020).
[3] Tagme Documentation解读
如果需要其他NLP相关内容请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~
最后:如果本文中出现任何错误,请您一定要帮忙指正,感激~