当前位置: 首页 > news >正文

论文笔记: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结果:

相关文章:

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

论文来源&#xff1a;ACL 2021 Finding 论文链接&#xff1a;https://aclanthology.org/2021.findings-acl.161.pdf 论文代码&#xff1a;GitHub - Nealcly/templateNER: Source code for template-based NER 笔记仅供参考&#xff0c;撰写不易&#xff0c;请勿恶意转载抄袭…...

【Nestjs】从入门到精通(依赖注入)

NestJS 是一个基于 Node.js 的渐进式框架&#xff0c;构建在 Express 或 Fastify 之上&#xff0c;主要用于构建高效、可扩展的服务器端应用程序。它使用 TypeScript 并借鉴了 Angular 的设计理念&#xff0c;采用了依赖注入&#xff08;IoC, Inversion of Control&#xff09;…...

C语言函数

1.C语言函数的定义 C源程序是由函数组成的。最简单的程序有一个主函数main()&#xff0c;但实用程序往往由多个函数组成&#xff0c;由主函数调用其他函数&#xff0c;其他函数也可以互相调用。函数是C源程序的基本模块&#xff0c;程序的许多功能是通过对函数模块的调用来实现…...

FLINK SQLTable API 的基本概念及常用API

基本概念 SQL和Table API是Apache Flink提供的两个关系型API&#xff0c;它们被设计用于统一的流和批处理。以下是关于SQL和Table API的基本概念及常用API的详细介绍&#xff1a; 一、基本概念 Table API 定义&#xff1a;Table API是一个为Java、Scala和Python提供的语言集…...

Docker daemon.json配置参数及格式帮助信息

我们知道程序运行&#xff0c;通过修改命令参数或者配置文件配置项&#xff0c;对程序进行修改。Docker也不例外&#xff0c;通过docker.service 增加命令参数或者在/etc/docker/daemon.json中增加配置项均可。 推荐修改daemon.json对docker守护进程进行配置更改&#xff08;方…...

十月编程语言排行榜~

前言&#xff1a;TIOBE编程语言排行榜通过分析全球开发者的活动、代码搜索和问答社区的流量&#xff0c;提供了编程语言受欢迎度的动态图景。该指数是技术趋势的风向标&#xff0c;揭示了哪些编程语言在技术领域占据主导地位&#xff0c;哪些语言正在快速崛起或逐渐衰退。 ✨✨…...

十三、行为型(策略模式)

策略模式&#xff08;Strategy Pattern&#xff09; 概念 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;允许定义一系列算法&#xff0c;将每个算法封装在策略类中&#xff0c;并使它们可以互换使用。客户端可以根据需要动态选择不同的策…...

Vue环境安装以及配置

这里写目录标题 前言一、前置要求1.安装Node.js2. 安装VScode 二、创建全局安装目录和缓存日志目录三、配置环境变量四、权限五、npm换源六、vscode插件1. Vue-Offical2. Vue 3 Snippets3. Path Intellisense4. Auto Import5. Auto Close Tag6. Auto Rename Tag7.GitLens总结 前…...

Redis 数据类型hash(哈希)

目录 1 基本特性 2 主要操作命令 2.1 设置和获取字段 2.1.1 HSET key field value 2.1.2 HGET key field 2.1.3 HMSET key field1 value1 [field2 value2 ...] 2.1.4 HMGET key field1 [field2 ...] 2.2 检查字段是否存在 2.2.1 HEXISTS key field 2.3 获取所有字段…...

单一执行和循环执行的例行性工作

单一执行的例行性工作&#xff1a;只执行一次就结束 1.1at命令的工作过程 /etc/at.allow&#xff0c;写在该文件的人可以使用at命令 /etc/at.deny&#xff0c;黑名单 两个文件如果都不存在&#xff0c;只有root能使用 [rootlocalhost ~]# systemctl status atd [rootlocalh…...

单细胞分析 | Cicero+Signac 寻找顺式共可及网络

引言 在本指南[1]中&#xff0c;将介绍如何利用Cicero工具和单细胞ATAC-seq数据来识别共可接近网络。 为了在Seurat&#xff08;Signac工具使用的格式&#xff09;和CellDataSet&#xff08;Cicero工具使用的格式&#xff09;之间轻松转换数据&#xff0c;将利用GitHub上的Seur…...

人工智能创造出大量新型蛋白质

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

Palo Alto Networks Expedition 未授权SQL注入漏洞复现(CVE-2024-9465)

0x01 产品介绍&#xff1a; Palo Alto Networks Expedition 是一款强大的工具&#xff0c;帮助用户有效地迁移和优化网络安全策略&#xff0c;提升安全管理的效率和效果。它的自动化功能、策略分析和可视化报告使其在网络安全领域中成为一个重要的解决方案。 0x02 漏洞描述&am…...

c 语言 sprintf

在C语言中&#xff0c;sprintf是一个非常常用的函数&#xff0c;它用于将格式化的数据写入字符串中。sprintf函数的原型通常定义在stdio.h头文件中。 sprintf函数的原型如下&#xff1a; int sprintf(char *str, const char *format, …); 参数说明&#xff1a; str&#xf…...

stm32单片机个人学习笔记10(TIM编码器接口)

前言 本篇文章属于stm32单片机&#xff08;以下简称单片机&#xff09;的学习笔记&#xff0c;来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 STM32入门教程-2023版 细…...

如何在Android中存储数据?

在Android中存储数据是开发过程中至关重要的一环&#xff0c;根据数据的类型、大小、访问频率及安全性需求&#xff0c;开发者可以选择多种存储方式。以下是Android中存储数据的几种主要方式&#xff0c;每种方式都有其特定的应用场景和优缺点。 一、SharedPreferences Share…...

13.3寸工业三防平板数字化工厂产线数采手持终端

在数字化工厂的建设浪潮中&#xff0c;高效可靠的数据采集终端至关重要。尤其在水处理、食品加工等特殊工业环境下&#xff0c;设备的耐用性和数据安全性面临严峻挑战。传统的平板电脑难以应对复杂的工业现场&#xff0c;而一款性能卓越、坚固耐用的工业三防平板则成为提升生产…...

ssh连接慢的问题或zookeeper远程连接服务超时

问题原因&#xff1a; 在SSH登录过程中&#xff0c;服务器会通过反向DNS查找客户端的主机名&#xff0c;然后与登录的IP地址进行匹配&#xff0c;以验证登录的合法性。如果客户端的IP没有域名或DNS服务器响应缓慢&#xff0c;这可能导致SSH登录过慢。为了解决这个问题&#xf…...

perf工具使用指导

linux perf工具使用指导 perf 是 Linux 内核自带的性能分析工具&#xff0c;主要用于分析系统性能瓶颈和程序的性能问题。通过合理使用 perf 工具&#xff0c;可以有效地分析和优化系统性能。 安装 perf 在大多数 Linux 发行版中&#xff0c;perf 工具通常随内核源代码包一起…...

WordPress 禁用上传媒体图片自动生成缩略图及多尺寸图片教程

一、在 设置-媒体-媒体设置 中几个尺寸大小的设置不勾选或设置为 0&#xff0c;如下图&#xff1a; 二、找到主题文件 function.php 文件&#xff0c;打开后&#xff0c;在 <?php 后面添加如下代码&#xff1a; function.php 文件路径一般为&#xff1a;WordPress网站根目录…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...