论文阅读笔记(三)【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),以定位实体;
然后用相应的类别标记边界调整后的 跨度建议(就是对跨度建议再次调整)。

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

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

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

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

(4)贡献:

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

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

Two-stage Identifier.

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

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

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

(1) Span Proposal Filter

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

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

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

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

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

计算左右边界的偏移

调整偏移后的边界

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

新的边界单词池化

交叉熵损失

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

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

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

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

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

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

交叉熵损失

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

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

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

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}x i w ​,x i l m ​,x i p o s ​,x i c h a r ​和h_{i}}分别是100,1024,50,50和1024;
epoch: 25
Adam优化器和一个线性warmup-decay学习率策略; 在filter、regressor和entity classifier之前用0.5的学习率。

2. 实验结果

在nested NER任务的结果

Original: https://blog.csdn.net/qq_35222729/article/details/119317150
Author: 追赶早晨
Title: 论文阅读笔记(三)【ACL 2021】Locate and Label: A Two-stage Identifier for Nested Named Entity

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/555928/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球