论文笔记: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分数将其分类为实体或非实体。
本文所提方法的三个优点:
- 由于预训练模型具有良好的泛化能力,可以有效的利用新领域中的标记实例进行调优;
- 即使目标域和源域在文本风格上存在较大的差距,本文所提方法也更具有鲁棒性;
- 与传统方法相比,本文所提方法可以应用于命名实体的任意新类别,无需改变输出层参数,允许持续学习。
Template-Based Method
本文将NER视为sequence-to-sequence框架下的语言模型排序问题。模型的源序列是一个输入文本,目标序列
是由候选文本span
和实体类型
填充的模板。
Template Creation
本文手工创建模板,其中一个槽用于candidate_span,另一个槽用于entity_type标签,并设置了一个一对一的映射函数来传递标签集L到一个单词集合Y,其中 ,如
,
,如
,并使用单词集合中的单词来定义模板
(例如<candidate_span> is a location entity),此外,还为非命名实体构造了一个非实体模板(例如,<candidate_span> is not a named entity)。这样可以得到一个模板列表
。如Figure 2(c),模板
为
is a
,
为
is not a named entity,其中
是一个候选文本跨度。
Inference
本文首先枚举一个句子中所有可能的span,并用准备好的模板进行填充。为了提高效率,本文将一个span的n-grams数量限制在1~8个,因此为每个句子创建8个模板。然后使用微调的生成式预训练语言模型为每个模板
分配一个分数,表示为:
本文通过使用任意的生成式预训练语言模型为每个模板打分来计算每个实体类型的分数和非实体类型分数
,然后将得分最高的实体类型分配给文本span
。本文使用的生成式预训练语言模型BART。
如果两个span存在文本重叠,并且在推理中分配了不同的标签,本文会选择得分较高的span作为最终的决策,以避免可能出现的预测冲突。例如“ACL will be held in Bangkok”,通过使用局部得分函数可以将“in Bangkok”和“Bangkok”分别标记为“ORG”和“LOC”,此时会比较二者分数的大小,并选择得分较大的标签进行全局决策。
Training
标记实体用于在训练期间创建模板,假设的实体类型为
,则将文本span
和实体类型
填充到
,以创建目标句子
,并以相同方式来获取目标句子
。本文使用标记实体构建
对,并随机采样非实体文本span来构建负样本
。负样本对是正样本对的1.5倍。
给定一个序列对,将X输入到BART的编码器,然后获得句子的隐藏表示:
单词的条件概率定义为:
其中,,
,V为BART的词汇表大小。以编码器输出与原始模板之间的交叉熵作为损失函数。
Transfer Learning
给定一个具有少量实例的新域,标签集
可以与用于训练NER模型的标签集不同。因此,本文用新域的标签集来填充模板用于训练和测试,而模型和算法的其余部分保持不变。即给定少量的
,使用上述方法为低资源创建序列对,并微调在富资源域上的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
论文来源:ACL 2021 Finding 论文链接:https://aclanthology.org/2021.findings-acl.161.pdf 论文代码:GitHub - Nealcly/templateNER: Source code for template-based NER 笔记仅供参考,撰写不易,请勿恶意转载抄袭…...

【Nestjs】从入门到精通(依赖注入)
NestJS 是一个基于 Node.js 的渐进式框架,构建在 Express 或 Fastify 之上,主要用于构建高效、可扩展的服务器端应用程序。它使用 TypeScript 并借鉴了 Angular 的设计理念,采用了依赖注入(IoC, Inversion of Control)…...
C语言函数
1.C语言函数的定义 C源程序是由函数组成的。最简单的程序有一个主函数main(),但实用程序往往由多个函数组成,由主函数调用其他函数,其他函数也可以互相调用。函数是C源程序的基本模块,程序的许多功能是通过对函数模块的调用来实现…...
FLINK SQLTable API 的基本概念及常用API
基本概念 SQL和Table API是Apache Flink提供的两个关系型API,它们被设计用于统一的流和批处理。以下是关于SQL和Table API的基本概念及常用API的详细介绍: 一、基本概念 Table API 定义:Table API是一个为Java、Scala和Python提供的语言集…...
Docker daemon.json配置参数及格式帮助信息
我们知道程序运行,通过修改命令参数或者配置文件配置项,对程序进行修改。Docker也不例外,通过docker.service 增加命令参数或者在/etc/docker/daemon.json中增加配置项均可。 推荐修改daemon.json对docker守护进程进行配置更改(方…...

十月编程语言排行榜~
前言:TIOBE编程语言排行榜通过分析全球开发者的活动、代码搜索和问答社区的流量,提供了编程语言受欢迎度的动态图景。该指数是技术趋势的风向标,揭示了哪些编程语言在技术领域占据主导地位,哪些语言正在快速崛起或逐渐衰退。 ✨✨…...
十三、行为型(策略模式)
策略模式(Strategy Pattern) 概念 策略模式(Strategy Pattern)是一种行为型设计模式,允许定义一系列算法,将每个算法封装在策略类中,并使它们可以互换使用。客户端可以根据需要动态选择不同的策…...

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 获取所有字段…...
单一执行和循环执行的例行性工作
单一执行的例行性工作:只执行一次就结束 1.1at命令的工作过程 /etc/at.allow,写在该文件的人可以使用at命令 /etc/at.deny,黑名单 两个文件如果都不存在,只有root能使用 [rootlocalhost ~]# systemctl status atd [rootlocalh…...

单细胞分析 | Cicero+Signac 寻找顺式共可及网络
引言 在本指南[1]中,将介绍如何利用Cicero工具和单细胞ATAC-seq数据来识别共可接近网络。 为了在Seurat(Signac工具使用的格式)和CellDataSet(Cicero工具使用的格式)之间轻松转换数据,将利用GitHub上的Seur…...

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

Palo Alto Networks Expedition 未授权SQL注入漏洞复现(CVE-2024-9465)
0x01 产品介绍: Palo Alto Networks Expedition 是一款强大的工具,帮助用户有效地迁移和优化网络安全策略,提升安全管理的效率和效果。它的自动化功能、策略分析和可视化报告使其在网络安全领域中成为一个重要的解决方案。 0x02 漏洞描述&am…...
c 语言 sprintf
在C语言中,sprintf是一个非常常用的函数,它用于将格式化的数据写入字符串中。sprintf函数的原型通常定义在stdio.h头文件中。 sprintf函数的原型如下: int sprintf(char *str, const char *format, …); 参数说明: str…...

stm32单片机个人学习笔记10(TIM编码器接口)
前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…...
如何在Android中存储数据?
在Android中存储数据是开发过程中至关重要的一环,根据数据的类型、大小、访问频率及安全性需求,开发者可以选择多种存储方式。以下是Android中存储数据的几种主要方式,每种方式都有其特定的应用场景和优缺点。 一、SharedPreferences Share…...

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

ssh连接慢的问题或zookeeper远程连接服务超时
问题原因: 在SSH登录过程中,服务器会通过反向DNS查找客户端的主机名,然后与登录的IP地址进行匹配,以验证登录的合法性。如果客户端的IP没有域名或DNS服务器响应缓慢,这可能导致SSH登录过慢。为了解决这个问题…...
perf工具使用指导
linux perf工具使用指导 perf 是 Linux 内核自带的性能分析工具,主要用于分析系统性能瓶颈和程序的性能问题。通过合理使用 perf 工具,可以有效地分析和优化系统性能。 安装 perf 在大多数 Linux 发行版中,perf 工具通常随内核源代码包一起…...

WordPress 禁用上传媒体图片自动生成缩略图及多尺寸图片教程
一、在 设置-媒体-媒体设置 中几个尺寸大小的设置不勾选或设置为 0,如下图: 二、找到主题文件 function.php 文件,打开后,在 <?php 后面添加如下代码: function.php 文件路径一般为:WordPress网站根目录…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...