Named Entity Recognition as Dependency Parsing
消融实验 双仿射分类器 ICLR 未标注实体问题
Background(要解决的问题)
命名实体识别(NER)任务涉及到识别表示实体引用的文本范围。NER的研究通常只关注flat NER,忽略了实体引用之间的嵌套(nested)关系。
Contributions(创新点)
- 将依存分析中的biffine机制引入NER,遍历整个句子,模型对每个span的起点和终点打分以得到结果,从而解决nested NER问题;
- 在8个数据集上都达到了SOTA水平;
Method
有了上周的学习的基础,本文的方法理解起来还是很简单的:
模型训练
嵌入层:
- 采用$BERT_{large}$和fastText构造Word Embedding;
- 使用CNN构造Character Embedding;
将1,2得到的特征进行拼接,输入到BiLSTM中,得到最终的Word Representation $x$。
论文再用了两个FFNN——FFNN_Start和FFNN_End处理$x$,分别得到具有span start特性的representation $h_s$和具有span end特性的representation $h_e$。最后,使用一个biaffine model生成一个$l \times l \times c$的得分向量$r_m$。
例如,下面是为某一个span $i$预测实体类型的过程:
$$
h_s(i) = FFNN_s(x_{s_i})
$$
$$
h_e(i) = FFNN_e(x_{e_i})
$$
$$
r_m(i) = h_s(i)^TU_mh_e(i) + W_m(h_s(i)\oplus h_e(i))+b_m
$$
其中$s_i$和$e_i$表示span $i$对应的开始和结束索引。$U_m$是一个$d \times c \times d$的向量,$W_m$是一个$2d \times c$的矩阵,$b_m$是偏置。
那么,span $i$对应的category $y \prime$就是:
$$
y \prime (i) = \arg \max r_m(i)
$$
文章的损失函数就是对于每一个valid span的multi-class交叉熵函数:
$$
p_m(i_c) = \frac {exp(r_m(i_c))} {\sum^{C}{\hat c=1} exp(r_m(i{\hat c}))}
$$
$$
loss = - \sum^N_{i=1}\sum^{C}{c=1}y{i_c}\log p_m(i_c)
$$
预测解码
首先对所有的$r_m(i_{y\prime})$按照分数的大小进行降序排列。
对于nested NER解码,一个entity只要不破坏排在它前面的entity那么就会被解码为最终的entity。对于如何定义entity $i$破坏了entity $j$呢?其定义如下:
$$
s_i \lt s_j \le e_i \lt e_j \ or \ s_j \lt s_i \le e_j \lt e_i
$$
例如在the Bank of China中,实体the Bank of破坏了实体Bank of China。
对于flat NER解码,也有着一个规则:任何包含前面的实体,或者被包含在前面的实体 的实体 都不会被选择。
Experiments
Nested Dataset:ACE 2004、ACE 2005、GENIA
Flast Dataset:CONLL 2002、CONLL 2003、ONTONOTES
结果:
其次,作者对模型中的一些重要组件进行了消融实验,得到以下结果:
由上图可见,biaffine和BERT embedding对模型的性能影响更大。
Thinking
- 这篇文章采用的方法还是上周说的粗暴的枚举所有的span区间,只不过是在多分类时,使用了biaffine而不是简单的FFNN;
- 文章在嵌入层的操作好复杂,又是BERT,又是fastText,又是BiLSTM。又是word embedding,又是character embedding。。。
- 而且文章标题中说as Dependency Parsing,但是论文中并没有提到依存分析,就只是用到了依存分析中的biaffine方法,感觉作者非常的标题党啊!