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

news2024/11/20 0:36:29

原文链接: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的方法,也提升了模型的性能,(虽然这种方法斌不是第一次提出,但是之前好像没有很注意,记录一下)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/691499.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于YOLO V8的车牌识别

赵春江 2023年6月 1、前言 十年前就想实现车牌识别这项任务,虽然当时这项技术就已较成熟(与现在的实现方法不同),但那时的我还具备这个能力。弹指一瞬间,没想到十年间人工智能技术已经发展到一个新的高度&#xff0c…

【每日编程Day29】有假币

目录 一、选择题 二、编程题 1、有假币 一、选择题 重点复习选择题4,8,10。 问题4: 类方法:又称为静态方法。而实例方法不能加static,又叫非静态方法。 类方法和实例方法的区别_类方法和实例方法区别_及可不遥的博客-CSDN博客 &#xff0…

效果!R微型变压器节省空间秘密揭晓!

通常,我们可能会遇到一些特殊的设备。由于其设计空间有限,R型变压器的体积应足够小,以便很好地应用。针对市场上的这个问题,作为R型变压器生产厂家,我们怎么能不注意呢?因此,我们的设计研发团队…

明确了!国家发布程序员和搬砖民工一样,都是农民工!

目录 前言 怎么解释新生代农民工? 2019年确定程序员属于密集型劳动者 新生代民工确实非常形象: 总结: 前言 前几天我们发现,人社局官网发布了一则报告,显示软件开发和信息技术服务业都属于新生农工,不…

前端获取地区的天气状况

翻阅了大量的帖子,在赛选了很多废的帖子之后找到了两个总体来说还不错的 一:配置高德地图 高德地图的查看天气的话,是每天免费100次 先访问高德官网:高德控制台,注册后申请应用,获取key值。 这个key值可…

三步轻松搞定,Word图片打印清晰度提升10倍

Word文档中插入图片是非常常见的操作,然而,在打印时有时会遇到图片清晰度不够的问题。这种情况下,即使图片在电脑上看起来很清晰,但是在打印时却变得模糊不清。这可能会影响工作效率,甚至影响到呈现效果。那么&#xf…

Java 面试必刷的1100 道Java大厂面试真题(含答案解析)

2023秋招即将来临,很多同学会问 Java 面试八股文有必要背吗? 我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。 国内的互联网面试,恐怕是现存的、最接近科举考试的制度…

yolov8训练自有跌倒数据集

参考: https://www.bilibili.com/video/BV1xL411B7ax https://www.dgrt.cn/a/2364195.html?actiononClick https://blog.roboflow.com/how-to-train-yolov8-on-a-custom-dataset/ 1、数据集制作(一般是coco格式): lableme&a…

如何用手机快速获得真人手办所需的人像模型

伴随网络生活覆盖面的增大,越来越多的领域需要三维模型 ,比如最近爆火的真人手办就必须用到人像模型 。 真人手办的制作过程其实非常简单,在专门搭建的摄影棚内进行全身3D扫描,获得3D人体模型,然后进行修模&#xff0c…

WordCount是什么?WordCount编程实现思路

WordCount算是大数据计算领域经典的入门案例,相当于Hello World。 虽然WordCount业务极其简单,但是希望能够通过案例感受背后MapReduce的执行流程和默认的行为机制,这才是关键。 WordCount编程实现思路 map阶段的核心:把输入的数…

C#.NETWPF开发工业MES MCS系统软件源代码两套

产品介绍: C#.NETWPF开发工业MES MCS系统软件源代码两套 A,WPF MES 上位机产线执行系统。 1, 完整纯源代码; 2, AGV自动调度; 3, SQLSERVER数据库。带附加文件。 4, WPF各种技术…

慕了!17年阿里Java开发大佬把Spring Boot的精髓都总结出来了

目前ssm框架还是比较常用的,其中的ss指的无非就是Spring 和 SpringMVC,我们可以简单地认为 "Spring Boot ≥ Spring SpringMVC" ,没错,用了Spring Boot中涵盖了Spring和SpringMVC等大量常用开发配置,而且S…

想知道识别文字的软件有哪些?分享文字识别软件有哪些

嗨~小伙伴们,你们是否有过手写笔记或者拍照存档时不小心照模糊、字迹潦草的经历呢?别担心,现在有很多文字识别软件可以帮助我们迅速将纸质笔记、图片等转化成电子版,方便管理和编辑。今天我们就一起来看看文字识别软件有哪些吧&am…

javaDoc中进行页面跳转

在写java代码时,我们可以写一些用于代码跳转或者网页跳转的注释,这样一来,我们在开发软件(比如Idea)中就可以通过ctrl鼠标直接跳转。 常用的是{link}和see,两种用法基本一样,区别见下方。 {link…

vant组件改为 uview-plus 组件的时分秒组件

项目中本来使用过了vant 的组件,但是uniapp 和vant并不兼容,除了几个普通的组件能用之外,想使用弹窗的话vant就完成不了了,还好uniapp官方支持的 uview-plus 支持vue3,就给项目更换了。之前使用vant封装的组件这时候也…

品达通用权限系统-Day02

文章目录 2.3 自定义starter2.3.1 案例一2.3.1.1 开发starter2.3.1.2 使用starter 2.3.2 案例二2.3.2.1 开发starter2.3.2.2 使用starter 2.3 自定义starter 本小节我们通过自定义两个starter来加强starter的理解和应用。 2.3.1 案例一 2.3.1.1 开发starter 开发工具&#…

软件测试入门(了解软件)

一、什么是软件 软件:通过大代码逻辑开发出来的程序,称为软件。 二、软件的种类 web端:电脑、手机的浏览器可以打开的网页,就是web的软件。比如:公司官网、淘宝网等等 客户端:电脑客户端:需要…

聊聊glibc中malloc函数的unlink

unlink的意思其实就是删除。在介绍这个函数之前,我们得介绍一点概念。在程序中,如果我们使用malloc申请的内存在不用或者不需要的时候,是需要程序员手动去释放,也就是free操作。我们知道malloc操作free操作都是涉及到内存管理的。…

USB Monitor只抓数据时的设置

一,简介 在抓HID数据时,只关注数据的收发,不太关注其他的数据例如SOF等信息,所以要对上位机软件的过滤设置进行勾选。 二,过滤设置 原则:带data的都要,不带data的可以不要。 点击“设置”-&…

挽输出和开漏输出

GPIO口配置为输出时会有两种模式,一种叫推挽输出,一种叫开漏模式。 三种输出状态 如下图所示为将GPIO配置为输出时的内部示意图: 由上图可以看出,GPIO的输出状态完全取决于两个MOS管Q1和Q2的导通状态: Q1导通、Q2关断…