前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个模型解决所有信息抽取任务!(含代码)

一个模型解决所有信息抽取任务!(含代码)

作者头像
圆圆的算法笔记
发布2022-12-19 20:49:14
1.1K0
发布2022-12-19 20:49:14
举报
文章被收录于专栏:圆圆的算法笔记
  • 论文标题:Unified Structure Generation for Universal Information Extraction
  • 下载地址:https://arxiv.org/pdf/2203.12277.pdf

信息抽取任务包括命名实体识别(NER)、关系抽取(RE)、事件抽取(EE)等各种各样的任务。不同的信息抽取任务针对的任务不同,希望得到的输出也不同。例如下面的例子中,对于NER任务,需要识别Steve是PER、Apple是ORG;而对于关系抽取任务,则需要识别出Steve和Apple是Work For的关系。此外,不同场景的同一个信息抽取任务的输出可能也是不同的。

目前业内比较常见的做法是针对每个场景的每种信息抽取任务,分别独立的训练一个模型。这种方法成本很高,每种任务、每种场景都要建立模型。此外,独立的训练模型导致不同任务之间无法共享知识,没有发挥出数据和模型的全部能力。

中科院、百度在ACL 2022中提出了一种可以实现统一建模各类信息抽取任务的框架UIE,在4种信息检索任务的13个数据集上都取得了显著效果。

1

统一多种信息抽取任务

要想实现使用一个模型解决多种信息抽取任务的目标,一个核心问题是如何统一各种信息抽取任务的输入和输出。作者提出所有信息抽取任务都可以抽象成SpottingAssociating两个步骤:在Spotting步骤中,确定输入文本中的实体以及该实体对应的实体类型;在Associating中,建立两个实体之间的关系。

例如下面是Steve became CEO of Apple in 1997这句话使用上述方法抽象出来的描述语言。蓝色的代表关系抽取,红色的代表事件抽取,其他的是命名实体识别。首先能够识别出person、organization、time三种实体。此外Steve可以识别出work for的关系,而事件以became作为start-position,关联employee、employer、time。

通过上述方法,可以实现将所有信息抽取任务都抽象为相同结构的语言描述,为后续的多任务统一建模打下了基础。

2

基于prompt的多任务统一建模

基于上面的关系抽取统一描述,本文提出了UIE框架,在输入侧构造每个任务structural schema instructor (SSI),以及原始文本,使用Encoder编码后,使用Decoder解码统一的信息抽取语言描述。整个过程如下图所示。

仍然以上面文本为例,输入由SSL原始文本组成。对于关系抽取任务,SSL对应的是[spot] person [asso] word for。这会作为一个前缀prompt,用来指导模型根据特定的任务进行文本生成。而对于NER任务,SSL对应的是[spot] person [spot] organization [spot] time。SSL后面接一个[text]标识符以及原来的文本。整体的输入文本拼接模式如下:

上述文本会通过Encoder进行编码,然后利用Decoder进行文本生成,生成的目标文本即为根据信息抽取的label生成的统一描述。在具体的模型结构上,BART、T5等生成式模型,都可以作为框架的主模型的backbone。这种基于前缀的生成方式,也可以比较容易的适应到一个新的信息抽取任务上。

3

模型训练

为了训练上面说的从SSL+文本到描述的生成式模型,文中采用了三个预训练任务联合学习。构造了3种数据,分别是SSL+原始文本到结构化文本的pair对、单独的原始文本以及单独的结构化文本。第一个任务是SSL+原始文本到结构化文本的匹配关系,匹配的label为1,不匹配label为0,label为0的样本是通过随机替换spot或associate实现的。第二个任务是使用结构化文本训练Decoder,这一步是为了让Decoder适应结构化文本的语言形式。第三个任务是在训练过程中引入一般的mask language modeling任务,目的是防止模型在训练过程中丢失了文本原始的语义信息。最终的预训练loss是下面3个loss的和:

预训练好的模型可以在下游任务进行finetune以应用到各类任务上。同时作者引入rejection mechanism,在结构化文本中插入一些在原始输入中没有的实体以及NULL,让模型可以通过生成NULL避免被误导生成不正确的结果。

4

实验结果

UIE框架在信息抽取任务中的整体效果如下,主要对比了UIE和各个数据集上各类SOTA模型的效果。可以看到在大部分数据集上,UIE的效果都是最优的。对比没有经过预训练的模型(SEL),UIE取得非常显著的提升,通过将多任务使用统一框架联合训练,实现了知识的共享和效果的互相促进。

除了在正常的有监督任务上效果外,本文也对小样本场景的效果进行了实验,主要对比了使用T5模型finetune和使用UIE方法的效果,UIE在小样本上的效果非常显著。

5

开源代码

与此论文相应的开源代码发布在百度PaddleNLP上https://github.com/PaddlePaddle/PaddleNLP/tree/develop/model_zoo/uie

感兴趣的同学可以去github中尝试UIE的效果,主页上有详细的使用示例部署方式~

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 圆圆的算法笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档