Press "Enter" to skip to content

信息抽取新SOTA!首个结构化生成式信息抽取预训练模型,一统信息抽取四大任务

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

 

©PaperWeekly 原创 · 作者 | 樊润泽

 

单位 | 中科院计算技术研究所

 

研究方向 | 信息抽取

 

前两天在 arxiv 刷到了一篇已被 ACL 2022 主会接受的文章,题名《Unified Structure Generation for Universal Information Extraction》,简单看了摘要后整个震惊。作者采用生成式 text to structure 结构统一了信息抽取的四个任务,并且在 13 个数据集上采用全监督、低资源和少样本设置下均取得了 SOTA。

 

 

论文标题:

 

Unified Structure Generation for Universal Information Extraction

 

论文作者:

 

Yaojie Lu, Qing Liu, Dai Dai, Xinyan Xiao, Hongyu Lin, Xianpei Han, Le Sun, Hua Wu

 

作者单位:

 

中科院软件所中文信息处理实验室,百度

 

收录会议:

 

ACL 2022

 

论文链接:

 

https://arxiv.org/abs/2203.12277

 

Demo链接:

 

https://universal-ie.github.io/

 

 

研究背景与动机

 

文章主要针对信息抽取的四个任务:命名实体识别、关系抽取、事件抽取和观点抽取。信息抽取旨在从无结构的自然语言文本中抽取出结构化的信息,但是不同的信息抽取任务都有不同的结构,且差异较大。如图 1 所示,实体识别任务一般是采用 span 及其实体类别表示,关系抽取任务一般采用三元组(triplet)结构表示,事件抽取任务一般采用记录(record)表示,观点抽取任务采用三元组(triplet)来表示。

 

 

▲ 图1:信息抽取任务的不同结构与统一化信息抽取模型

 

不同的输出结构使得很难对所有信息抽取任务统一化建模,这样就产生了三个问题:

 

 

由于不同的任务、不同的设置(全监督、低资源、少样本、零样本)、不同的作用场景(医学、金融等),研究人员需要设计大量针对特定情况的模型,这是一件极其耗费资源的事情。

 

不同的任务有很多可以公用的知识,比如从图 1 中的(a)图可以看出,关系抽取需要用到命名实体识别的结果,事件抽取中的论元也是实体,而现在存在大量的针对特定任务的模型无法做到共享这些实体知识。

 

信息抽取的数据标注是一件极其耗费时间和人力的事情,但由于任务之间的独立,需要对每一个任务都标注数据。

 

 

针对上述问题,文章做了如下贡献:

 

 

设计了一种结构化抽取语言(Structural Extraction Language, SEL),它能够将四种信息抽取任务的不同结构统一描述,使得模型的输出结构针对不同任务都是一致的。

 

由于模型可以做多个任务,所以需要一种方式去指导模型做指定的任务,因此作者设计了结构化模式指导器(Structural Schema Instructor, SSI),其实这就是一种 prompt。

 

由于模型的输出都是符合 SEL 语法的结构化信息,而目前常用的生成式预训练模型如 T5、BART 都是以生成自然语言为主,若直接采用这种预训练模型会影响到模型性能,因此作者专门针对 text to structure 的结构来预训练了一个大模型。

 

 

 

如何统一每一个信息抽取任务?

 

这一节主要介绍作者如何采用 SEL 和 SSI 来统一化建模信息抽取任务。

 

2.1 统一信息抽取任务输出结构的结构化抽取语言SEL

 

作者发现四种信息抽取任务的目标都可以拆解成两个原子操作:

 

 

Spotting: 指在输入的原句中找到目标信息片段,比如说实体识别中某个类型的实体,事件抽取中的触发词和论元,他们都是原句中的片段。

 

Associating: 指找出 Spotting 输出的信息片段之间的关系,比如关系抽取中两个实体之间的关系,或事件抽取中论元和触发词之间的关系。

 

 

而每个信息抽取任务都可以用这两个原子操作去完成,因此作者设计了结构化抽取语言 SEL 可以对这两个原子操作进行表示,不同的任务只要组合不同的原子操作对应结构即可统一表示。

 

 

▲ 图2:SEL统一建模信息抽取任务的例子

 

如图 2(a)所示,作者使用三种形式来表示:(1)Spot Name:指目标信息片段的类别,在实体抽取中指实体类别,在事件抽取中可以指事件类型和论元类别。(2)Info Span:Spotting 操作的输出,即原句子中的目标信息片段。(3)Asso Name: 指两个信息片段之间的关系类型,也就是 Associating 操作的输出。

 

如图 2(b)所示,每个信息抽取任务都可以统一的用 SEL 语法描述,这里都是以“Steve became CEO of Apple in 1997.”为例。其中蓝色部分表示关系抽取任务,采用(Spot Name:Info Span(Asso Name:Info Span))格式,这里的关系指第一个括号里的实体和第二个括号里的实体的关系。

 

其中红色部分指事件抽取任务,采用(Spot Name:Info Span(Asso Name:Info Span)(Asso Name:Info Span)…)格式来表示,其中外括号里的 Spot Name 信息指的是事件类型及触发词,而中间的多个内括号指的是这个事件下多个论元的片段和类别。灰色部分指命名实体识别任务,由多个(Spot Name:Info Span)组成,每一对括号都指一个实体片段及其类别。

 

综上,可以看到 SEL 语法可以统一化描述每一个任务不同的输出结构,并且由于拥有很强的结构性,使得解码过程非常简单。

 

2.2 指导模型做特定任务的结构化模式指导器SSI

 

有了 SEL 语法,模型统一了不同任务的输出结构,但是当我们输入一个句子后,如何让模型去做我们想要的任务呢?因此作者提出了 SSI(Structural Schema Instructor),是一种基于 Schema 的 prompt。当我们输入句子时,在句子前面拼接上对应的 Prompt,即可让模型做对应的任务。

 

 

▲ 图3:UIE模型总架构图

 

如图3所示,第一个蓝色部分是关系抽取,它的 SSI 格式是:[spot] 实体类别 [asso] 关系类别 [text],这种形式可以告诉模型哪些做 spotting 操作,哪些做 associating 操作。第二个灰色部分是事件抽取,SSI 格式是:[spot] 事件类别 [asso] 论元类别 [text]。第三个绿色部分是实体识别,SSI 格式是:[spot] 实体类别 [text]。文章的附录中列出了每一个数据集每一个任务对应的 SSI,因为不同的数据集所设置的 Schema 是不同的,因此每个数据集都有不同的 SSI,虽然例子中只列出了部分类别,但是在使用时 SSI 就是将所有的类别都列举出来,部分示例如图 4 所示。

 

 

▲ 图4:不同任务不同数据集的SSI示例

 

注意:作者在实际使用中并不是用 [spot],而是采用 <spot>,asoc 同理。

 

以下用表示 SSI,用表示需要输入的原始句子,UIE 表示 UIE 模型,它由 transformer 的 Encoder 和 Decoder 组成,形式化定义如式(1):

 

 

输出就是采用 SEL 语法描述的结构化数据,其中表示如式(2):

 

 

详细来说,首先将输入至 Encoder,得到每一个 token 的隐层表示,形式化表示如式(3):

 

接下来使用隐层表示在 Decoder 端生成目标结构化信息,表示如式(4)所示:

 

 

 

预训练与微调

 

这一节将介绍 UIE 是如何预训练的,以及如何将其应用于下游任务去微调。作者采用的模型是 T5-v1.1-base 和 T5-v1.1-large 作为 UIE-base 和 UIE-large,模型的参数初始化直接使用了 T5-v1.1 的参数,也就是说直接基于其进行了二次预训练。

 

3.1 预训练数据

 

主要由 Wikipedia、Wikidata 和 ConceptNet 三部分组成,作者通过这三部分数据构造了如下三种形式的预训练数据:

 

 

:(token sequence,structured record),数据表示为

 

:只有基于 SEL 语法的结构性 record,数据表示为

 

:只有无结构的原始文本数据,做 masked language model tasks,数据表示为。

 

 

3.2 预训练任务

 

针对上述三种类型的数据,分别设计了三种预训练任务:

 

1. 针对,输入数据为 SSI+ 原始文本,使其生成结构化的数据 record,不同的是作者在 record 中不仅加入了原本存在的正样本,也加入了一些负样本作为噪音,比如(Spot Name: [NULL]),此任务计算的 Loss 如式(5)所示。

 

 

2. 针对,这部分输入只有结构化数据 record,输入前面的部分,使其生成剩余部分,并且只训练 UIE 的 decoder 部分,使其学会 SEL 语法,计算的 Loss 如式 (6)所示。

 

 

3. 针对,这部分做的是无监督的 masked language model 任务,和 T5 中的预训练任务一样,在原始句子中 MASK 掉 15% 的 tokens,然后生成 MASK 的部分,输入中已经呈现的部分输出 MASK,计算的 Loss 如式(7)所示。

 

 

最终将三个 Loss 相加作为最终 Loss。

 

值得注意的是,作者并不是分开做这三个预训练任务的,而是将其统一化,全部表示为三元组,其中是加在输入句子前面的 prompt,是输入的原始句子,是需要生成的目标句子,在每一个 batch 中随机抽取每一个任务的数据去训练。数据表示为,数据表示为,数据表示为,这样无论是哪种任务都是输入一个三元组,即可统一训练。

 

3.3 微调

 

微调部分和预训练任务的类似,数据形式是,微调的 Loss 计算方式如式(9)所示。

 

 

微调部分依然加入了负样本,如图 5 所示,表格上部分为输入,下部分为第一行为正样本的输出,第二行为加入了负样本。随机插入一些原标签中没有的信息,即 (Spot Name:[NULL])或(Asso Name:[NULL]),图 5 中输入句子中并没有 facility 的实体,而标签中插入了(facility:[NULL])。

 

 

▲ 图5:微调阶段加入负样本的例子

 

 

实验

 

实验基于 4 个任务:命名实体识别、关系抽取、事件抽取和观点抽取,13 个数据集,具体如图 6 所示。

 

4.1 全监督实验

 

这部分是在训练阶段采用所有的数据,实验结果如图 6 所示,最右边的 SEL 列是指基于 T5-v1.1-large 进行微调得到的结果,UIE 是指基于 UIE-large 进行微调的结果,可以看到几乎在全部数据集上都取得了 SOTA 的结果,但是通过对比 SEL 和 UIE 发现预训练部分对结果的提升并不大,通过这个可以看出作者设计的 SEL 语法和 SSI 还是很强大的,另一方面也说明 T5 本身的生成能力就很强大。

 

 

▲ 图6:全监督设置下的实验结果

 

4.2 低资源(Low-resource)实验

 

这部分是在 6 种设置下做的:1/5/10-shot 和 1/5/10% ratio。因为少样本情况下随机性很大,所以作者在每一个设置下都采样了 10 次,报告 10 次结果的平均,结果如图 7 所示,从这个结果中可以看出,UIE 真正强大的地方是小样本情况下,泛化能力非常强,远超基于 T5 的微调结果,在全监督设置下预训练部分的能力没有体现出来,但在低资源下针对性的预训练可以非常好的提升泛化能力。同样,全部任务下都取得了 SOTA。

 

 

▲ 图7:低资源设置下的实验结果

 

4.3 消融实验

 

如图 8 所示,首先是预训练部分的消融实验,分别去掉三个预训练任务,观察其最终结果可以看到: (1) 对于关系抽取和观点抽取的两个数据集来说,和非常重要,因为从 T5 到移除了后,结果在关系抽取中从 72.12 升到了 75.70,在观点抽取中从 72.03 升到了 74.28,可以看到和带来了非常大的性能提升。 (2) 对于事件抽取这种复杂任务非常重要,若移除,触发词识别的结果从 72.63 降到了 70.89,论元识别的结果从 57.27 降到了 54.16。 (3) 对模型的抽取能力帮助很大,移除掉以后,关系抽取性能下降了 0.90,事件抽取下降了 1.43/1.48,观点抽取下降了 0.46。

 

 

▲ 图8:预训练部分的消融实验结果

 

此外,对小样本情景下,通过消融实验验证了插入负样本的有效性,结果如图 9 所示,这种插入负样本的方式在小样本情况下影响显着,无论是基于 T5 还是 UIE,precision 平均能提高 13.16。

 

 

▲ 图9:小样本情景下对rejection机制的消融实验结果

 

 

总结

 

这篇文章提出了第一个结构化生成的通用信息抽取预训练语言模型,性能直接刷爆了 13 个数据集的 SOTA,特别是在小样本/低资源情景下,提升显着,这也为我们提供了一个思路,如果想在小样本情况下取得较好的性能,而预训练任务和下游任务 gap 较大时,可以自己去设计和下游任务相近的预训练任务,基于现有的预训练模型进行二次预训练。

 

其实这篇文章的动机也不是作者偶然性想到的,2021 年一作 Yaojie Lu 就将 text to structure 结构应用于了事件抽取任务,并且中了 ACL 2021,本篇文章也是他将这种结构扩展到了整个信息抽取领域。

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。