Locate and Label: A Two-stage Identifier for Nested Named EntityRecognition

原文链接:https://aclanthology.org/2021.acl-long.216.pdf

ACL 2021

介绍

问题

         span-based方法将实体识别当作span的分类任务来做,存在以下缺陷:1)计算量大,为了尽可能覆盖到所有实体,就会对多个span进行枚举计算;2)忽略了边界信息;3)与实体匹配的那部分span利用率不高,对于不是完全匹配的span会直接进行丢弃;4)长实体识别困难;

IDEA

        作者受目标检测所启发,认为NER任务与目标检测任务类似,如下图所示:flat NER就是目标检测中没有重叠的目标,而嵌套NER就类似于目标检测中大目标中还存在小目标的情况。两阶段目标检测中,先生成多个候选框,然后再对候选框进行分类和微调。

        因此作者也将NER作为一个two-stage的任务,第一阶段是边界回归(设计了一个span proposal 模型),第二阶段是span分类。

方法

        该模型的整体框架如下图所示,首先encoder生成word embedding 和 seed span,使用filter过滤掉低重叠率的contextual span, 将重叠率高的proposal span边界根据regressor的输出做进一步的调整后送入到实体分类模型进行分类,最后在decoder中使用soft-NMS(非极大值抑制)来进行解码。

Token Representation

         同之前论文中一样,都是由多个embedding进行concat(word embedding、contextual word embedding、part-of-speech embedding、character-leve embedding(BiLSTM来得到))后送入BiLSTM,将其隐藏状态h_{i}\subseteq R^{d}作为word embedding。 

Seed Span Generation

        在一个预先定义的长度集中(最大长度不超过L),通过枚举所有可能的起点和终点来生成seed span(这样子枚举?基于span分类的尽头是枚举?不过目标检测中也是列举出所有锚框)。B={b0,,,,,bk},b_{i} = \left ( st_{i},ed_{i} \right )表示第i个seed span,K是seed span的数量,st_{i},ed_{i}表示span的起点和终点位置。

        为了训练filter和regressor,需要为每一个seed span分配一个分类和回归目标,为每一个seed span分配一个有最大IoU的ground-truth实体(确实很像目标检测),并基于IoU将其分为positive span和negative span,为高于阈值的positive span分配与ground-truth相同的类别,并计算他们之间的offset,对于低于阈值的negative span分配None 标签。最后对负样本进行下采样,使正负样本的比例为1:5.

Span Proposal Module

        由于生成的seed span质量不同,为了避免计算的浪费,将其分为span proposal(高覆盖率)和contextual span(低覆盖率)。该模型就是为了筛选出高质量的span,来进行边界回归。主要包括两个部分:span proposal filterboundary regressor。 

Span Proposal Filter

        对于每个seed span,将这个span中每个word的embedding经过一个maxpooling层后与这个span开头、结尾的word 表征进行concat,得到这个span的表征hi,最后将其送入一个mlp得到这个span属于span proposal的可能性p_{i}^{filter}

Boundary Regressor

        span proposal虽然有较高的重叠率,但是其只是一个大概的位置,并不精准。因此设计一个回归分支来调整其左右边界。边界回归不仅需要span自身的信息,还需要边界外单词的信息。同上述相似,得到span表征后进行计算ti左右边界的偏移:

Entity Classifier Module

        根据上一步得到的offset对span proposal的边界进行如下调整:

        调整边界后再计算span的表征,最后使用softmax进行分类:

        这里的边界进行了调整,则需要根据IoU重新进行类别分配(那上一步分配标签干嘛?),同上,调整后的span与某个ground-span的IoU大于某个阈值时,将其归类为一个类别,否则分配None标签。

Training Objective

        对于部分匹配实体的span,之前的模型都将其直接视为负样本,作者认为这样不仅没有利用这个span,还为模型引入了噪声。因此本文将这些部分匹配的span作为soft example,将其与ground-truth的IoU加权计算损失。对于第i个span bi,损失权重的计算如下所示:

        α表示第一第二阶段的阈值,e_{i}表示bi的ground-truth实体。n是一个聚焦参数(focusing parameter),能够平滑地调整部分匹配span的降权的速度,当其为0时,就等价于普通的硬标签。但对于完全没有匹配的span,loss的权重wi=1。

        模型的损失由三部分组成:span proposal filter、边界回归和实体分类三部分的损失:

        对于span proposal filter,使用focal loss来解决不平衡的问题,其中wi就是计算的损失权重,r表示focal loss的参数:

        对于boundary regressor,损失由两部分组成,边界上的平滑L1和span上的overlap loss:

        entity classifier部分,使用交叉熵损失:

Entity Decoding 

         在预测阶段,得到了每个span的类别和边界偏移,还需要将这些实体从句子中提取出来。span s_{i}的类别标记为:y_{i} = argmax(p_{i}){score} _{i} = max(p_{i}),scorei表示si为yi类别的置信度,加上左右边界,最终表示为:s_{i} = \left ( l_{i},r_{i},y_{i},score_{i} \right )

        最后使用Soft-NMS算法来过滤掉假阳性样本,算法过程如下所示:

        其中f(x_{i},x_{j})计算过程如下图所示:

         按分数高低进行排序后,遍历每个实体,对每个实体可能性更小的实体进行遍历,将后面的实体分数都进行调整,如果与该实体的IoU过小,则不进行修改,过大才会将其分数降低一点,分数修改后按顺序插入S中,最后将S中实体类别分数大于某个阈值的实体,作为预测的实体。

实验

对比实验

         作者在多个嵌套数据集上进行实验,结果如下所示:

        作者对模型在ACE04中不同长度的实体上的性能进行了分析,结果如下所示:

        作者发现该模型在训练期间没有涉及到的长度上表现良好,比如在训练过程中并没有枚举到长度为6的实体,但长度为5和7有枚举到,模型在长度为6的实体识别上也表现很好。这验证了我们的模型有能力通过边界回归来识别长度未覆盖的实体和长实体

消融实验

         作者对模型中各个模块进行了消融实验,并且为了验证模型在不同长度实体上的表现能力,将数据集按长度划分为3组,实验结果如下图所示:

        可以看出regressor在长实体的识别上是非常有效的。soft-NMS相对来说,对模型的影响不是很大,作者认为这是因为与图像相比,文本数据更加稀疏,预测的假阳性数量较少,所以该模块很难发挥过滤器的作用。

case study   

        作者对模型预测的实例进行展示:

        可以看出模型不仅能识别出嵌套实体,但在识别摸棱两可的实体存在困难,比如对both side这个实体,预测出了两个类别 一个是PER一个是ORG。

总结 

        作者将NER类比与CV中的目标检测问题,提出一个two-stage的结构来解决NER任务。总体也是一个span-based的方法,但是对于span的边界进行微调后再精准定位就很CV,这样也减少了部分计算(文中作者对时间的消耗也做了一定的分析),对于部分匹配的span使用加权loss的方法,也提升了模型的性能,(虽然这种方法斌不是第一次提出,但是之前好像没有很注意,记录一下)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值