【NLP-Paper】基于MRC框架的命名实体识别方法

  • 论文名称:A Unified MRC Framwork for Name Entity Recognition
  • 论文链接:https://arxiv.org/abs/1910.11476
  • 论文源码:https://github.com/ShannonAI/mrc-for-flat-nested-ner

1. 概述

1.1 命名实体识别的现状

命名实体识别(NER)任务按照实体是否“嵌套(nested)”分为flat NER(非嵌套型)nested NER(嵌套型)。如下图所示:
【NLP-Paper】基于MRC框架的命名实体识别方法_第1张图片
其中,flat NER经常按照序列标注的方式去解决;nested NER则是通过构建pipeline的方式解决(如:先识别出实体,再对识别出的实体进行分类),此外,pipelined systems还有错误传递运行时间长需要很多人工特征等缺点。

1.2 论文的贡献

  1. 提出一种基于MRC(Machine Reading Comprehension)框架的解决方案,可以统一处理flat NERnested NER任务;
  2. 基于MRC的解决方案可以让问题编码一些先验知识,在小规模数据集下、迁移学习下的表现更好;
  3. 在8中数据集下达到了SOTA;

2. 模型设计

2.1 NER任务

给定一个句子 X = { x 1 , x 2 , . . . , x n } X=\lbrace x_1,x_2,...,x_n \rbrace X={x1,x2,...,xn},其中 x n x_n xn是句子中的字符,n是句子的长度。实体识别就是找出句子 X X X中的所有实体,并给所有实体赋予一个标签 y ∈ Y y \in Y yY(其中 Y Y Y是预先定义好的标签类型,如:PER,LOC等)。

2.2 MRC任务

给定上下文 C C C和问题 Q Q Q,其中 C = { c 1 , c 2 , . . . , c n } C=\lbrace c_1,c_2, ...,c_n \rbrace C={c1,c2,...,cn},MRC(片段抽取型)任务要求模型从 C C C中抽取连续的子串 a = { c i , c i + 1 , . . . , c i + k } a=\lbrace c_i,c_{i+1},...,c_{i+k} \rbrace a={ci,ci+1,...,ci+k}其中 ( 1 ≤ i ≤ i + k ≤ n ) (1\leq i \leq i+k \leq n) (1ii+kn)

2.3 基于MRC框架的NER解决方案

将NER任务转换为MRC任务,如:抽取句子中PER(PERSON)实体的NER任务,可以转换为回答问题which person is mentioned in the textMRC任务。此种方式天然适配falt NERnested NER任务。(当需要抽取不同类别的重叠实体时,只需要回答两个独立的问即可)。

2.4 数据构建

NER dataset转换为(QUESTION, ANSWER, CONTEXT)的形式。

  1. 为每个tag(标签) y ∈ Y y \in Y yY分配一个自然语言形式的问题 q y = q 1 , q 2 , . . . , q m q_y={q_1,q_2,...,q_m} qy=q1,q2,...,qm,其中 m m m是问题(query)的长度;
  2. 对于实体 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}=\lbrace x_{start}, x_{start + 1}, ..., x_{end-1}, x_{end} \rbrace xstart,end={xstart,xstart+1,...,xend1,xend}是句子 X X X的子串,满足 s t a r t ≤ e n d start \leq end startend,每个实体都有一个label( y ∈ Y y \in Y yY);
  3. 三元组 ( q y , x s t a r t , e n d , X ) (q_y, x_{start,end},X) (qy,xstart,end,X)对应三元组(QUESTION,ANSWER,CONTENXT)

2.5 question的构建

question的构建方式非常重要,因为question会将label先验知识编码进去,并对最终的模型效果有显著的影响。论文使用标注指南作为question标注指南是构造NER数据集时提供给标注者的简短的标注说明,如下图所示),后文会分析不同的question构建方式对模型效果的影响。
【NLP-Paper】基于MRC框架的命名实体识别方法_第2张图片

2.6 模型细节

2.6.1 Model Backbone

question q y q_y qy句子 X X X拼接成 { [ C L S ] , q 1 , q 2 , . . . , q m , [ S E P ] , x 1 , x 2 , . . . , x n } \lbrace [CLS], q_1,q_2,...,q_m,[SEP],x_1,x_2,...,x_n \rbrace {[CLS],q1,q2,...,qm,[SEP],x1,x2,...,xn}的形式,输入BERT进行特征提取,得到特征矩阵 E ∈ R n × d E \in R^{n \times d} ERn×d,其中 n n n为句子长度, d d d为BERT最后一层提取的特征矩阵的向量维度。

2.6.2 Span Selection

MRC抽取答案的方法是预测答案的开始位置结束位置,有两种方案:

  1. 设计2个n-classes分类器(n为句子长度),分别预测答案的开始位置结束位置。这种方案在给定一个context和一个question时只能得到一个答案,无法处理句子中存有多个实体的问题,更不能解决实体嵌套的问题;
  2. 设计2个2分类器,其中一个分类器负责预测每个字符是否是实体开始位置,另一个分类器负责预测每个字符是否是实体的结束位置。这种方案在给定一个context和一个question时支持多个实体开始位置多个实体结束位置,因此有能力根据 q y q_y qy抽取出所有相关的实体。模型采用的是本方案。

Start Index Prediction
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 \space row}(E \cdot T_{start}) \in R^{n \times 2} Pstart=softmaxeach row(ETstart)Rn×2

其中:

  • T s t a r t ∈ R n × 2 T_{start} \in R^{n\times 2} TstartRn×2是需要学习的参数;
  • P s t a r t P_{start} Pstart每一行构成一个是或不是实体开始位置的概率分布;

End Index Prediction
P e n d = s o f t m a x e a c h   r o w ( E ⋅ T e n d ) ∈ R n × 2 P_{end}=softmax_{each \space row}(E \cdot T_{end}) \in R^{n \times 2} Pend=softmaxeach row(ETend)Rn×2

其中:

  • T e n d ∈ R n × 2 T_{end} \in R^{n\times 2} TendRn×2是需要学习的参数;
  • P e n d P_{end} Pend每一行构成一个是或不是实体结束位置的概率分布;

Start-End Matching
在句子 X X X中,同一个类型下存在多个实体,这就意味着存在多个start-index多个end-index,因此需要一个二分类器去匹配start-indexend-index
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(mconcat(Eistart,Ejend))
其中:

  • m ∈ R 1 × 2 d m \in R^{1 \times 2d} mR1×2d是需要学习的参数。

2.7 Train & Test

2.7.1 Train阶段

训练阶段有三个损失函数:

  • start index model损失函数: ζ s t a r t = C E ( P s t a r t , Y s t a r t ) \zeta_{start}=CE(P_{start},Y_{start}) ζstart=CE(Pstart,Ystart)
  • end index model损失函数: ζ e n d = C E ( P e n d , y e n d ) \zeta_{end}=CE(P_{end},y_{end}) ζend=CE(Pend,yend)
  • match model损失函数: ζ s p a n = C E ( P s t a r t , e n d , Y s t a r t , e n d ) \zeta_{span}=CE(P_{start,end},Y_{start,end}) ζspan=CE(Pstart,end,Ystart,end)

Train的损失函数为: ζ = α ζ s t a r t + β ζ e n d + γ ζ s p a n \zeta=\alpha \zeta_{start}+\beta \zeta_{end}+\gamma \zeta_{span} ζ=αζstart+βζend+γζspan,其中 α , β , γ ∈ [ 0 , 1 ] \alpha,\beta,\gamma \in [0,1] α,β,γ[0,1],是超参。

2.7.2 Test阶段

  1. 使用start index model预测实体的start-index
  2. 使用end index model预测实体的end-index
  3. 使用match modelstart-indexend-index进行匹配,当 P s p a n ( i s t a r t , i e n d ) > 0.5 P_{span}(i_{start},i_{end}) >0.5 Pspan(istart,iend)>0.5时,模型判定x(i:j)是实体,否则不是。

3. 效果

3.1 Nested NER效果

【NLP-Paper】基于MRC框架的命名实体识别方法_第3张图片
由上表可知,MRC的方法在nested NER所有数据集上的表现更加显著。

3.2 Flat NER效果

【NLP-Paper】基于MRC框架的命名实体识别方法_第4张图片
有上表可以看出,MRC方法构建的模型在OntoNotes数据集是的效果提升比较显著,这是因为该数据集有更多的实体类型,其中一些类型的数据非常稀疏。这也表明MRCquery中编码了一些先验知识,能够帮助模型缓解数据稀疏的问题

4. 分析

4.1 MRC or BERT ?

效果的提升是来自Bert还是MRC?对此,论文作者也做了对比实验:

  • 对于非BERT模型,作者比较了LSTM tagger(non-MRC)BiDAF/QAnet(MRC)
  • 对于BERT模型,作者比较了BERT-TaggerBERT-MRC

对比数据如下:
【NLP-Paper】基于MRC框架的命名实体识别方法_第5张图片
由上表的数据得出结论,无论是non-BERT还是BERTMRC都比non-MRC效果好。

4.2 如何构建Question ?

Question的构建方式对结果有显著的影响,作者探索了一下几种方式:

  1. label的下标:直接使用label在标签集中的下标作为question,如:onetwotree
  2. 关键词:使用关键词作为question,如ORGquestionorganization
  3. 规则模板:用模板生成question,如ORGquestionwhich organization is mentioned in the text
  4. 维基百科:用维基百科里的定义作为question,如ORGquestion为:an organization is an entity comprising multiple people, such as an institution or an association
  5. 近义词:使用label的近义词作为question,如ORGquestion为:association
  6. 关键词+近义词:将关键词和近义词连接起来作为question
  7. 标注指南:上文提到的方法,如ORGquestionfind organizations including companies, agencies and institutions

效果如下图所示:
【NLP-Paper】基于MRC框架的命名实体识别方法_第6张图片
使用标注指南的模型效果最好,分析如下:

  1. 标签下标没有任何有用的信息,因此效果最差;
  2. 维基百科包含较多的无用信息,造成了干扰;
  3. 标注指南描述的最为准确,效果最好;

4.3 Zero-shot

MRC的方式构建模型,可以把一部分先验知识编码到question,因此在识别训练集上未出现的标签时效果会比非MRC的模型好,实验数据如下:
【NLP-Paper】基于MRC框架的命名实体识别方法_第7张图片

4.4 训练集大小

MRC的方式构建模型,可以把一部分先验知识编码到question,因此在小训练集上的效果更好,实验数据如下:
【NLP-Paper】基于MRC框架的命名实体识别方法_第8张图片

你可能感兴趣的:(NLP-PAPER,深度学习理论,人工智能,深度学习,自然语言处理)