论文笔记:Template-Based Named Entity Recognition Using BART

 论文来源:ACL 2021 Finding

论文链接:https://aclanthology.org/2021.findings-acl.161.pdf

论文代码:GitHub - Nealcly/templateNER: Source code for template-based NER 

笔记仅供参考,撰写不易,请勿恶意转载抄袭! 


 Abstract

        与资源丰富的源域相比,低资源的目标域具有不同的标签集(也就是说低资源的训练集与测试集的标签不交叉,测试集中的标签属于新的标签集合)。现有的方法使用基于相似性的度量,但是它们不能充分利用NER模型参数中的知识转移。为了解决这一问题,本文提出一种基于模板的NER方法,将NER视为sequence-to-sequence框架下的语言模型排序问题,将由候选命名实体span填充的原始句子和模板分别视为源sequence和目标sequence。进行推理时,模型需要根据相应的模板分数对每个候选span进行分类。本文分别在富资源任务和低资源任务进行了实验。

Introduction

        命名实体识别是自然语言处理中的一个基本任务,是根据预先定义的实体类别识别文本输入中提及的span,如“location”、“person”和“ganization”等,主流方法如BiLSTM等如图Figure 2(a)所示。

        基于距离的方法在很大程度上降低了域适应成本,尤其适用于目标域数量较多的场景,然而在标准域设置下的性能相对较弱。此外,它们在域适应能力受到两个方面的限制:① 目标域中标记的实例用于启发式最近邻搜索的最佳参数,而不是用于更新NER模型的网络参数,不能改善跨域实例的神经表示;② 这些方法依赖于源域和目标域之间相似的文本模式,当目标域的本文风格不同于源域时,可能会影响模型的性能。

        为了解决上述问题,本文研究了一种基于模板的方法,利用生成式预训练语言模型的小样本学习潜力进行序列标注。具体来说,如Figure 2所示,BART使用由相应的标记实体填充的预定义模板进行微调。例如,定义这样的模板:“<condidate_span> is a <entity_type> entity”,其中<entity_type>可以是“person”或“location”等,给定句子“ACL will be held in Bangkok”,其中“Bangkok”的标签是“location”,我们可以使用一个填充模板“Bangkok is a location entity”作为输入句子的编码器输出来训练BART。对于非实体span,使用模板“<condidate_span> is not a named entity”,这样可以对负输出序列进行采样。在推理过程中,将输入句子中所有可能的文本span枚举为候选命名实体,并根据模板上的BART分数将其分类为实体或非实体。

        本文所提方法的三个优点:

  1. 由于预训练模型具有良好的泛化能力,可以有效的利用新领域中的标记实例进行调优;
  2. 即使目标域和源域在文本风格上存在较大的差距,本文所提方法也更具有鲁棒性;
  3. 与传统方法相比,本文所提方法可以应用于命名实体的任意新类别,无需改变输出层参数,允许持续学习。

Template-Based Method

        本文将NER视为sequence-to-sequence框架下的语言模型排序问题。模型的源序列是一个输入文本X=\left \{ x_1,...,x_n \right \},目标序列T_{y_k,x_{i:j}}=\left \{ t_1,...,t_m \right \}是由候选文本spanx_{i:j}和实体类型y_k填充的模板。

Template Creation

        本文手工创建模板,其中一个槽用于candidate_span,另一个槽用于entity_type标签,并设置了一个一对一的映射函数来传递标签集L到一个单词集合Y,其中 L=\left \{ l_1,...,l_{\left | L \right |} \right \},如l_k="LOC"Y=\left \{ y_1,...,y_{\left | L \right |} \right \},如y_k="location",并使用单词集合中的单词来定义模板T_{y_k}^+

(例如<candidate_span> is a location entity),此外,还为非命名实体构造了一个非实体模板T^-(例如,<candidate_span> is not a named entity)。这样可以得到一个模板列表T=\left [ T_{y_1}^+,...,T_{y_{\left | L \right |}}^+,T^-\right ]。如Figure 2(c),模板T_{y_k,x_{i:j}} 为\left \langle x_{i:j} \right \rangle is a \left \langle y_k \right \rangleT_{y_k,x_{i:j}}^-\left \langle x_{i:j} \right \rangle is not a named entity,其中x_{i:j}是一个候选文本跨度。

Inference

        本文首先枚举一个句子\left \{ x_1,...,x_n \right \}中所有可能的span,并用准备好的模板进行填充。为了提高效率,本文将一个span的n-grams数量限制在1~8个,因此为每个句子创建8个模板。然后使用微调的生成式预训练语言模型为每个模板T_{y_k,x_{i:j}}=\left \{ t_1,...,t_m \right \}分配一个分数,表示为:

         本文通过使用任意的生成式预训练语言模型为每个模板打分来计算每个实体类型的分数f\left (T_{y_k,x_{i:j}}^+ \right )和非实体类型分数f\left ( T_{x_{i:j}}^- \right ),然后将得分最高的实体类型分配给文本span{x_{i:j}}。本文使用的生成式预训练语言模型BART。

        如果两个span存在文本重叠,并且在推理中分配了不同的标签,本文会选择得分较高的span作为最终的决策,以避免可能出现的预测冲突。例如“ACL will be held in Bangkok”,通过使用局部得分函数f\left ( \cdot \right )可以将“in Bangkok”和“Bangkok”分别标记为“ORG”和“LOC”,此时会比较二者分数的大小,并选择得分较大的标签进行全局决策。

Training

        标记实体用于在训练期间创建模板,假设{x_{i:j}}的实体类型为y_k,则将文本span{x_{i:j}}和实体类型y_k填充到T^+,以创建目标句子T_{y_k,x_{i:j}}^+,并以相同方式来获取目标句子T_{x_{i:j}}^-。本文使用标记实体构建\left ( X,T^+ \right )对,并随机采样非实体文本span来构建负样本\left ( X,T^- \right )。负样本对是正样本对的1.5倍。

         给定一个序列对\left ( X,T \right ),将X输入到BART的编码器,然后获得句子的隐藏表示:

 单词t_c的条件概率定义为:

 其中,W_{lm}\in \mathbb{R}^{d_h\times \left | V \right |}b_{lm}\in \mathbb{R}^{\left | V \right |},V为BART的词汇表大小。以编码器输出与原始模板之间的交叉熵作为损失函数。

 Transfer Learning

         给定一个具有少量实例的新域\mathbb{P},标签集L^P可以与用于训练NER模型的标签集不同。因此,本文用新域的标签集来填充模板用于训练和测试,而模型和算法的其余部分保持不变。给定少量的\left ( X^P,T^P \right ),使用上述方法为低资源创建序列对,并微调在富资源域上的NER模型。

        此过程成本低,但能有效地传递标签知识。由于本文的方法输出的是一个自然句,而不是特定的标签,富资源和低资源的标签词都是预训练语言模型词汇的子集,这使得我们的方法可以利用“person”和“character”、“location”和“city”等标签相关性来增强跨域迁移学习的效果。

 Experiments

        不同的模板对实验结果的影响:

 标准NER设置下的模型性能:

        

        域内小样本设置: 

        本文在CoNLL03上构建了一个小样本学习场景,其中,某些特定类别的训练实例数量受到下采样的限制。特别地,将“MISC”和“ORG”设置为资源丰富的实体,将“LOC”和“PER”设置为资源贫乏的实体。我们对CoNLL03训练集进行下采样,产生3,806个训练实例,其中包括3,925个ORG”,1,423个“MISRC”,50个“LOC”和50个“PER”。由于文本样式在富资源和低资源实体类别中是一致的,因此我们将域中的场景称为少样本NER。结果如下:

 跨域小样本NER结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

D35【python 接口自动化学习】- python基础之输入输出与文件操作

day35 文件合并 学习日期&#xff1a;20241012 学习目标&#xff1a;输入输出与文件操作&#xfe63;-47 如何使用python合并多个文件&#xff1f; 学习笔记&#xff1a; 合并文件需求分析 合并两个文件 代码实现 # 合并两个文件 with open(demo1.txt) as f1:file_data_1f…

机器学习(10.7-10.13)(Pytorch LSTM和LSTMP的原理及其手写复现)

文章目录 摘要Abstract1 LSTM1.1 使用Pytorch LSTM1.1.1 LSTM API代码实现1.1.2 LSTMP代码实现 1.2 手写一个lstm_forward函数 实现单向LSTM的计算原理1.3 手写一个lstmp_forward函数 实现单向LSTMP的计算原理总结 摘要 LSTM是RNN的一个优秀的变种模型&#xff0c;继承了大部分…

鸿蒙--知乎评论

这里我们将采用组件化的思想进行开发 在开发中默认展示的是首页也就是 pages/Index.ets页面 这里存放的是所有页面的配置文件,类似与uniapp中的pages.json 如果我们此时要更改默认显示Zh

jmeter入门: 安装

前提&#xff1a; 安装jdk1.8&#xff0c; 并设置java_home 和path环境变量。 ​​​​​​1. download Apache JMeter - Download Apache JMeter 2. 解压jmeter包 3. 安装插件Install :: JMeter-Plugins.org 下载jar包&#xff0c;放到lib/ext目录 4. 打开jmeter &#xff0…

安装Node.js环境,安装vue工具

一、安装Node.js 去官方网站自行安装自己所需求的安装包 这是下载的官方网站 下载 | Node.js 中文网 给I accept the terms in the License Agreement打上勾然后点击Next 把安装包放到自己所知道的位置,后面一直点Next即可 等待它安装好 然后winr打开命令提示符cmd 二、安装…

解决报错:Invalid number of channels [PaErrorCode -9998]

继昨天重装了树莓派系统后&#xff0c;今天开始重新安装语音助手。在测试录音代码时遇到了报错“Invalid number of channels [PaErrorCode -9998]”&#xff0c;这是怎么回事&#xff1f; 有人说这是因为pyaudio没有安装成功造成的。于是&#xff0c;我pip3 install –upgrad…

难点:Linux 死机定位(进程虚拟地址空间耗尽)

死机定位(进程虚拟地址空间耗尽) 一、死机现象 内存富裕,但内存申请失败。 死机时打印: 怀疑是: 1、内存碎片原因导致。 2、进程虚拟地址空间耗尽导致。 3、进程资源限制导致。 二、内存碎片分析 1、理论知识:如何分析内存碎片化情况 使用 /proc/buddyinfo: /proc/…

数据结构-串

串的定义 串的操作 字符集编码 串的顺序存储 串的链式存储 模式匹配

完成Sentinel-Dashboard控制台数据的持久化-同步到Nacos

本次案例采用的是Sentinel1.8.8版本 一、Sentinel源码环境搭建 1、下载Sentinel源码工程 git clone https://github.com/alibaba/Sentinel.git 2、导入到idea 这里可以先运行DashboardApplication.java试一下是否运行成功&#xff0c;若成功&#xff0c;源码环境搭建完毕&a…

树莓派应用--AI项目实战篇来啦-11.OpenCV定位物体的实时位置

1. 介绍 本项目通过PCA9685舵机控制模块控制二自由度舵机云台固定在零点位置&#xff0c;然后通OpenCV检测到黄色小熊&#xff0c;找到中心位置并打印出中心位置的坐标&#xff0c;通过双色LED灯进行指示是否检测到目标&#xff0c;本项目为后面二维云台追踪物体和追踪人脸提供…

图论day56|广度优先搜索理论基础 、bfs与dfs的对比(思维导图)、 99.岛屿数量(卡码网)、100.岛屿的最大面积(卡码网)

图论day56|广度优先搜索理论基础 、bfs与dfs的对比&#xff08;思维导图&#xff09;、 99.岛屿数量&#xff08;卡码网&#xff09;、100.岛屿的最大面积&#xff08;卡码网&#xff09;&#xff09; 广度优先搜索理论基础bfs与dfs的对比&#xff08;思维导图&#xff09;&…

关于Linux下C++程序内存dump的分析和工具

前言 程序崩溃令人很崩溃&#xff0c;特别是让人找不到原因的崩溃&#xff0c;但是合适的工具可以帮助人很快的定位到问题&#xff0c;在AI基础能力ASR服务开发时&#xff0c;找到了一种比较实用和简单的内存崩溃的dump分析工具breakpad&#xff0c; 可以帮助在Linux下C开发程…

C语言初阶-数据类型和变量【下】

紧接上期------------------------->>>C语言初阶-数据类型和变量【上】 全局变量和局部变量在内存中存储在哪⾥呢&#xff1f; ⼀般我们在学习C/C语⾔的时候&#xff0c;我们会关注内存中的三个区域&#xff1a; 栈区 、 堆区 、 静态区 。 内存的分配情况 局部变量是…

Java->排序

目录 一、排序 1.概念 2.常见的排序算法 二、常见排序算法的实现 1.插入排序 1.1直接插入排序 1.2希尔排序(缩小增量法) 1.3直接插入排序和希尔排序的耗时比较 2.选择排序 2.1直接选择排序 2.2堆排序 2.3直接选择排序与堆排序的耗时比较 3.交换排序 3.1冒泡排序…

肺腺癌预后新指标:全切片图像中三级淋巴结构密度的自动化量化|文献精析·24-10-09

小罗碎碎念 本期这篇文章&#xff0c;我去年分享过一次。当时发表在知乎上&#xff0c;没有标记参考文献&#xff0c;配图的清晰度也不够&#xff0c;并且分析的还不透彻&#xff0c;所以趁着国庆假期重新分析一下。 这篇文章的标题为《Computerized tertiary lymphoid structu…

【实战】Nginx+Lua脚本+Redis 实现自动封禁访问频率过高IP

大家好&#xff0c;我是冰河~~ 自己搭建的网站刚上线&#xff0c;短信接口就被一直攻击&#xff0c;并且攻击者不停变换IP&#xff0c;导致阿里云短信平台上的短信被恶意刷取了几千条&#xff0c;加上最近工作比较忙&#xff0c;就直接在OpenResty上对短信接口做了一些限制&am…

《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署mongodb 7.0.14容器版分片集群》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面向不通的客户安装我们的业务系统&…

C++入门基础知识110—【关于C++ if...else 语句】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C if...else 语句的相关内容&#xff01…

数据结构-5.2.树的性质

一.树的常考性质&#xff1a; 性质1&#xff1a;结点数 总度数 1(结点的度&#xff1a;结点分支的数量) 一个分支中&#xff0c;如父结点B&#xff0c;两个子结点为E和F&#xff0c;结点B的度的值为2&#xff0c;等于子结点数量&#xff0c;加上这一个父结点(父结点只能有一…

部署私有仓库以及docker web ui应用

官方地址&#xff1a;https://hub.docker.com/_/registry/tags 一、拉取registry私有仓库镜像 docker pull registry:latest 二、运⾏容器 docker run -itd -v /home/dockerdata/registry:/var/lib/registry --name "pri_registry1" --restartalways -p 5000:5000 …