祝振赫,武 虹,高 洁,周 玉
(1.中国科学院大学 人工智能学院,北京 100049;2.中国科协创新战略研究院,北京 100038;3.中国科学院自动化研究所 模式识别国家重点实验室,北京 100190;4.北京中科凡语科技有限公司 凡语AI研究院,北京 100190)
随着互联网、大数据和知识图谱等技术的发展,各行各业都在构建自己的知识库,以便为下游的问答、摘要等应用提供知识的支持。文本作为重要的信息载体,包含了大量丰富的知识,如百科介绍、医院病例、企业标书等,都包含了丰富的内容,具有重要的应用价值。但由于没有统一规范化的写作标准,导致内容形式多种多样且多为非结构化或半结构化文本,为整理统计的工作带来很大的挑战,并难以直接应用于下游任务中。如何从这类非结构化文本中获取蕴含的知识成为了一项重要的研究课题。信息抽取(Information Extraction,IE)是自然语言处理领域中一个非常重要的任务。该任务主要是从非结构化或半结构化文本中抽取出用户所需要的信息,如命名实体、实体关系及事件等,并以结构化的形式输出,以便于支持下游任务的应用[1]。
关系抽取(Relation Extraction,RE)作为信息抽取的主要子任务之一,主要目标是从非结构化文本中抽取出有关的两个实体及实体间的关系,构成关系三元组的结构化形式。通常形式化描述为
基于传统的机器学习的关系抽取方法主要通过领域专家制定实体关系范式,通过统计和规则等方法进行抽取。Miller等人[3]通过训练增强解析树来表示句子的语义信息,再对不同关系类型设计模式匹配规则来进行抽取。Zelenko等人[4]用核函数及支持向量机的方法进行关系抽取。传统的关系抽取方法具有准确率高的优点,当文本满足规则条件后,就能够抽取出想要的信息。但传统的关系抽取方法依赖人工设计特征和抽取规则,需要大量成本,并难以覆盖所有情况,因此该方法的泛化能力较差。
随着深度学习的兴起,大量的深度学习方法被应用到了关系抽取中。许多经典的关系抽取方法都是使用监督学习来获得较好的性能表现,因为监督学习能够更有效地让模型抽取到特征,从而提高准确率和召回率。但是在一些特定领域,由于难以获取大规模标注数据,导致监督学习的成本大大增加,在应用中通常使用基于启发式规则的无监督方法和远程监督等半监督方法。
网络中的文本形式多样,许多的半结构化文本都包含着一定的实体和关系的知识。如百科类网页大多都详细介绍了一个实体的信息,通常都包含关于该实体的一段描述及其基本信息表。基本信息表一般被称为Infobox,其中包含了许多和该实体有关的属性和其他实体。这种半结构化文本也经常作为构建知识图谱和远程监督实体关系抽取数据集的直接数据来源[5]。许多基于远程监督的实体关系抽取方法都通过Infobox构建的知识图谱来实现。如百度百科“战狼”页面的基本信息中的句子“《战狼》是由吴京执导的现代军事战争片,该片由吴京、余男、倪大红、斯科特·阿金斯、周晓鸥等主演”,可以和Infobox中的“导演:吴京”条目构成一个实体关系抽取任务的标签数据,原句的一个实体关系元组为<战狼,导演,吴京>。像这种从表格文本以及通过句法规则获取的实体关系三元组都包含了一定的内在知识,如何利用这些内在知识对于实体关系联合抽取十分重要。
该文提出一种基于深度学习的融合外部知识的生成式实体关系联合抽取方法,对于一些难以获取大规模标注数据的特定领域,通过在训练时引入一些典型规则所抽取的结果作为额外知识帮助模型从文本中抽取到更准确全面的信息。模型采用多编码器框架,采用知识自注意力机制对外部知识进行编码。在解码过程中,采用跨知识注意力方法,融合知识编码器的隐层向量得到解码隐层状态,进而生成实体和关系序列。实验结果表明,所提方法能够通过融合外部知识,提升实体关系三元组的准确率,尤其提升模型在标注数据稀缺场景下的抽取准确率。
关系抽取任务从领域上可分为限定域关系抽取和开放域关系抽取,其区别在于是否对关系类别进行制定。限定域关系抽取需要事先确定关系类别,而开放域关系抽取的关系直接从原文本中抽取获得。限定域关系抽取的优势是所抽取的关系明确,但是无法抽取到所制定关系类别以外的关系。开放域关系抽取能够抽取到更多的关系类别,但经常会抽取到不准确或无意义的关系。
基于深度学习的关系抽取方法主要分为流水线(Pipeline)式抽取方法和联合(Joint)式抽取方法两种。流水线式方法一般是先对文本进行命名实体识别,找出文本中所有的命名实体,然后再将这些命名实体两两配对进行关系分类。这种流水线抽取方法通常用于限定域关系抽取,其关系预测阶段是一个多分类任务,所以无法抽取到定义好的关系以外的其他关系。并且由于分成了两个任务,在实体识别时往往会依赖其他自然语言处理工具,从而导致误差传播的问题,对模型性能会造成一定的影响。当时普遍认为流水线抽取方法不如联合抽取方法好,但Zhong等人[6]在流水线模型的基础上使用了一种简单的方法就达到了当时的最好性能。他们在实体识别结束后对原句进行重构,将抽取到的头尾实体及其类别信息加入到句子当中,然后进行关系分类的判别。可见在关系抽取时引入额外信息有助于模型的学习。联合抽取方法是同时完成实体和实体间关系的抽取任务,通过利用实体和关系的关联信息来提高模型性能[7]。Wei等人[8]用多任务学习的方式,让实体和关系共享一个编码器(Encoder),再由两个解码器(Decoder)分别解码得到实体和关系。Zheng等人[9]将实体关系联合抽取任务转换为序列标注任务,使用BIO(B-begin,I-inside,O-outside)序列标注的方法对三元组进行整体建模,通过端到端模型对句子进行编码后预测每个单词所属标签类别,将临近的头尾实体及关系合并为需要抽取的三元组,取得了不错效果。但这种序列标注的方法无法处理实体嵌套的问题。Li等人[10]则是将联合关系抽取任务转换成多轮问答任务,通过在输入中加入问题来引入实体关系信息,再由模型预测出答案,即文本中能够作为答案片段的起始结束位置。Cui等人[11]采用序列到序列(Sequence-to-Sequence,Seq2Seq)模型,将实体关系标记作为单词加入词典,通过编码器对文本进行编码,再由解码器直接解码输出带有实体关系标记的三元组文本序列。
该文提出一种基于Seq2Seq的融合知识的多源关系抽取方法,通过引入规则抽取的三元组作为额外提示信息,帮助模型从文本中抽取出更准确全面的实体关系三元组。该方法能够有效利用规则知识,对于领域的迁移性较强,对于缺乏标注数据的领域,只需要利用简单的领域知识来制定一些典型规则进行抽取,抽取结果即可作为额外知识辅助模型,从而达到比直接使用Seq2Seq模型和单靠规则抽取都要好的效果,减少了人工定制复杂规则的成本。
采用类似Cui等人[11]的方法,输入为一段文本和使用规则抽取出的关系元组文本,关系元组通过表示实体和关系的特殊字符进行标记后拼接成字符串,比如“ ”。模型通过对文本和关系元组信息进行预测得到的所有可能三元组,并以相同方式将所有预测关系三元组进行拼接作为一个字符串输出。
该文所面对的从网页文本中抽取所有可能实体关系这一任务的整体架构如图1所示。输入为来自网页的原始文本,通过预处理操作去除非正文等噪声信息,得到纯文本后使用基于领域知识制定的简单规则对文本进行关系抽取,得到后续作为提示信息的三元组,并用特殊字符标识拼接为字符序列。然后用编码器-解码器模型对文本和根据规则抽取得到的三元组字符串进行预测,输出所有可能关系元组构成的字符序列。
图1 多源关系抽取方法整体架构
对于百科类的文本使用Infobox等结构化文本匹配和基于依存句法分析的模式匹配规则进行抽取。利用哈工大语言技术平台(Language Technology Platform,LTP)对文本进行依存句法分析,然后选取Jia等人[12]提出的依存语义范式进行关系抽取。对于类似企业标书等特殊文体的文本,则依据领域知识采用正则表达式、关键字匹配以及表格解析等方法进行抽取。将得到的实体对及实体间关系用特殊字符标记后组成一个形如“ ”的字符串。其中“”中间的为头实体,“”中间的是尾实体,“”之间的是头尾实体间关系。
该文将上述方法抽取得到的实体关系元组信息作为每个句子的局部知识,利用知识编码器学习背后的模式、规则等全局知识来指导模型抽取,从而提高实体关系联合抽取的准确率。
基础模型选用的是经典的Seq2Seq模型Transformer[13],在其原有架构上进行改动,以引入额外知识。在其原有编码器的基础上再增加一个知识编码器,同样使用自注意力机制对引入的知识进行编码,从而获得文本中的局部知识信息。将文本编码和知识编码一同送入解码器中。在解码器增加一个解码知识的注意力层,用于解码出更类似引入知识的三元组,从而达到对知识的学习。模型结构如图2所示。
图2 多源关系抽取模型结构
2.4.1 知识提取器
面对特定领域的具体任务,首先利用相关领域知识构建一个知识提取器,作为该领域全局知识。知识提取器通过使用规则从文本中抽取实体关系元组以及根据表格信息匹配对应句子等方法获取和该句子有关的局部知识,作为输入模型的额外知识信息。
2.4.2 文本编码器
输入为句子X=(x1,x2,…,xn),通过词嵌入和位置编码操作后得到句子嵌入EX=(ex1,ex2,…,exn)。输入文本编码器后得到输入句子的上下文向量HX=(hx1,hx2,…,hxn)
HX=TextEncoder(EX)
(1)
2.4.3 知识编码器
对知识提取器得到的和句子相关的知识进行特殊标记处理拼接后形成知识序列K=(k1,k2,…,km),通过词嵌入和位置编码操作得到知识嵌入EK=(ek1,ek2,…,ekm)。输入知识编码器后得到知识的上下文向量HK=(hk1,hk2,…,hkm)
HK=KnowledgeEncoder(EK)
(2)
2.4.4 解码器
在解码阶段首先将目标三元组序列T=(t1,t2,…,ts)作为解码器的输入,同样经过词嵌入和位置编码后得到目标元组序列嵌入ET=(et1,et2,…,ets)。在注意力层将ET经过自注意力机制得到的目标序列隐层状态HT先后与HX和HK计算交叉注意力,得到融合知识后的解码器输出的隐层状态HO。
HT=SelfAttention(ET)
(3)
HTX=CrossAttention(HT,HX)
(4)
HO=CrossAttention(HK,HTX)
(5)
其中,HTX为解码器输入的上下文向量和编码器输入的三元组上下文向量做交叉注意力所得到的包含目标三元组和输入三元组注意力的上下文向量。
将HO经过线形层和softmax计算得到输出单词的概率P:
P=softmax(WlHO)
(6)
其中,Wl为线性层的权重矩阵。
最后根据词表输出生成的序列Y=(y1,y2,…,yn)。
首先使用纯文本和所有抽取出的实体关系三元组作为编码器和解码器的输入单独训练一个Transformer模型并在训练好之后将各层参数固定。再用纯文本和部分抽取实体作为模型编码器输入,所有实体关系三元组作为解码器输入进行训练,训练过程中仅更新知识编码器以及目标三元组和知识交叉注意力模块的参数。
目标函数如公式(7)所示,根据给定输入句子X、外部知识K以及用标注数据训练得到的Transformer参数θX来生成目标序列Y,采用最大似然估计,提升真实样本Y的似然概率。
(7)
其中,θK为知识编码器和知识交叉注意力层的参数。θx为其余参数,D={(X,Y)}表示监督数据集,其中X为句子序列,Y为实体-关系序列,K为全局知识图谱,Kx为与句子相关的局部知识图谱。M为实体-关系序列Y的字符个数。y3 实验部分
3.1 数据集
Seq2Seq模型的一个优点是比较灵活,能够通过对生成序列进行特殊构造来完成多种不同的任务。因此,该文分别在开放域和限定域两个数据集上进行实验。
实验所使用的两个数据集,一个是通用百科领域的数据集SpanSAOKE,由Lyu等[14]制作,处理后包含26 481个中文句子以及53 774个实体关系三元组。其数据来源为百度发布的符号辅助开放知识表达(Symbolic Aided Open Knowledge Expression,SAOKE)[15]数据集。该数据集是中文开放域信息抽取的大规模句子级数据集,其中每个句子都是人工标记的,并采用统一的知识表示格式来表达句子中所包含的事实。
另一个是采招网(https://www.bidcenter.com.cn/)上的标书网页文本共获取了20 951篇,经过去除HTML标签、JavaScript、CSS等代码文本以及特殊符号等数据清洗处理后得到仅包含正文的标书文本。根据需求及对标书格式的认知制定一系列规则对标书内容进行抽取,实体类别包括招标方名称、供应商名称、招标代理机构名称、预算金额、产品名称等24种类别。按模型设定的256最大文本长度进行切分后得到总计71 695份原文本和事实元组的句对。将数据集划分为训练集、验证集和测试集,见表1。
表1 数据集统计信息
其中,SpanSAOKE为开放域关系抽取数据集,不限制关系类别,关系均从原文中抽取得到。Bid-Docs为爬取的标书文本数据集。训练集和验证集为通过复杂的网页爬取规则进行自动化标注,测试集为自动标注后进行人工校验得到。由于该数据集比较特殊,以标书本身为头实体,只抽取关系和对应尾实体,因此标注时使用特殊字符“”标注关系,“”标注尾实体。
实验使用F1值作为评价指标并采用涂飞明等人[16]在实验中所用的两种计算方式,一个是完全匹配(Exact Match,EM),对于抽取出的关系三元组,只有当预测的头实体、尾实体及实体间关系完全和标准答案相同时才算是一个正确的抽取结果。另一个是最长公共子串(Longest Common Substring,LCS),下面为具体计算方法:
考虑到模型生成多个三元组的数量和顺序不固定,因此先对答案和预测结果的三元组序列按三元组拆分后进行排序。对于答案中的每一个三元组,使用LCS长度在预测结果中找到其关联性最高的三元组,找到的所有三元组按答案顺序拼接,预测中多余的三元组直接按原顺序拼接在后面,形成和答案最相近的序列。然后以新得到的序列和标准答案三元组序列求出二者的最长公共子串LCS,然后用LCS的长度作为预测正确的序列长度,分别与预测结果序列长度和标准答案序列长度计算精确率P和召回率R,最后利用公式(8)计算F1值。这两种计算方法分别反映了模型预测结果的精确匹配度和模糊匹配度。在计算LCS时去掉了“”等用于表示头尾实体及关系的特殊符号。
(8)
使用EM指标时的精确率P和召回率R的计算公式分别为:
(9)
(10)
其中,TC为预测正确的三元组数量,TP为预测三元组总数量,TG为标准答案三元组总数量。
使用LCS指标时的精确率P和召回率R的计算公式分别为:
(11)
(12)
其中,LLCS为预测结果序列和标准答案序列的LCS的长度,LP为预测序列长度,LG为标准答案序列长度。
操作系统是Ubuntu16.04.7,编程语言为Python3.7,深度学习框架为Pytorch1.8.1,句子最大长度设定为256,知识编码器以及知识交叉注意力层和Transformer的编码器及解码器一样为6层,多头注意力的头数为8个。
融合知识的关系抽取方法在SpanSAOKE和从网页获取的标书文本两个数据集上的实验结果分别如表2和表3所示,其中Transformer为基于注意力机制的Seq2Seq模型,使用自注意力机制的编码器对输入文本进行编码,再通过自回归的解码器解码出目标序列。MGD-GNN[14]是一个基于字符级的流水线式开放域关系抽取模型,通过构建单词和字符之间的依赖关系图来引入依存句法信息以及分词信息,利用图神经网络对其进行编码得到最终每个字符的表示,然后分别预测每个连续字符子序列为关系的概率,最后为每个得到的关系预测其对应的头尾实体。KGMS为文中模型。由于标书数据集比较特殊,只抽取关系和尾实体的二元组,因此现有关系抽取方法不太适用,故只和未融合知识的Transformer进行比较。
表2 SpanSAOKE实验结果
表3 标书文本实验结果
在SpanSAOKE数据集上,相比之下MGD-GNN因为是对句子的每个连续字符子序列进行预测,所以抽取到了最多的关系元组,具有最高的召回率。但其预测正确的元组数量没有KGMS所抽取的多,并且对于没有完全匹配的关系元组,KGMS也得到了更接近答案的结果。由此可见,KGMS在抽取时参考了输入元组所包含的规则信息,使得抽取更具有针对性,从而提高了完全匹配的精确率和召回率。
在标书文本上,KGMS在引入知识信息后性能有所提升,但整体表现都不好,分析可能是因为网页标书格式比较多样,且有一些表格,导致爬取后的数据十分杂乱,且难以通过预处理进行修整。由于标书文本形式比较特殊,默认将标书题目作为所有要抽取的关系元组的头实体,在抽取时仅抽取定义的关系及对应尾实体。很多时候定义的关系并未出现在原文中,需要模型根据上下文来判断实体所属类型,而上下文信息又往往比较零碎,严重影响了模型的特征提取。
Text:网游公司的地推人员通常分为两类:一类是正式招聘,多为大学生;
Gold:<地推人员,分为,两类><一类,是,正式招聘><地推人员,多为,大学生>
Pattern Matching:<地推人员,多为,大学生><网游公司地推人员,分为,两类>
Transformer:<网游公司的地推人员,通常分为,两类><一类,是,正式招聘><多,为,大学生>
MGD-GNN:<网游公司的地推人员,通常分为,两类><一类,是,正式招聘><网游公司的地推人员,多为,大学生>
KGMS:<地推人员,多为,大学生><地推人员,分为,两类><网游公司推司,分为,两类>
如上所示,相比之下Transformer和MGD-GNN所抽取的实体都包含了修饰语,而从标准答案来看显然是不希望修饰语出现的。Pattern Matching为通过规则获取的作为额外知识的三元组。其中包含了有修饰语和无修饰语的实体,使得KGMS在引入知识后尝试将两种类型都抽取出来。但由于Pattern Matching没有关于“一类是正式招聘”,从而导致KGMS忽略了这部分。由此可说明引入的知识对实体关系抽取有比较大的影响,可以通过对额外知识的设计,引入更多更符合需求的知识来对模型的抽取行为进行引导,从而提升模型的性能。
该文提出了一种融合外部知识的实体关系联合抽取方法,采用多编码和知识注意力机制,将句法结构和结构化信息等外部知识融入编码解码框架的模型来生成实体和关系序列,从而提高模型的准确率。实验结果显示,在开放域和限定域的数据集上的表现均有所提升,可以提升抽取准确率。对于一些标注数据稀缺场景是有效的提升方法,同时规则的制定可以让模型更好地具有领域适应性。在今后的工作中将使用预训练模型作为基础模型,并构建更完善的数据集来探究该方法。