论文阅读笔记(三)【ACL 2021】Locate and Label: A Two-stage Identifier for Nested Named Entity

论文标题
Locate and Label: A Two-stage Identifier for Nested Named Entity Recognition

论文链接
https://arxiv.org/abs/2105.06804

代码链接
https://github.com/tricktreat/locate-and-label

摘要

(1)过去的难点:
传统的NER研究只涉及平面实体,忽略了嵌套实体。基于跨度的方法将实体识别视为跨度分类任务。这些方法虽然具有处理嵌套NER的能力,但计算量大,对边界信息的忽略,对部分匹配实体的跨度利用不足,长实体识别困难。
(2)模型:
为了解决这些问题,我们提出了一种两阶段实体标识符( Two-stage Identifier)。
(3)方法:
首先,我们通过对seed span(种子跨度) 进行过滤和边界回归来生成跨度建议(span proposal),以定位实体;
然后用相应的类别标记边界调整后的跨度建议(就是对跨度建议再次调整)。

Introduction

(1)NER: 命名实体识别是自然语言处理中的一项基本任务,重点是识别引用实体的文本范围。NER广泛用于下游任务,如实体链接和关系提取。

(2)当今的NER中,嵌套NER是有所关注的;
主要方法:比如序列模型,基于跨度的方法;
序列模型:序列标记模型预测边界,但在没有动态调整的情况下,边界信息没有得到充分利用。其次,实体部分匹配的跨度会被认为是负跨度。

基于跨度的方法是将NER视为了一项具有识别嵌套NER固有能力的分类任务。首先,由于大量低质量的候选跨度(就是上面说的部分匹配的跨度)导致较高的计算成本。然后,很难识别长实体,因为在训练期间枚举的跨度不是无限长的。其次,边界信息没有得到充分利用,而模型定位实体很重要。

(3)动机:
在目标检测领域,他们将检测任务分为两个阶段,首先生成候选区域,然后对候选区域的位置进行分类和微调。所以,我们将检测任务分为了两个阶段。

(4)贡献:

  • 我们提出了一种新的两阶段标识符,用于NER,首先定位实体,然后标记实体。我们将NER视为边界回归和跨度分类的联合任务;
  • 我们有效地利用边界信息。通过进一步识别实体边界,我们的模型可以调整边界以准确定位实体。在训练边界回归器时,除了边界级平滑L1损失外,我们还使用跨度级损失,用于测量两个跨度之间的重叠;
  • 在训练过程中,我们不是简单地将部分匹配的跨度视为负面示例,而是基于IoU(交并比)构造软示例;
  • KBP17、ACE04和ACE05数据集

Method

在第一阶段,我们设计了一个span建议模块,该模块包含两个组件:过滤器和回归器。过滤器将种子跨度分为上下文跨度跨度建议,使用IoU,在这些种子跨度中,而重叠程度较低的部分为上下文跨度(contextual spans),实体重叠程度较高的部分为提案跨度(proposal spans)。并过滤掉前者以减少候选跨度。回归器通过调整跨度建议的边界来定位实体,以提高候选跨度的质量。
在第二阶段,我们使用实体分类器来标记实体类别,以减少数量并提高质量。在训练期间,为了更好地利用部分与实体匹配的跨度,我们通过基于IoU对模型的损失进行加权来构造软示例。此外,我们将软非最大抑制(soft NMS)(Bodla et al.,2017)算法应用于实体解码,以消除误报。

Two-stage Identifier.

1. Token representation:

① 句子: 一个句子有n个单词,对于第i个单词,我们通过concat它的word embedding x i w x_{i}^{w} xiw,上下文word embedding x i l m x_{i}^{lm} xilm,词性标注POS x i p o s x_{i}^{pos} xipos,字符级嵌入 x i c h a r x_{i}^{char} xichar来得到它的表示。
word embedding x i w x_{i}^{w} xiw由具有相同设置的BiLSTM模块生成;对于上下文的Word embedding,我们遵循2020年的文章获取目标标记的上下文相关嵌入,每边有一个环绕的句子。最后concat后放入BiLSTM来获得隐藏状态获得最终的word representation h i ∈ R d h_{i}\in\R^{d} hiRd

2. Seed Span Generation

(1)获取种子跨度集
种子跨度集 B = b 0 , . . . , b k B = {b_{0},...,b_{k}} B=b0,...,bk,其中 b i = ( s t i , e d i ) b_{i} = (st_{i},ed_{i}) bi=(stiedi表示的第i个种子跨度; K表明了生成的种子跨度的数量,并且 s t i , e d i st_{i},ed_{i} stiedi表明了span的起始位置
(2)为种子跨度分配类别和回归目标
具体来说,我们将B中的每个种子跨度与跨度具有最大IoU的基本真相实体配对。
I o U ( A , B ) = A ∩ B A ∪ B IoU(A,B)=\frac{{A}\cap{B}}{{A}\cup{B}} IoUAB=ABAB,其中A和B是两个跨度; 我们根据两个之间IoU将他们分为了正跨度和负跨度;正跨度是和gt是同一标签,负跨度则是None标签;正负跨度比例:1:5

3. Span Proposal Module

将跨度分为了跨度建议(质量高)和上下文跨度(质量低),目的是消除后者,降低成本。 Span Propos Module由两部分组成: Span建议过滤器和边界回归器; 前者用于删除上下文范围并保留范围建议,而后者用于调整范围建议的边界以定位实体。

(1) Span Proposal Filter

最大池跨度表示法
将整个种子跨度从 s t i st_{i} sti e d i ed_{i} edi计算最大池化;

跨度表示
concat最大池化表示和种子跨度的第一个和最后一个单词;

概率计算
最后我们可以计算 b i b_{i} bi属于该span proposal的概率

其中所有的 h i h_{i} hi是某个单词的最终表示; [;]表示的是concat; MLP包含了两个线性层和一个GELU激活函数

(2) Boundary Regressor
尽管有很高的重叠,但是不能命中实体,还需要利用边界回归损失调节边界值(内部和外部信息)。
跨度回归表示
这里我们使用了外部边界单词(index加一和减一)表示和最大池化跨度表示进行concat;

计算左右边界的偏移

4. 实体分类器模块

调整偏移后的边界

开始位置 s t ~ i \widetilde{st}_{i} st i、结束位置 e d ~ i \widetilde{ed}_{i} ed i

新的边界单词池化

交叉熵损失

其中MLP包含了两个线性层和一个GELU激活函数。

5.Training Objective

我们不将所有的部分匹配的跨度视为负跨度,而是分配权重,对于第i个跨度 b i b_{i} bi w i w_{i} wi设置为:

其中 α ∈ { α 1 , α 2 } \alpha\in\{\alpha_{1},\alpha_{2}\} α{α1α2}表明了分别用在第一和第二阶段的IoU的阈值; e i e_{i} ei表明是 b i b_{i} bi的gt标签; μ \mu μ是聚焦参数,可平滑调整部分匹配示例的下加权率; 如果 μ \mu μ = 0,那么上式就是一个hard one;此外,如果跨度未与任何实体重叠或与某些实体完全匹配,则损失重量 w i w_{i} wi=1。

focal loss(焦点损失)
跨度建议过滤器;解决不平衡问题;

其中, w i w_{i} wi是第i个实例的权重; γ \gamma γ表示的是focal loss的聚焦参数;该损失包含了两个组件,平滑 L 1 L_{1} L1loss是在boundary水平,而重叠loss是在span水平;

其中 d i = { e d ~ i , e d ^ i } d_i = \{\widetilde{ed}_{i},\widehat{ed}_{i}\} di={ed i,ed i} e i = { s t ~ i , s t ^ i } e_i = \{\widetilde{st}_{i},\widehat{st}_{i}\} ei={st i,st i} s t ^ i \widehat{st}_{i} st i e d ^ i \widehat{ed}_{i} ed i t ^ i l \widehat{t}_{i}^{l} t il t ^ i r \widehat{t}_{i}^{r} t ir表明了ground-truth的左边界、右边界、左偏移和右偏移

交叉熵损失

其中 w i w_{i} wi通过式子11计算出来的第i个例子的权重,我们联合训练滤波器、回归器和分类器,因此总损失计算如下:

(5)实体encoding
经过上面的步骤,我们已经获得了跨度方案的分类概率和边界偏移回归结果。基于它们我们需要提取句子中所有的实体(找到开始位置,结束位置和实体的类别)。
我们使用 y i = a r g m a x ( p i ) y_i = argmax(p_i) yi=argmax(pi)作为跨度 s i s_i si的标签,用 s c o r e i = m a x ( p i ) score_i = max(p_i) scorei=max(pi)作为 s i s_i si属于 y i y_i yi条目的置信度。这样 s i = ( l i , r i , y i , s c o r e i ) s_i = (l_i,r_i,y_i,score_i) si=(li,ri,yi,scorei)。鉴于分数的阈值 δ \delta δ和span的提议 S = { s i , . . . , s N } S=\{s_i,...,s_N\} S={si,...,sN},N表示成了span proposals的数目,我们使用Soft-NMS算法来过滤false positives????我们按分数的顺序遍历span proposals(转化术语被表示为 s i s_i si),并且调整其它span proposals ( s j s_j sj)的分数为 f ( s i , s j ) f(s_i, s_j) f(si,sj),这个被定义为

其中 u ∈ ( 0 , 1 ) u\in(0,1) u(0,1)表示分数的衰减系数,k表示IoU阈值。之后我们保持所有的span proposals用 s c o r e > δ score>\delta score>δ作为最终的提取实体。

Experiment

1. 实验设置

数据集
ACE04、ACR05、KBP17和GENIA
ACE04、ACR05: 嵌套数据集, 7个实体类别;划分为train:dev:test = 8:1:1
KBP17:包含了GPE, ORG, PER, LOC, and FAC;划分为train:dev:test = 866:20:167
GENIA:生物学嵌套命名实体数据集,包含五种实体类型,包括DNA、RNA、蛋白质、细胞系和细胞类型类别。train:test = 9:1

评价指标
当实体边界和实体标签同时正确时,我们使用严格的评估指标来确认实体是正确的。我们使用精确性、召回率和F1分数来评估性能

参数设置
GloVE 和 BERT是一个encoder;
对于GENIA我们用BioWordvec、BERT with BioBERT 代替GloVE ;
维度设置为: x i w , x i l m , x i p o s , x i c h a r x_{i}^{w},x_{i}^{lm},x_{i}^{pos},x_{i}^{char} xiw,xilm,xiposxichar和h_{i}}分别是100,1024,50,50和1024;
epoch: 25
Adam优化器和一个线性warmup-decay学习率策略; 在filter、regressor和entity classifier之前用0.5的学习率。

2. 实验结果

在nested NER任务的结果

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值