0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于Prompt在NER场景的应用总结

深度学习自然语言处理 来源:NLP工作站 作者:NLP工作站 2022-05-24 10:54 次阅读

写在前面

大家好,我是刘聪NLP。

最近在做Prompt的相关内容,本人意识中一直觉得Prompt机制在序列标注任务上不是很好转换,因此,很早前,组长问我时,我夸下海口,说:“谁用prompt做NER呀”。然后,调研发现大佬们真是各显神通,是我目光短浅了。于是,决定进行一番总结,分享给大家。「有点长,大家慢慢看,记得点赞收藏转发」

部分论文已经在自己的数据上进行了实验,最后一趴会进行简要概述,并且会分析每种方法的优劣。

TemplateNER

TemplateNER,原文《Template-Based Named Entity Recognition Using BART》,是第一篇将Prompt方法应用于序列标注任务的论文,核心思想是通过N-Gram方法构建候选实体,然后将其与所有手工模板进行拼接,使用BART模型对其打分,从而预测出最终实体类别。是一篇「手工模板且无答案空间映射」的Prompt论文。

paper:https://arxiv.org/abs/2106.01760
github:https://github.com/Nealcly/templateNER

模型,训练阶段如下图(c)所示,预测阶段如下图(b)所示,下面详细介绍。

c205ac22-da96-11ec-ba43-dac502259ad0.png

任务构造

将序列标注任务转换成一个生成任务,在Encoder端输入为原始文本,Decoder端输入的是一个已填空的模板文本,输出为已填空的模板文本。待填空的内容为候选实体片段以及实体类别。候选实体片段由原始文本进行N-Gram滑窗构建,为了防止候选实体片段过多,论文中最大进行8-gram。

模板构建

模板为手工模板,主要包括正向模板和负向模板,其中,正向模板表示一个文本片段是某种实体类型,负向文本表示一个文本片段不是实体。具体模板如下表所示,我们也可以看出,最终模型效果是与手工模板息息相关的。

c282593e-da96-11ec-ba43-dac502259ad0.png

训练阶段

在训练阶段,正样本由实体+实体类型+正向模板构成,负样本由非实体片段+负向模板构成;由于负样本过多,因此对负样本进行随机负采样,使其与正样本的比例保持1.5:1。其学习目标为:

预测阶段

在预测阶段,将进行8-gram滑窗的所有候选实体片段与模板组合,然后使用训练好的模型进行预测,获取每个候选实体片段与模板组合的分数(可以理解为语义通顺度PPL,但是计算公式不同),分数计算如下:

其中,表示实体片段,表示第k个实体类别,T_{y_{k},x_{i:j}}表示实体片段与模板的文本。

针对,每个实体片段,选择分数最高的模板,判断是否为一个实体,哪种类型的实体。

c2bbc9b2-da96-11ec-ba43-dac502259ad0.png

DemonstrationNER

DemonstrationNER,原文《Good Examples Make A Faster Learner: Simple Demonstration-based Learning for Low-resource NER》,核心思想为在原始文本的基础上,拼接示例模板信息,提高原始序列标注模型的效果。是一篇「示例模板且无答案空间映射」的Prompt论文。

paper:https://arxiv.org/abs/2110.08454
github:https://github.com/INK-USC/fewNER

模型如下图(b)所示,下面详细介绍。

c2f6d124-da96-11ec-ba43-dac502259ad0.png

任务构造

依然是序列标注模型,仅将原始文本后面拼接示例模板,而示例模板的作用主要是提供额外信息(什么样的实体属于什么类别,与原文相似文本中哪些实体属于哪些类别等),帮助模型可以更好地识别出原始文本中的实体。

示例模板的构建

示例分为面向实体的示例和面向句子的示例,如下图所示,

c3272626-da96-11ec-ba43-dac502259ad0.png

面向实体的示例构造方法包括:

  • 随机法,即,随机从训练集的实体列表中,抽取若干个实体,作为示例。
  • 统计法,即,选择在训练集中出现次数较多的实体,作为示例。
  • 网格搜索法,即,对所有实体进行网格搜索,判断采用哪些实体作为示例时,在验证集上的效果最优。

面向句子的示例构造方法包括:

  • SBERT法,即,使用[CLS]向量之间的余弦值作为句子相似度分数,选择与原始句子最相似的句子作为示例。
  • BERTScore法,即,使用句子中每个token相似度之和作为句子相似度分数,选择与原始句子最相似的句子作为示例。

模板形式主要有三种,无上下文模板、有上下文模板和词典模板,如下图所示,

c35d92e2-da96-11ec-ba43-dac502259ad0.png

最终实验结果为实体-网格搜索法-有上下文模板效果最佳。分析句子级别不好可能是由于数据空间中句子间的相似度太低导致。

训练&预测

将示例模板拼接到原始模板后面,一起进入模型,仅针对原始文本进行标签预测与损失计算,如下:

其中,表示原始文本,表示示例模板,表示原始文本经过模型后的序列向量,表示示例模板经过模型后的序列向量。损失如下:

仅考虑原始文本部分。将需要领域迁移时,将原有模型的参数赋予新模型,进训练标签映射部分参数(linear或crf)即可。

c3bb6c3c-da96-11ec-ba43-dac502259ad0.png

LightNER

LightNER,原文《LightNER: A Lightweight Generative Framework with Prompt-guided Attention for Low-resource NER》,核心思想为将原始序列标注任务转化为Seq2Seq的生成任务,通过在transformer的attetion机制中融入提示信息,在少量参数训练下,使模型达到较好的效果。是一篇「软模版且有答案空间映射」的Prompt论文。

paper:https://arxiv.org/abs/2109.00720
github:https://github.com/zjunlp/DeepKE/blob/main/example/ner/few-shot/README_CN.md

模型如下图所示,下面详细介绍。

c3f8ed46-da96-11ec-ba43-dac502259ad0.png

任务构造

将序列标注任务转换成一个生成任务,在Encoder端输入为原始文本,Decoder端逐字生成实体以及实体类型。模板信息融到Encoder和Decoder模型attention机制中,模板为soft-prompt,即一种可学习的自动模板。

基于提示引导的Attention

如上图(b)所示,分别在Encoder和Decoder中加入可训练参数,其中,为transformer的层数,,为模板长度,为隐藏节点维度,表示由key和value两项组成。

给定输入序列,对于每一层transformer,的原始表示如下:

变化后的attention如下:

基于提示引导的Attention可以根据提示内容重新调节注意机制,使其少参数调节。并且实验发现,模板长度和提示信息融入的层数影响最终效果,当长度为10时,效果最佳。当层数为12层时,效果最佳。

c4432294-da96-11ec-ba43-dac502259ad0.png

训练&预测

对于Encoder端,输入文本,获取表示;

对于Decoder端,输出不仅为实体内容还可能为实体类别,即,其每个输出内容为

标签预测时,

其中,通过答案空间映射得来,具体为“将标签中几个词语的向量加权求和,作为标签的答案空间向量”。

c46828dc-da96-11ec-ba43-dac502259ad0.png

消融实验发现,基于提示引导的Attention和答案空间映射对于结果的影响均较大。

EntLM

EntLM,原文《Template-free Prompt Tuning for Few-shot NER》,核心思想为将序列标注任务变成原始预训练的LM任务,仅通过答案空间映射,实现任务转化,消除下游任务与原始LM任务的Gap,提高模型效果。是一篇「无模板且有答案空间映射」的Prompt论文。

paper:https://arxiv.org/abs/2109.13532
github:https://github.com/rtmaww/EntLM/

模型如下图所示,下面详细介绍。

c4a2949a-da96-11ec-ba43-dac502259ad0.png

任务构造

将序列标注任务转换成一个与预训练阶段一致的LM任务,消除下游任务与预训练任务的Gap。对其输入文本进行LM预测,当token不是实体时,预测成与输入一致的token;当token是实体时,预测成实体类别下的token。而针对每个实体类别下的token的整合,即答案空间映射如何构造。

答案空间映射的构造

在特定领域下,往往未标注文本以及每个实体类别的实体列表是很好获取的,通过词表回溯构建伪标签数据,其中,表示实体类别,表示文本数据。由于伪标签数据会存在很多噪音数据,因此在构建答案空间映射时,使用4种方法,对每个实体类别中的候选词语进行筛选。

  • 数据分布法,即,筛选出在语料库中,每个实体类别出现频率最高的几个词。
  • 语言模型输出法,即,将数据输入到语言模型中,统计每个类别中词汇在语言模型输出概率的总和,选择概率最高的几个词。
  • 数据分布&语言模型输出法,即将数据分布法和语言模型输出法相结合,将每个实体类别中的某一词的词频*该词模型输出概率作为该词得分,选择分数最高的几个词。
  • 虚拟标签法,即,使用向量代替实体类别中的词语,相当于类别「原型」,向量获取办法为将上述某一种方法获取的高频词,输入到语言模型中,获取每个词语的向量,然后进行加和取平均,获取类别向量。

c4dc05a4-da96-11ec-ba43-dac502259ad0.png

  • 由于一些高频词可能出现在多个实体类别中,造成标签混乱,因此采用阈值过滤方法去除冲突词语,即(某个类别中的词语出现的次数/词语在所有类别中出现的次数)必须大于规定的阈值,才将该词语作为该实体类别的标签词语。

c511cf68-da96-11ec-ba43-dac502259ad0.png

  • 实验发现,绝大多少情况下,数据分布&语言模型输出法获取高频词,再使用虚拟标签法获取类别「原型」的方法最好。

训练&预测

模型训练阶段采用LM任务的损失函数,如下:

其中,,为预训练过程中LM层参数。

c5483a26-da96-11ec-ba43-dac502259ad0.png

UIE

UIE,原文《Unified Structure Generation for Universal Information Extraction》,核心思想为将序列标注任务转化为Seq2Seq的生成任务,将手工提示模板与原始文本进行结合,通知模型待抽取的内容,再通过特定的抽取格式,进行逐字解码生成,提高模型效果。是一篇「手工模板且无答案空间映射」的Prompt论文。不过UIE适用于所有信息抽取任务,不限于NER任务,但后面主要以NER任务为例,进行阐述。

paper:https://arxiv.org/abs/2203.12277
github:https://github.com/universal-ie/UIE

模型如下图所示,下面详细介绍。

c595c2aa-da96-11ec-ba43-dac502259ad0.png

值得注意的是,UIE这篇论文与百度Paddle提到到UIE框架并不一个东西(看过源码的人都知道,不要混淆)。百度Paddle提到到UIE框架本质是一个基于提示的MRC模型,将提示模板作为query,文本作为document,使用Span抽取提示对应的内容片段。

任务构造

将序列标注任务转换成一个生成任务,在Encoder端输入为提示模板+原始文本,Decoder端逐字生成结构化内容。以T5为基础,采用预训练技术,学习从文本到结构化生成。

手工模板

在编码端,通过待抽取schema(实体类别、关系等)构造Prompt模板,称为SSI,同于控制生成内容。模板样式如下图所示,

c5da1414-da96-11ec-ba43-dac502259ad0.png

在解码端,设计了特定的抽取结构,称为SEL,而这种特殊的结构,也可以算作模板的一种吧,可以使解码时,按照统一要求进行表示。抽取结构样式如下图所示,

c610b33e-da96-11ec-ba43-dac502259ad0.png

只需关注Entity部分即可。

训练&测试

对于Encoder端,输入文本以及SSI内容,获取表示为:

对于Decoder端,逐字生成,如下:

由于训练数据中,待生成部分的数据格式均按照SEL格式构造,因此生成内容也会遵循其结构。

而模型重点是如何构造预训练数据,在预训练过程中,数据来自Wikidata、Wikipedia和ConceptNet。并且构造的数据格式包含三种,分别为、和。

  • ,是通过Wikidata和Wikipedia构建的text-to-struct平行语料。
  • ,是仅包含结构化形式的数据。
  • ,是无结构化的纯文本数据。

在预训练过程中,三种语料对应不同的训练损失,训练的网络结构也不一样。训练整个Encoder-Decoder网络结构,仅训练Decoder网络结构,进训练Encoder网络结构,最终的损失是三者的加和。

c63f1a08-da96-11ec-ba43-dac502259ad0.png

总结

本人在自己的中文数据集上,测试了TemplateNER、LightNER和EntLM的效果,惊奇的发现当数据量增加到50-shot时,「BERT-CRF」的效果是最好的(别整哪些没用的,加点数据啥都解决了,这也是令我比较沮丧的点。也许、可能、大概、兴许、或许是数据集或者代码复现(code下载错误?)的问题,无能狂怒!!!)。

当5-shot和10-shot时,EntLM方法的效果较好,但是跟答案空间映射真的是强相关,必须要找到很好的标签词才能获取较好的效果。而TemplateNER方法测试时间太久了,在工业上根本无法落地。

就像之前我对prompt的评价一样,我从来不否认Promot的价值,只是它并没有达到我的预期。是世人皆醉我独醒,还是世人皆醒我独醉,路还要走,任务还要做,加油!!!

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 模板
    +关注

    关注

    0

    文章

    106

    浏览量

    20478
  • 模型
    +关注

    关注

    1

    文章

    2699

    浏览量

    47656
  • 数据集
    +关注

    关注

    4

    文章

    1176

    浏览量

    24340

原文标题:总结 | Prompt在NER场景的应用

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    NanoEdge AI的技术原理、应用场景及优势

    硬件设计则是为了确保设备执行这些任务时能够保持低能耗,从而提高其续航能力。 2、应用场景 NanoEdge AI 可以广泛应用于各种物联网设备和传感器,如智能家居、工业自动化、智能交通、医疗健康
    发表于 03-12 08:09

    AG32VF-MIPI应用场景

    MIPI接口技术图像和视频传输中的应用越来越广泛,应用场景不断拓展,而不仅限于移动设备。MIPI接口物联网、智能家居、智能监控、智能电视、智能汽车等领域也得到广泛应用。 MI
    发表于 01-22 08:56

    如何从训练集中生成候选prompt 三种生成候选prompt的方式

    这个“gradient”怎么得到的了呢,这是个啥玩意,怎么还有梯度?注意,注意。人家是带引号的!比喻成梯度。这玩意有什么用呢。 文章指出给定一批error samples(当前prompt无法
    的头像 发表于 01-12 11:29 323次阅读
    如何从训练集中生成候选<b class='flag-5'>prompt</b> 三种生成候选<b class='flag-5'>prompt</b>的方式

    关于编程模式的总结与思考

    淘宝创新业务的优化迭代是非常高频且迅速的,在这过程中要求技术也必须是快且稳的,而为了适应这种快速变化的节奏,我们在项目开发过程中采用了一些面向拓展以及敏捷开发的设计,本文旨在总结并思考其中一些通用的编程模式。
    的头像 发表于 01-03 10:14 202次阅读
    <b class='flag-5'>关于</b>编程模式的<b class='flag-5'>总结</b>与思考

    关于贴片电阻的知识总结(4)

    关于温度上一章节已经介绍完毕,今天我们来聊聊电阻精度问题,之前我们提到过,电阻精度有±1%,±5%,±10%的,那我们确定电阻阻值后,还要确定精度;接下来举个例子。
    的头像 发表于 11-21 11:37 427次阅读
    <b class='flag-5'>关于</b>贴片电阻的知识<b class='flag-5'>总结</b>(4)

    关于贴片电阻的知识总结(1)

    关于电阻,相信小伙伴们已经熟知,像贴片电阻,可调电阻,插件电阻等等;接下来分享我自己工作中常用的贴片电阻应用知识和教训。
    的头像 发表于 11-21 11:34 717次阅读
    <b class='flag-5'>关于</b>贴片电阻的知识<b class='flag-5'>总结</b>(1)

    关于TCP/IP协议的知识总结

    今天浩道跟大家分享关于TCP/IP协议的硬核干货总结,我常常跟小伙伴说,一个简短硬核的知识总结,可以让大家快速掌握这些知识体系,喜欢的小伙伴可以收藏起来,随时查看复习!
    的头像 发表于 10-31 11:48 826次阅读
    <b class='flag-5'>关于</b>TCP/IP协议的知识<b class='flag-5'>总结</b>

    关于Buck电路纹波控制的方式

    前段时间看了一些关于Buck电路纹波控制的方式,在这里做个总结
    的头像 发表于 10-29 17:08 946次阅读
    <b class='flag-5'>关于</b>Buck电路纹波控制的方式

    prompt在AI中的翻译是什么意思?

    prompt在AI中的翻译是什么意思? Prompt在AI中是指给出指示或提示,用于引导AI系统执行下一步任务或采取下一步行动。在AI中经常用到prompt技术,因为它可以使AI系统更灵活、更高
    的头像 发表于 08-22 15:59 1981次阅读

    关于MATLAB求导实践的总结

    MATLAB是一个功能强大的数值计算软件,提供了多种方法来进行求导操作。在实践中使用MATLAB进行求导可以帮助我们解决各种科学、工程和数学问题。下面是一份关于MATLAB求导实践的总结与介绍。
    的头像 发表于 07-17 12:33 966次阅读

    河套IT TALK96:(原创)GPT技术揭秘:解锁提示工程的潜能

    应用场景和需求。对于ChatGPT这一类的对话类应用,Prompt就是提问者在提问框提出的问题和文字描述。而对于Mijdjourney之类
    的头像 发表于 06-27 21:05 330次阅读

    基于多任务预训练模块化提示

    对 Few-shot 场景时,PT 的调优方法还是存在一定的局限性。针对这个问题, 复旦提出了多任务预训练模块化 Prompt(简称为:),来提高模型在 Few-shot 场景下的 PT 效果,使模型能够快速适应下游
    的头像 发表于 06-20 11:04 382次阅读
    基于多任务预训练模块化提示

    IMX93特殊低功耗场景的问题求解

    我有一个关于特殊低功耗场景的问题。 场景如下: - M33 运行(TCM),等待 GPIO 线上的外部中断 - A 核断电(包括 DDR)。 - 在外部 isr 的情况下,M-Core 应该唤醒
    发表于 05-24 12:10

    蓝牙多连接应用场景举例

    蓝牙多连接应用场景举例 一、蓝牙多连接的通信方式: 1-1、蓝牙MESH组网图: 1-2、蓝牙星型组网图; 二、两种方案的优劣势: 2-1、 MESH方式网络中的节点数量多,能够实现单播、组播
    发表于 05-09 09:09

    STM32 Encoder编码器使用总结

    目录 Encoder 原理 STM32 Encoder 计数原理 模型仿真 模拟Encoder 基于Encoder计算角度和速度 关于启动的仿真 代码生成 运行演示 总结总结一下基于STM32
    发表于 05-06 09:44 2次下载
    STM32 Encoder编码器使用<b class='flag-5'>总结</b>