该赛题任务包含了定义抽取、实体标注、关系抽取三项NLP技术难点。在比赛中,寿险AI团队围绕解决三个赛题子任务,提出了一整套信息抽取技术方案,综合运用联合训练框架、上下文实体定义位置捕获、数据增强等前沿技术手段,大幅提升算法模型对专业概念名词和复杂句式的理解和处理的能力,最终以满分成绩夺得关系抽取赛道排名第一。
本文将对寿险AI团队的完整解题思路和技术细节进行详解。
1、比赛介绍
1.1 背景简介
定义抽取是信息抽取的一个重要分支,是自然语言处理研究中的一个热门领域,其目的是识别非结构化文本中的术语及相应的定义。目前自由文本和半结构化文本中Term-Definition Pair的定义抽取是一个极具挑战性的领域。
1.2 赛题介绍
本次赛题旨在从DEFT语料库中提取术语定义对。该语料库包含了从cnx.org(课程资源平台)的各种专业教科书中提取出来的大约7000组句子集。每个句子集反映一个上下文窗口,原始文本的作者在该窗口周围标记一个黑体字以标示一个关键术语。每个分组可能有多个术语定义对,也可能没有术语定义对。其中Train和Dev数据都是以类似CONLL制表符的格式提供的。每一行代表一个token及其特性,每个句子之间用一个空行分隔,每个上下文窗口之间用两个空行分隔,每个token特性表示如下所示: [token][SOURCE][START_CHAR][END_CHAR][TAG][TAG_ID][ROOT_ID][RELATION]
其中:
SOURCE:表示摘录的原始txt文件。
START_CHAR / END_CHAR:表示token字符的开始、结束索引边界。
TAG:表示token的标签(B-[TAG]、I-[TAG]分别表示开始和中间标签,O表示不属于任务关系定义)。
TAG_ID:表示与此标记关联的ID(如果没有,则为0)。
ROOT_ID :表示与此关系的根相关联的ID(如果没有关系即TAG为O,则ROOT_ID为1;如果是根,则ROOT_ID为0;如果不是根,则ROOT_ID为根的TAG_ID)。
RELATION:表示token之间的TAG关系(如果没有,则为0)。
本次赛题主要包含三个子任务:
Subtask1: 句子分类任务,给定一个句子,对它是否包含定义进行分类,若包含定义则预测结果为1,否则为0,评价指标为F1值,这是传统的定义抽取任务。
Subtask2: 序列标注任务,根据语料库的标记规范,用BIO标记标注每个标记,即通过给定的token、SOURCE、START_CHAR 、END_CHAR信息,对TAG标签进行预测。该子任务中,预测的标记类别包括:术语(Term)、别名术语(Alias-Term)、引用术语(Referential-Term)、定义(Definition)、引用定义(Referential-Definition)和限定符(Qualifier)。评估指标基于macro-averaged F1。
Subtask3: 关系抽取任务,给定标记序列标签,根据语料库的关系规范标记每个标记之间的关系,即通过给定的token、SOURCE、START_CHAR 、END_CHAR、TAG、TAG_ID信息,对ROOT_ID 及RELATION进行预测。该子任务中,评价关系包括:直接定义(Direct-Defines)、间接定义(Indirect-Defines)、引用(Refers-To)、别名引用(AKA)和限定关系(Supplements)。评估指标基于macro-averaged F1。
1.3比赛挑战
本次比赛任务难度非常大,一方面数据集涉及生物、历史、物理、心理学、金融、社会、政治等非常多的专业领域的概念,很多的专业概念的理解对于人来说挑战都很大,需要具备深厚的知识背景;另一方面数据集句子句式非常复杂,存在大量排比、倒装、跨句指代、交叉引用、别名引用等复杂句式,而在实体的定义描述上存在直接定义、间接定义、补充定义、指代定义等多种关系。除此之外,部分数据集存在多重定义以及长距离的指代关系,同样一句话存在不同的实体标注和关系,当前讨论的实体在前文或者后文描述过,这些都对准确识别提出了很高的要求。
2、解决方案介绍
本次比赛,基于赛题任务的深度理解,平安人寿AI团队提出了一整套的解决方案,最终取得了关系抽取赛道第一名的成绩。
1、建模过程中,提出了多任务联合训练框架,设计出共享参数层,将多个任务的不同损失函数和评价指标融合在一起进行联合训练。
2、将底层BERT,ROBERTA,ALBERT,XLMROBERTA等基础模型交叉验证与最优寻参;最终产生20几个模型进行融合;并将结果当作CRF的输入,来学习到BIO序列标注的约束条件。
3、对BERT的输入进行改造,用以捕获长距离实体与定义之间的位置关系,并挖掘出了存在不同标注关系的句式结构,结合上下文实体信息对模型预测出来的结果做最后修正。
本次比赛定义抽取任务和实体序列标注任务在同一阶段进行,
关系抽取任务在第二阶段进行,因此我们分为两部分对比赛的技术细节进行阐述。
2.1 定义抽取及序列标注方案
2.1.1模型结构设计
本次赛题的前两个任务是分类任务、序列标注任务,为了将两个任务特征信息进行互补,我们提出了多任务联合训练框架,将定义分类任务和实体标注任务进行联合训练,设计出比单个模型鲁棒性更强的集成模型,结构图如下所示:
其中输入部分,分类任务的输入除了包含文本特性信息还包括实体抽取任务的标签,同理实体抽取任务的输入除了包含文本特性信息还包括分类任务的标签。然后经过多层transformers模型,将输入进行编码,得到每个token对应的embedding vector。共享参数层可以是BERT,XLNET,ALBERT,ROBERTA等预训练模型,如果基模型采用XLNET,这里就是经过多层transformers-xl模型,最后送入特定任务网络层。
对于实体标注任务,我们在最后一层使用CRF模型来学习序列间的约束信息,这些约束可以由CRF层在训练数据集自动学习。
我们通过对数据进行概率统计,得到转移矩阵如下:
B- Term | I- Term | B- Definition | I- Definition | O | … | |
B-Term | 0.01 | 0.72 | 0 | 0 | 0.2 | |
I- Term | 0.02 | 0 | 0 | 0.71 | 0.2 | |
B- Definition | 0.01 | 0 | 0 | 0.82 | 0.13 | |
I- Definition | 0.02 | 0 | 0.65 | 0 | 0.14 | |
O | … |
直观上来看,可以发现以下一些约束条件:
- 句子中第一个单词的标签应该是“B-[tag]”或“O”,而不是“I-[tag]”
- 一个实体信息的第一个标签应该“B-[tag]”而不是“I-[tag]”
- “B-tag1 I-tag2 I-tag3 …”中,tag1, tag2, tag3 …应该是相同的信息标签
2.1.2损失函数设计
联合训练的难点在于损失函数的设计,传统的方法基本有基于直接加和的方式,我们提出一种基于任务的不确定性去捕捉分类任务和序列标注问题的权重系数,从而解决两种任务不同的损失函数造成的不同的尺度问题。
2.1.3模型融合与调参
为了提升模型的泛化效果,解决数据偏少带来的过拟合问题,我们使用了多模型rank average的方案,将底层BERT,ROBERTA,ALBERT,XLMROBERTA等基础模型经过交叉验证与最优寻参产生20几个模型进行融合。最终输出定义抽取和实体标注的结果。
同时训练初期阶段,由于模型权重变化较大,为了避免模型过拟合现象,保持分布的平稳,训练初期暂时frozen某一任务权重,并减小另一个任务的学习率,调整warm-up比例。最终对比效果如下所示:
分类loss权重 | 0.5 | 0.74 | 0.85 | 0.82 | 0.83 |
实体标注loss权重 | 0.5 | 0.26 | 0.15 | 0.18 | 0.17 |
分类学习率 | 5e-5 | 5e-5 | 2e-5 | 1e-5 | 1e-5 |
实体标注学习率 | 5e-5 | 5e-5 | 2e-5 | 2e-5 | 1e-5 |
先训练分类任务 | ü | ||||
先训练实体标注任务 | ü | ü | ü | ü | |
Warmup | 0.1 | 0.1 | 0.15 | 0.15 | 0.15 |
实体标注任务(f1) | 0.6381 | 0.6509 | 0.6629 | 0.6695 | 0.6872 |
分类任务(f1) | 0.7578 | 0.7658 | 0.7815 | 0.7902 | 0.8001 |
2.2实体关系抽取方案
在关系抽取任务中,使用BERT,ROBERTA,XLNET作为基模型对关系抽取任务进行建模,再进行结果融合,我们以BERT为例,其网络输入输出格式如下图所示,为了捕捉到长距离实体与定义的位置信息,模型输入阶段,我们在实体与定义的前后插入特殊字符#,输入句子的构成设计为:[[CLS] sentence [#] definition1 [#]sentence [#] entity1 [#] sentence [#] entity2 [#] sentence]。
输入编码除了包含新加的实体标注信息,类别标注信息,还包括TAG_ID,输出等三部分特征,最终预测ROOT_ID和关系类别。
同时考虑到本次任务要考虑上下文信息,因此以文本窗口为单位进行扩充输入。
由于本次赛题句式比较复杂,很多句子实体关系都是跨句定义的,需要结合上下文信息进行判断预测,同时也存在一个相同的句子或句式结构对应不同的实体关系等问题,模型很难区分处理。因此,我们通过上下文实体标注及语法树分析对一些特殊情况ROOT_ID的预测进行修正,再通过BIO_TAG,TAG_ID和ROOT_ID来确定实体关系,需要注意的是同一个定义对应的关系会随着ROOT_ID的标注不同而随着变化。
2.3数据增强
另一个值得一提的小技巧是数据增强,提升模型的泛化效果,同时解决用于数据类别不均衡问题。在本赛题里,我们对于训练数据较少的标签,如Qualifier,Referential-Definition等进行了数据扩充,用到的方法包括基于词向量的同义词替换,单复数替换,代词替换等。通过一定的数据增强方法,使得模型在小类别样本上的泛化能力有一定的提升。
3、应用价值
平安人寿AI团队此次参赛所应用到的创新技术,在实际业务场景中,可支持保险信息抽取、保险实体识别、文本挖掘等技术应用,对搭建寿险垂直领域的知识图谱起到重要推动作用,能大幅提升对话式机器人的响应效率和服务体验。目前对话式机器人作为平安人寿智能转型的利器之一,在代理人赋能和客户服务两大业务体系中已大规模落地么,覆盖招聘、培训、销售支持、客服等业务场景,并将持续发挥价值。
Reference:
1 Kendall A , Gal Y , Cipolla R . Multi-Task Learning Using Uncertainty to Weigh Losses for Scene Geometry and Semantics[J]. 2017.
2 Wu S , He Y . Enriching Pre-trained Language Model with Entity Information for Relation Classification[J]. 2019.
3 Giorgi J , Wang X , Sahar N , et al. End-to-end Named Entity Recognition and Relation Extraction using Pre-trained Language Models[J]. 2019.
4 Soares L B , Fitzgerald N , Ling J , et al. Matching the Blanks: Distributional Similarity for Relation Learning[J]. 2019.
5 Sasha Spala, Nicholas A Miller, Yiming Yang, Franck Dernoncourt, Carl Dockhorn. DEFT: A corpus for definition extraction in free- and semi-structured text[J]. 2019. Association for Computational Linguistics
6 Fahmi, I., and Bouma, G.. Learning to identify definitions using syntactic features. In Proceedings of the Workshop on Learning Structured Information in Natural Language Applications[J]. 2006.