信息抽取任务包括命名实体识别(NER)、关系抽取(RE)、事件抽取(EE)等各种各样的任务。不同的信息抽取任务针对的任务不同,希望得到的输出也不同。例如下面的例子中,对于NER任务,需要识别Steve是PER、Apple是ORG;而对于关系抽取任务,则需要识别出Steve和Apple是Work For的关系。此外,不同场景的同一个信息抽取任务的输出可能也是不同的。
目前业内比较常见的做法是针对每个场景的每种信息抽取任务,分别独立的训练一个模型。这种方法成本很高,每种任务、每种场景都要建立模型。此外,独立的训练模型导致不同任务之间无法共享知识,没有发挥出数据和模型的全部能力。
中科院、百度在ACL 2022中提出了一种可以实现统一建模各类信息抽取任务的框架UIE,在4种信息检索任务的13个数据集上都取得了显著效果。
1
统一多种信息抽取任务
要想实现使用一个模型解决多种信息抽取任务的目标,一个核心问题是如何统一各种信息抽取任务的输入和输出。作者提出所有信息抽取任务都可以抽象成Spotting和Associating两个步骤:在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