张一凡 聂铁铮 申德荣 寇 月 于 戈
(东北大学计算机科学与工程学院 沈阳 110169)
知识库的自动构建通常依赖于其下游任务,即命名实体识别和关系抽取[1]。在传统的方法中,流水线式的提取实体和关系是最常见的,分为两步来完成,第一步完成命名实体识别,第二步从命名实体识别的结果中进行关系分类,这是一个有顺序的过程。但是这种方式孤立了实体抽取和关系抽取两个子任务,忽略了两个步骤当中的联系,很容易传递错误信息[2]。
随着错误传递的弊病被暴露的愈发明显,近期的研究者们开始尝试使用联合抽取实体关系的方式来同时抽取实体和关系。最新的研究表明,实体和关系的信息在联合抽取方法中被有效的融合,使得两项工作都有更优的表现[3~4]。Zheng等[5]提出了一种统一标注方案,把实体关系联合抽取转化为序列标注问题。
然而,现有的多数研究方法都无法抽取同一实体对的多种关系以及同一句话中的多个关系的情况。这些方法默认在一句话或者一个实体对之间只有一个关系。Zeng等提出的方法[6]第一次考虑到了重叠三元组的问题,他们为不同的重叠三元组分了类别,并提出了一个序列到序列(seq2seq)的模型,该模型使用复制机制来提取三元组。图1展示了重叠三元组的类别,主要分为实体对重叠(EPO)和单实体重叠(SEO)两种。基于seq2seq模型,他们进一步研究了提取顺序对联合抽取的影响[7],并且通过强化学习得到了一个更优化的结果。Fu等[8]也通过基于图卷积网络(GCNS)的模型把文本建模成为关系图来解决重叠三元组问题。Wei等[9]提出了一个名为CASREL的框架,通过将句子中的主体映射到对象,来解决重叠三元组问题。
尽管上述方法都取得了一定程度上的效果,但是当相同的实体之间有多个关系时,分类器的效果不是很理想,在没有足够多的训练集的情况下,分类器几乎无法判断实体之间的关系。同时,序列标注的方式在抽取尾实体时没有充分利用头实体的语义,并且将抽取头尾实体看作两个相对独立的过程,没有充分的进行信息融合。此外,传统的信息融合方案,如简单的使用多信息相加、相乘等方式,常常忽略信息之间的方向性,而在关系三元组中,这种方向性却是一个重要的信息。以图1为例,(The United States,president,Trump)是一个正确的三元组,而(Trump,president,The United States)是一个错误的三元组,但是如果按照传统的信息融合方案来抽取关系,以上两种情况会得出同一个结果。多信息融合技术旨在使用CLN充分融合关系抽取过程当中的头实体语义,避免上述情况的出现。
图1 重叠三元组的两种情况
为了解决上述问题,本文提出了一个基于标签标注的联合实体关系抽取方法,通过特定于关系的标签fr( head)→tail,来抽取文本中存在的三元组关系,其中每个标签都是一个可能的尾实体,如果不存在当前关系,则返回NULL。本文参照了计算机视觉中信息融合方法Condition Batch Normalization(CBN)[10]启发,为了解决关系抽取方法在信息融合时无法体现融合信息之间的方向性的问题,文中提出了一个在自然语言处理过程中更加适用的方法:Conditional Layer Normalization(CLN)。类似于CBN中的做法,CLN通过控制BERT模型的权重参数,来控制模型的生成行为。
命名实体识别是自然语言处理的一个重要分支,是很多下游任务(如:机器翻译、信息提取等)的重要基础技术,同时也是人工智能的实用化转变的重要一环。
命名实体识别技术刚刚出现时大部分使用基于规则的方法。针对一些相对简单的情况,领域专家和一些语言学者费心费力的制定很多复杂的规则。通过这些规则,来完成识别过程。受到制定规则的复杂性的困扰,人们把目光转向了机器学习,让机器自行制定规则,主要有隐马尔科夫模型、条件随机场模型等。使用序列标注的方式给每个字和词打上标签的方式在此时兴起。这种方式的出现虽然大幅降低了人工成本,但是依旧需要领域研究者来手动筛选部分的语法特征。随着神经网络的出现,人们发现了在命名实体识别任务中解放人力成本的契机,因此使用神经网络方法完成命名实体识别引起了研究者们的广泛关注。Dong[11]等提出使用双向的BiLSTM同时结合CRF来进行中文命名实体识别任务。Ling[12]等通过注意力机制,关注了长文本的重要部分,提取局部特征,在BiLSTM基础上完成了识别任务。Yan[13]等进一步优化的命名实体识别任务的性能,同时改进了Transformer模型。
关系抽取通常是指关系三元组的抽取,当前热门研究方法主要分为两大类,即流水线式的管道抽取方式和联合实体关系抽取方式。
2.2.1 管道抽取方法
管道抽取方法是指分成两个独立的步骤来完成命名实体识别和关系抽取任务。管道抽取方法通常是先进行命名实体识别,使用命名实体识别的结果完成关系分类。这种方式孤立的两个子任务,并且按顺序完成,最终得到一个关系三元组结果。
单独讨论管道抽取方法的关系分类部分,目前对于关系分类的研究主要使用三类方式。第一种是基于特征向量的方式,这种方法通过对训练集进行语义特征的提取,然后再通过提取出的语义特征构建特征向量,最后使用支持向量机[14]、最大熵[15]等数学模型完成关系抽取。第二种是基于核函数的方法,这类方法通过探究句子的组成结构特点[16],定义对应的核函数来对比句子之间的相似性,并且根据这种相似性进行关系分类。第三种是基于神经网络的关系分类方法,主要通过一些神经网络的模型比如BiLSTM、BERT等模型,通过抽取句子级和单词级的特征,并且利用一些预训练的特性,来取得不错的性能。比如Att-BiLSTM模型使用双向LSTM来获取句子级特征,再利用注意力机制来获取单词级的特征,最终完成分类[17]。而一些其他方法利用BERT模型完成预训练[18],在原有的文本上加上位置标签来提高性能。
由于在管道抽取的方法中,关系分类十分依赖于命名实体识别的结果,并且命名实体识别和关系分类被独立为两个孤立的步骤,既无法体现两个子任务的相关性,同时也很容易造成误差传播。
2.2.2 联合抽取方法
联合抽取方法被提出用于解决在管道抽取方法中存在的误差传递以及相关性问题。
联合抽取方法在早期通过结构化的去学习制定好的人工特征的方式来完成抽取[2,19~20]。这种方式基于人工特征来学习,依然一定程度上依赖于人。在神经网络的发展初期,虽然可以规避依赖人工特征学习的方式来完成关系抽取,但是依然会使用一些特征生成工具(如POS标记器、依赖解析器)[21]。随着神经网络的发展不断完善,陆续有更完善的特征提取方法。一种基于递归神经网络的模型[22]在2016年被提出,通过共享命名实体系别和关系抽取参数的方式,加强了两个任务之间的相关性。这个方法将树形结构的BiLSTM-RNN叠加在顺序结构的BiLSTM-RNN上,获得了单词序列和依赖树的子结构信息。
随着预训练模型的兴起,研究者们的目光投向了一种新的联合抽取方法,即通过序列标注的方式来进行关系三元组抽取。Zheng等[5]的方法第一次使用序列标注的方式完成了关系三元组的抽取,他们的方法根据关系种类扩展了实体类型标签,完成了联合抽取的任务。
以上的处理方式,虽然既解决了管道抽取当中的两个问题,同时又不依赖于任何特征生成工具,但是仍然无法有效处理同样关系映射多个三元组的情况。
随着序列标注方法的发展,更多研究者使用分离模块的方式来完成实体识别和关系抽取两项工作。一种新的序列标注方法被提出[24],该方法分为两个模块:实体识别模块和关系分类模块。实体识别模块通过序列标注找出所有潜在的实体对,再通过关系分类模块识别出实体对之间的潜在关系。这个关系分类模块是一个三维的,并且可以与实体识别模块共享编码,进一步提高了性能表现。但是三维关系分类模块很复杂,导致模型很难达到收敛状态,并且有很大的内存开销。
从当前国内外的最新研究成果来看,基于联合抽取的方法,尤其是基于序列标注的联合抽取方法,已成为关系三元组抽取的主流方法,并在实际应用中取得了当前的最佳实验结果。
关系抽取(Relation Extraction)是知识图构建的一项重要任务。RE是指基于预定义的实体和关系类别,提取非结构化文本中包含的实体对之间的关系。一个实体对之间的关系可以形式化为一个三元组其中e1和e2分别为头实体和尾实体,r是两个实体之间的一种特定的关系。
在本文中,我们将关系抽取问题定义为一个序列标注问题:给定一个句子S,对于每一个可能的关 系 三 元 组( h,r,t),我 们 使 用 一 个 标 记p( ( h,r,t)|S)来表示所有可能出现的三元组情况,则此时有:
在式(1)中,我们使用了概率的链式法则,对于给定的头实体h,任何一个与h相关的关系都会对应一个尾实体t,如果在所有关系中h都没有对应的尾实体t,则返回一个NULL作为尾实体。序列标注任务的过程如图2所示。
这样做的好处是可以遍历每一个头实体和关系可能的组合,进一步可以解决所有类型的重叠三元组问题。在我们的方法中,每次抽取对应关系尾实体时,都会融合当前头实体的信息,以起到更有效的结果。例如图2中识别出的头实体New York City或De Blasio,在抽取尾实体时会融合他们的词嵌入来提高识别准确度。下一章节会详细介绍文中的方法。
图2 序列标注任务过程图
该方法的思想是使用两个级联步骤来提取三元组,首先对句子进行Bert编码,得到句子的上下文向量。然后对输入的句子进行线性变换,提取头实体。接下来检查所有可能的关系,提取尾实体。方法的实现主要分为两个部分:编码与头实体标记、关系与尾实体标记。整体结构如图3所示。
图3 模型整体架构图
BERT是一种多层双向Transformer模型,通常被用来生成每个单词的上下文深度表征。具体来说,它是由N个相同的Transformer块组成的,目前应在多个任务中取得了很明显的效果。
本文使用预先训练过的Bert模型[25],来编码上下文信息。我们是用Trans(x)表示Transformer块,具体操作如下:
其中E为输入句子中子词的one-hot矩阵[26],Ws为子词的词嵌入矩阵,Wp为位置嵌入矩阵,p表示输入中词的位置,hn为隐藏状态向量,即输入语句在第n层的上下文表示,N为Transformer块数。
此外,在关系抽取中,头尾实体应当被赋予不同的语义关系,为了充分区别头实体与尾实体的向量表示,文中加入了头实体和尾实体的线性变换层:
其中A和B为线性变换参数,hhead为变换后的头实体向量表示,尾实体使用同样方式,训练参数进行变换。
头实体标记使用两个相同的二进制分类器来预测头实体的开始位置和结束位置,每个标记可以被分配一个二进制标签(0或1)用于表示该位置是否为头实体的开始或结束位置。其中1表示当位置是一个实体的开始(结束)位置,0表示当前位置并非一个开始(结束)位置。底层标记模块通过Bert编码后的hhead向量来标记预测可能的所有头实体。标记过程如下:
对于多个头实体的情况,文中使用最近匹配原则,即将距离开始标记最近的结束标记匹配在一起。并且此处不考虑开始标记之前的结束标记,这种策略可以保证任意一个识别出的头实体的完整性,可以规避一些错误情况。
关系与尾实体标记阶段主要分为线性变换、通过CLN结合头实体编码、抽取关系和标记目标尾实体三个阶段。线性变换与头实体过程类似,此处不再赘述。
4.2.1 条件层归一化
LN(Layer Normalization),条件层归一化,此方法通过计算数据的均值和方差,将数据在神经网络架构中归一化。可以解决一定的梯度爆炸和梯度消失问题,同时还一定程度上可以加速收敛,其过程如下所示:
在上式中,x为预处理的数据,E[x]和Var[x]为预处理数据的均值和方差,分母是处理数据的标准差,其中添加一个ϵ用来规避当分母为0是的训练错误,γ和β是两个参加训练过程的参数向量,充当缩放和平移因子,形状与x相同。该过程如图4所示。
图4 层归一化结构图
借鉴于计算机视觉中常用的归一化方法Conditional Batch Normalization(CBN)[10]启发,文中提出了:Conditional Layer Normalization(CLN)条件层归一化,来完成自然语言处理过程当中的信息融合。CLN和CBN的做法类似,都是将归一化结构中对应的偏置和权重变成关于待融合条件的函数。CLN的具体计算方式如式(8)所示。
其中,S为输入CLN结构的特征信息,cβ和cγ分别为输入的两个待融合的条件信息。该过程如图5所示。
图5 条件层归一化结构图
从式(8)中可以看出,CLN通过两个不同的可训练权重W1和W2,将条件信息cγ和cβ映射到不同的空间以此体现记录条件的方向信息。
如图3所示,本模块利用CLN结构对头实体编码hhead和线性变换后的包含尾实体语义信息的编码htail进行信息融合,此过程如式(9)所示。
4.2.2 抽取关系和标记目标尾实体
我们在两个公共数据集NYT和WebNLG上评估了我们的方法。NYT数据集最初采用远程监督的方法生成。它由1180000个句子组成,有24种预定义的关系类型。WebNLG数据集最初是为自然语言生成(NLG)任务创建的,用于关系三元组抽取任务。包含246种预定义的关系类型。这两个数据集中的句子通常包含多个关系三元组。我们使用Zeng[6]发布的数据集,其中NYT包含56195个用于训练的句子,5000个用于验证的句子,5000个用于测试的句子,WebNLG包含5019个用于训练的句子,500个用于验证的句子,703个用于测试的句子。在此次实验中我们将句子分为Normal、EntityPairOverlap(EPO)和SingleEntityOverlap(SEO)三类,对不同类型的重叠关系三元组进行详细实验。数据集的统计数据如表1所示。
表1 NYT和WebNLG数据集的统计数据
在本次实验中,一些基本的超参数设置如下。预训练模型使用预训练过的BERT(BERT-Base,Cased),输入的最大句子长度设置为100,训练epoch设置为40,使用批量训练的方式,batch设置为6,损失函数采用二分类的交叉熵,同时为了防止出现过拟合的情况,当连续五个epoch没有任何改进时停止训练。
在本文中,我们使用精确值(Precision)、召回率(Recall)、F1值来评价最终的联合抽取结果。
精确值通过计算预测结果中为真的正例与整个预测结果数量的比值来求得。召回率通过计算预测结果中为真的正例与应该得到的所有正例的数量的比值来求得,用于衡量预测结果是否完备。
此外,本文还额外使用了F1值来当做评价指标,F1值是精确值和召回率的一个调和均值,通常是为了解决精确值和召回率出现矛盾的情况。在关系抽取问题中,为了综合考虑精确值和召回率,通常使用F1-measure方法来计算F1值,这样计算的F1值可以很好地反映关系抽取效果,即关系抽取的准确度。
为了验证本文方法(Ours Method)的性能,下面将本文的方法与其他几种目前表现最佳的算法作比较,分别是Zheng等提出的NovelTagging[5],Zeng等提出的CopyR[6],Fu等提出的GraphRel[8],Zeng等提出的CopyRRL[7]和Wei等提出的CASREL[9]。此处为了获得更好的性能,我们使用了预训练的BERT模型。此外,为了证明文中提出的改进是有效的,我们做了消融实验。其中Ours Method(without CLN)为没有使用CLN信息融合的方法;Ours Method(without distinguish)为头实体和尾实体没有区分语义的方法。
表2展示了对NYT和WebNLG两个数据集进行关系抽取的不同方法的结果。其中我们的方法(Ours Method)在所有三个评价指标均高于其他方法。在没有CLN的情况下(Ours Method without CLN),本文的方法并没有另外一种序列标注算法CASREL效果更佳,进一步表明CLN对于关系抽取的积极作用;同时,可以看出,在没有充分区分头尾实体的语义时,对于模型提升有限,文中对于头尾实体的语义区分使用的是简单的线性变换方式,后续可以使用更加复杂有效的方式,充分区分头尾实体,这也是未来我们努力的方向。
表2 在NYT和WebNLG数据集上各个方法的实验结果
为了进一步研究我们的方法在提取重叠三元组方面的效果,我们对不同类型的句子进行了扩展实验,并同样与其他方法进行了对比。图6展示了各个方法从在普通情况下、EPO情况下和SEO情况下的F1得分。大多数方法在普通情况、EPO情况、SEO情况上的性能呈下降趋势,这反映了从不同重叠模式的句子中提取关系三元组的难度在增加。也就是说,普通情况是最简单的情况,而EPO和SEO情况是相对比较困难的情况。同时可以看出,CASREL方法,在抽取重叠模式的句子时也有很好的性能,因为它同样采用了序列标注的方式,而文中的方法由于融合了CLN,拥有最好的性能,这说明CLN不但可以很好地融合信息,而且在改进F1得分方面也有很大的作用。
图6 从不同重叠模式的句子中提取关系三元组的F1得分
在本文中,我们提出了一种新的级联关系三元组抽取方法,其将联合关系抽取任务转化为了一个二元的序列标注任务,并且提出了一个多信息融合方法:条件层归一化(Conditional Layer Normalization),该方法可以很好地融合不同实体对之间的方向性。在实验中,误差值被放大和分类不均匀的问题在二元序列标注的关系抽取方法中被体现出来。同时在处理过程中,头尾实体语义区分方式过于简单也是待解决的问题。这将是我们进一步改进模型的方向。