PromptNER: Prompt Locating and Typing for Named Entity Recognition

2023-12-21 22:01

本文主要是介绍PromptNER: Prompt Locating and Typing for Named Entity Recognition,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文链接:

https://aclanthology.org/2023.acl-long.698.pdf

ACL 2023

介绍

        问题

        目前将prompt方法应用在ner中主要有两种方法:对枚举的span类型进行预测,或者通过构建特殊的prompt来对实体进行定位。但作者认为这些方法存在以下问题:1)时间开销和计算成本较高;2)需要精确的设计模板,难以在实际场景中应用。

        IDEA

        因此作者提出了一种双插槽的prompt模板来分别进行实体定位分类,模型可以同时处理多个prompt,通过对每个prompt中的插槽进行预测来提取所有的实体。

        如下图所示,(a)表示根据实体类别构造prompt的方法;(b)表示根据span构造prompt的方法;(c)表示作者所提出的双插槽方法。

方法

         整体的结构如下图所示:

Prompt Construction

        模型的输入由两部分组成:M个prompt和句子X。具体的,当输入的句子x=“Jobs was born in San Francisco”,则输入序列就表示为T:

        i表示第i个prompt,pi和Ti分别表示实体的位置和类别,M表示prompt的数量,通过对每个prompt中对应的位置进行解码来提取实体。

Prompt Locating and Typing

Encoder

         使用bert对T进行编码后,通过位置索引得到句子X与两个插槽的编码

        这里作者为了对句子进行独立于prompt的编码(为啥要进行独立编码?好像是为了不让prompt对句子产生影响 实验证明这样的效果会好一点点),通过一个n*k(k表示prompt序列的长度)的左下角掩码矩阵来阻断prompt对句子的注意。

        为了增强不同prompt之间的交互,作者设计了一个额外的prompt交互层,每层中包括插槽之间的自注意力以及句子和插槽的交叉注意力(q是插槽,key和value是句子),即位置和类别两种插槽的最终表示为:

Entity Decoding 

         通过对prompt中的position slot(位置插槽)和type slot(类别插槽)进行解码得到最终的实体。

        具体的,对于第i个prompt,将其type slot 送入一个分类器得到其属于不同类别的可能性:

        对于实体的位置,转化为确定第j个词是第i个prompt所预测实体的起始词还是结束词。首先将position slot 送入一个线性层,然后与句子中每个单词的表征进行相加得到融合表征,对其进行二分类,得到第j个词是第i个prompt预测实体的左右边界概率:

        最后,m个prompt所预测出的实体可以表示为:

        在推理时,同一实体跨度选择分数最高的类别。 

Dynamic Template Filling 

         由于prompt和实体之间没有确切的对应关系,也就不能提前为其分配标签。因此,将插槽视为一个线性分配问题,按最小代价原则进行分配。作者提出了一种动态模板匹配机制,在实体和prompt之间进行二部图匹配。

        gold entity表示为, 其中k表示实体的数量,分别表示第i个实体的左右边界和类别。即与prompt对应的最佳匹配为:

        其中第i个实体与第θ(i)个prompt之间匹配的代价为(这里没看懂这个计算公式,文中也没有进一步说明,预测的实体与真实实体相乘?):

         但传统的二方图匹配算法是一对一的,即一个实体只能分配给一个prompt,这就会导致部分prompt匹配到空集,降低了训练效率。因此作者将其扩展到了一对多的情况,在预定义好的下限值U下重复gold entity来扩充Y,实现一个实体能分配给多个prompt。

        模型的loss由以下两部分的loss组成:

实验

对比实验

        在ACE04、ACE05、Conll03这三个数据集上进行实验,结果如下所示:

域内Few-shot

         领域内few-shot场景下的实验结果如下图所示:

        对conll03数据集进行下采样,使得这四个类别的样本数分别为:3763、2496、100、100.

跨域Few-shot

         模拟跨领域few-shot的情况进行实验,在conll03数据集上进行预训练,然后迁移到MIT Movie、MIT Restaurant和ATIS这三个数据集的部分样本上(10、20表示每个类别的样本数)进行实验,结果如下图所示:

        作者认为由于promptNER分别对位置和类别进行预测,适用于语法一致而语义不一致的跨域场景。

消融实验 

         作者对模型的主要模块进行了消融实验,结果如下所示:

        消融设置:

        1)根据实体出现的顺序来分配给prompt;

        2)不进行标签的扩充,比如使用传统的一对一二部图匹配;

        3)使用原始的bert用于对句子和prompt进行编码

        对不同的prompt模板也进行了实验,结果如下所示:

Inference Efficiency

        对于有N个单词、C个类别的句子,基于实体类型和span的promt方法分别需要运行C和N(N-1)次,以自回归生成实体序列的方法需要运行T步(实体的长度)才能获得所有的实体。

        而PromptNER只需要运行一次就能得到所有的实体。在conll03数据集上进行推理速度的实验,结果如下所示:

总结

        之前用在ner上的prompt都是对实体位置和类别分开进行的,这是第一篇(我读到的) 用这种两个slot的方法来对实体及其类别分别进行处理。(但是感觉这样没有语义上的可理解性,也不太符合预训练任务,因为感觉一句话后面也不会直接接上实体)第二个创新点感觉标签动态分配那一块没有讲清楚,很多方法都是使用这种动态分配标签的方法,而去作者扩展为一对多的方式竟然是直接复制,有点过于简单了,真的。但是作者做的相关实验很充分!

        另外,作者对prompt的模板进行了消融实验,其实这三种prompt相差都不大,感觉都差不多,只是[pi][Ti]这种模板附加信息更少,不会超出bert的最大长度。不过可以借鉴作者做的推理效率那一块的实验。

这篇关于PromptNER: Prompt Locating and Typing for Named Entity Recognition的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/521629

相关文章

Prompt - 将图片的表格转换成Markdown

Prompt - 将图片的表格转换成Markdown 0. 引言1. 提示词2. 原始版本 0. 引言 最近尝试将图片中的表格转换成Markdown格式,需要不断条件和优化提示词。记录一下调整好的提示词,以后在继续优化迭代。 1. 提示词 英文版本: You are an AI assistant tasked with extracting the content of

jupyter在加载pkl文件时报错ModuleNotFoundError: No module named 'pandas.core.internals.managers'; '的解决方法

笔者当看到这个错误的时候一脸懵逼,在pycharm上正常运行的code 放在jupyter就不成了,于是就研究一翻。 一开始以为自己的pkl文件有问题,研究重点放在这里,最后发现不是。 然后取搜索pycharm和jupyter下的python的\Lib\site-packages\pandas\core\internals有什么不同 发现jupyter下没有pandas\core\intern

ModuleNotFoundError: No module named ‘diffusers.models.dual_transformer_2d‘解决方法

Python应用运行报错,部分错误信息如下: Traceback (most recent call last): File “\pipelines_ootd\unet_vton_2d_blocks.py”, line 29, in from diffusers.models.dual_transformer_2d import DualTransformer2DModel ModuleNotF

The Prompt Report 2

The Prompt Report 提示工程调查报告《The Prompt Report: A Systematic Survey of Prompting Techniques》 主要内容 Core Prompting Techniques Text based Techniques:PRISMA流程,58中基于文本的提示技术,提示语术语分类表;MLT:Multilingual T

Google Research 推出高效的Prompt Tuning方法

人工智能咨询培训老师叶梓 转载标明出处 一般模型微调方法需要对预训练模型的所有参数进行调整,这在大规模模型中既耗时又耗资源。Google Research的研究团队提出了一种名为“Prompt Tuning”的方法,旨在通过学习“软提示”来调整冻结的语言模型,使其能够更好地完成特定的下游任务。这种方法不仅简单有效,而且在模型规模增大时,其性能逐渐接近全模型微调(Model Tuning)的效果。

人脸识别开源项目之-face_recognition

特性 从图片里找到人脸 定位图片中的所有人脸: import face_recognitionimage = face_recognition.load_image_file("your_file.jpg")face_locations = face_recognition.face_locations(image) 识别人脸关键点 识别人脸关键点,包括眼睛、鼻子、嘴和下巴。

Attribute Recognition简记1-Video-Based Pedestrian Attribute Recognition

创新点 1.行人属性库 2.行人属性识别的RNN框架及其池化策略 总结 先看看行人属性识别RNN结构: backbone是ResNet50,输出是每一帧的空间特征。这组特征被送到两个分支,分别是空间池化和时间建模。最后两种特征拼接。然后分类(FC)。 LSTM关注帧间变化。受cvpr《Recurrent Convolutional Network for Video-Based Person

Face Recognition简记1-A Performance Comparison of Loss Functions for Deep Face Recognition

创新点 1.各种loss的比较 总结 很久没见到这么专业的比较了,好高兴。 好像印证了一句话,没有免费的午餐。。。。 ArcFace 和 Angular Margin Softmax是性能比较突出的

MaPLe(论文解读): Multi-modal Prompt Learning

Comment: Accepted at CVPR2023 摘要 预训练的视觉语言模型(VL-PTMs)(比如CLIP)在下游任务中已经表现出不错的泛化能力。但是它们对输入文本提示模板的选择很敏感,需要仔细选择提示模板才能表现良好。 受到NLP领域的启发,最近的CLIP的自适应性方法开始学习提示作为文本输入,来微调CLIP以适应下游任务。本文能注意到,在CLIP的单个分支(语言或图像分支)中

《The Power of Scale for Parameter-Efficient Prompt Tuning》论文学习

系列文章目录 文章目录 系列文章目录一、这篇文章主要讲了什么?二、摘要中T5是什么1、2、3、 三、1、2、3、 四、1、2、3、 五、1、2、3、 六、1、2、3、 七、1、2、3、 八、1、2、3、 一、这篇文章主要讲了什么? The article “The Power of Scale for Parameter-Efficient Prompt Tuning