平安人寿SemEval 冠军方案详解:基于长距离语义捕捉技术满分攻克关系抽取难题

近日,在全球权威NLP大赛SemEval-2020 中,平安人寿AI团队斩获自由文本信息抽取(DeftEval: Extracting term-defination pairs in free text)竞赛关系抽取赛道冠军。

该赛题任务包含了定义抽取、实体标注、关系抽取三项NLP技术难点。在比赛中,寿险AI团队围绕解决三个赛题子任务,提出了一整套信息抽取技术方案,综合运用联合训练框架、上下文实体定义位置捕获、数据增强等前沿技术手段,大幅提升算法模型对专业概念名词和复杂句式的理解和处理的能力,最终以满分成绩夺得关系抽取赛道排名第一

本文将对寿险AI团队的完整解题思路和技术细节进行详解。图1.1 平安人寿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模型结构设计

本次赛题的前两个任务是分类任务、序列标注任务,为了将两个任务特征信息进行互补,我们提出了多任务联合训练框架,将定义分类任务和实体标注任务进行联合训练,设计出比单个模型鲁棒性更强的集成模型,结构图如下所示:

图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]。

图2.2 关系抽取网络输入输出结构图输入编码除了包含新加的实体标注信息,类别标注信息,还包括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.

理论关系抽取语义捕捉平安人寿信息抽取
相关数据
学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

提升算法技术

Boosting是一种主要用于减少偏差的机器学习集成元算法,也是监督学习的一个变化,是一种将弱学习器转换为强学习器的机器学习算法家族。 Boosting是基于Kearns和Valiant(1988,1989)提出的问题:一组弱学习器能创造一个强大的学习器吗?一个弱的学习器被定义为一个分类器,它与真实的分类只有轻微的相关性(它可以比随机猜测更好地标注示例)。相反,强大的学习器是一个与真实分类任意相关的分类器。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

知识图谱技术

知识图谱本质上是语义网络,是一种基于图的数据结构,由节点(Point)和边(Edge)组成。在知识图谱里,每个节点表示现实世界中存在的“实体”,每条边为实体与实体之间的“关系”。知识图谱是关系的最有效的表示方式。通俗地讲,知识图谱就是把所有不同种类的信息(Heterogeneous Information)连接在一起而得到的一个关系网络。知识图谱提供了从“关系”的角度去分析问题的能力。 知识图谱这个概念最早由Google提出,主要是用来优化现有的搜索引擎。不同于基于关键词搜索的传统搜索引擎,知识图谱可用来更好地查询复杂的关联信息,从语义层面理解用户意图,改进搜索质量。比如在Google的搜索框里输入Bill Gates的时候,搜索结果页面的右侧还会出现Bill Gates相关的信息比如出生年月,家庭情况等等。

语料库技术

语料库一词在语言学上意指大量的文本,通常经过整理,具有既定格式与标记;事实上,语料库英文 "text corpus" 的涵意即为"body of text"。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

自然语言处理技术

自然语言处理(英语:natural language processing,缩写作 NLP)是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然语言;自然语言认知则是指让电脑“懂”人类的语言。自然语言生成系统把计算机数据转化为自然语言。自然语言理解系统把自然语言转化为计算机程序更易于处理的形式。

交叉验证技术

交叉验证,有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子集上做分析, 而其它子集则用来做后续对此分析的确认及验证。 一开始的子集被称为训练集。而其它的子集则被称为验证集或测试集。交叉验证的目标是定义一个数据集到“测试”的模型在训练阶段,以便减少像过拟合的问题,得到该模型将如何衍生到一个独立的数据集的提示。

文本挖掘技术

文本挖掘有时也被称为文字探勘、文本数据挖掘等,大致相当于文字分析,一般指文本处理过程中产生高质量的信息。高质量的信息通常通过分类和预测来产生,如模式识别。文本挖掘通常涉及输入文本的处理过程,产生结构化数据,并最终评价和解释输出。'高品质'的文本挖掘通常是指某种组合的相关性,新颖性和趣味性。

信息抽取技术

信息/数据抽取是指从非结构化或半结构化文档中提取结构化信息的技术。信息抽取有两部分:命名实体识别(目标是识别和分类真实世界里的知名实体)和关系提取(目标是提取实体之间的语义关系)。概率模型/分类器可以帮助实现这些任务。

平安人寿机构

中国平安人寿保险股份有限公司(以下简称“平安人寿”)成立于2002年,是中国平安保险(集团)股份有限公司旗下的重要成员。秉承平安集团“金融+科技”、“金融+生态”战略,平安人寿积极推进“科技+”,以人工智能和大数据为核心,推动智能化转型升级。在人工智能领域,专注于深度学习、自然语言处理、知识图谱、智能推荐、计算机视觉五大核心技术,聚焦招聘、培训、销售、服务、风控五大应用场景,自主研发多个业界领先AI应用,全面赋能百万级代理人、服务亿级寿险用户,并搭建完善AI平台体系,加快沉淀技术能力,构造寿险AI生态圈。

http://life.pingan.com/
句子分类技术

句子分类是文本分类的子任务,是指在句子层面的文本分类任务。

暂无评论
暂无评论~