提纲
1 简介
2 背景
3 UIE
4 Pretrain
5 Finetune
6 实验结果
7 总结
参考文献
1 简介
信息抽取任务(information extraction,简称IE)是NLP一个常见的任务,旨在从非结构化的文本中识别跟输出结构化的信息,包括命名实体识别,关系抽取等等,由于这些任务对应的信息可以辅助其他任务,所以通常模型会联合多个任务训练。但是由于不同任务之间的差异性,缺乏一个统一的处理框架。
在这个篇章我们介绍一个信息抽取的统一的text-to-structure生成框架UIE,实现了对不同信息抽取任务的统一建模,无论是实体识别任务,还是关系抽取任务,无论是具体哪个领域要抽取的信息类型,都可以通过该框架实现。
2 背景
**信息抽取任务可以被转化成一个text-to-structure问题,就是从非结构化文本中识别相关信息并生成结构化输出,** 不同的信息抽取任务对应不同的结构化输出类型。构建一个统一的信息抽取框架有以下两个挑战,
a) 信息抽取任务的多样性带来的诸多不同需要抽取的目标结构,例如实体,关系,事件等等。
b) 信息抽取任务通常是针对特定需求的,使用不同的schema定义的,schema定义了具体的任务,包括任务类型,信息类型跟属性等等消息。
图1:特定信息抽取跟统一信息抽取框架的对比
3 UIE
UIE的输入跟跟输出都跟传统的信息抽取任务不同,输入是SSL+文本,输出是SEL,下面来具体看看它的输入跟输出都代表了什么。为了将不同的信息抽取任务结构转化成统一的表示,也就是将不同抽取任务的输出结构转化为统一的格式输出SEL,然后通过解析得到具体的信息,UIE将输出结构的生成分解为两个原子操作。
a) Spotting,标记来自原文的目标信息的片段,例如实体或者事件的触发词。
b) Associating,显示存在特定关系的不同信息片段之间的联系,例如不同实体之间的关系,或者事件跟角色的联系。
**具体的,UIE通过三种类型的语义单元来实现这种表述SEL,通过这种方式,可以实现用统一的原子结构生成操作来表示不同的信息抽取任务结构。这三种语义单元分别为:**
a) SpotName,显示存在原文中属于spot name这种类型的特定信息的片段。可以理解为实体类型或者事件类型,例如图2b中的person, start-position, organization。
b) AssoName,显示存在跟SpotName存在AssoName这种联系的信息片段的。可以理解为关系,例如图2b中的work for, employee, employer, time。
c) InfoSpan,跟上面这种语义单元关联的原文片段。其实就是以上两种语义单元的具体取值。例如图2b中的Steve, Apple, became, Steve, Apple,1997等。
图2: 结构化抽取语言的说明
通过SEL,即使不同的信息抽取任务,UIE也能生成统一的结构输出,但是 **由于不同的信息抽取任务有不同的schema,UIE模型需要根据不同的schema去抽取特定任务所需的信息。所以UIE通过prompt的方式去控制需要抽取的信息,具体做法就是在要抽取信息的原文前加入特定任务的schema,一同作为模型的输入。** 这样语言模型就能通过schema知道具体信息抽取任务要求,从而生成有效的结果。举个例子,一个普通的自我介绍里有包括名字,年龄,性别等信息,如果我的任务只需要抽取其中名字的信息,那么就需要在schema里定义好名字的模版,这样模型就只会抽取名字信息。
图3:UIE的整体架构
4 Pretrain
UIE选用了T5的模型结构并进行了参数初始化,为了让模型能够获得通用的信息抽取能力,需要做预训练,预训练目标包括以下几个部分。
a) Text-to-Structure
对于每一个pair(x,y),其中x是原文本,y是要抽取的信息结构。通过抽取y中的spot跟associating类型构造相应的正确的schema,同时自动构建错误的schema,让模型的encoder跟decoder根据原文本跟schema去生成相应的要抽取的信息结构y。这是最基本的一个训练目标,通过预训练让模型学到基本的text-to-structure映射能力,可以根据schema跟原文本去生成对应的需要抽取的信息结构。
-
b) Structure generation
这部分是让模型获得生成符合SEL跟schema的有效的信息结构y,从而保证模型能输出统一的结构,因而对模型的decoder做相应的预训练。
-
c) Retrofitting semantic representation
这部分是为了让整个模型学习到语言模型基本的能力,所以使用了掩码语言模型常用的训练目标。总的来说就是用打乱的原文本去预测打乱的目标问题。
**UIE的预训练目标函数就是上述三者之和。**
5 Finetune
**在完成UIE的预训练后,为了适配不同的信息抽取任务,需要对模型做进一步的微调。对于给定的标注语料{(s, x, y)},其中s是任务对应的schema,x是原文本,y是要抽取的信息结构,通过交叉熵损失优化模型,其实就是预训练任务的第一个训练目标。**
为了缓解解码过程自回归带来的曝光偏差(训练时解码接受的上一个时刻的输出都是正确的,但是推理时却有可能是错误的,这会导致训练跟推理的不一致), **UIE使用了一个拒绝机制,微调时对标准语料的y做了一定处理,从中插入了一些不相关的(SpotName, [Null])和(AssoName,[Null]),从而使得UIE可以通过生成[Null]去拒绝误导性的内容生成。**
图4: UIE微调时的拒绝机制示例
6 实验结果
- a) 在监督学习下,UIE在多个数据集上的效果都超越了当下的SOTA效果。
- b) 在few shot任务下,UIE的效果远超其他模型。
- c) 通过消融实验,可以看到预训练的三个目标函数都是不可或缺的。
d) 引入拒绝机制可以显著提升模型效果。
7 总结
UIE通过在文本前添加跟任务相关的schema,然后将信息抽取结果以结构化的SEL语言输出,从而将繁乱纷杂的信息抽取任务都归纳到一个模型框架中,又是大道至简。这种方式能够充分利用大规模预训练语言模型的能力,通过简单的schema可以适配到特定任务下,在很多信息抽取任务上取得不错效果,在few-shot任务上有明显的优势。
参考文献
1.(2022,) Unified Structure Generation for Universal Information Extraction
