基于BERT-WWM预训练的跨文档三元组提取

2023-07-07 03:10
计算机应用与软件 2023年6期
关键词:三元组语料文档

章 振 增

(南威软件股份有限公司 福建 泉州 362000)

0 引 言

三元组信息抽取是知识图谱构建的关键问题之一。该任务的输入是篇章内容,输出是三元组(SPO)集合。SPO中的S、O可以视为实体抽取任务,P可以视为关系抽取任务,因此SPO三元组抽取可以视为对实体与关系抽取任务。

当前实体与关系抽取任务的主要技术思路有两种:流水线模型(Pipeline)和联合模型。流水线模型把实体与关系抽取分成两个子任务:实体识别和关系分类,两个子任务依次执行且二者之间没有交互。而联合抽取则把整个当成一个整体任务,目前针对实体与关系抽取任务的研究大多基于联合模型。联合模型主要是基于自然语言处理的深度学习方法,例如流行的Transfomer网络,包括BERT[1]、TransformerXL[2]、RoBERTa[3]、GPT[4]、MASS[5]和ELECTRA[6]等。这些模型使用多头注意力机制来捕获上下文关系,由于上下文信息的引入可以帮助这些模型消除歧义和加强分布式表示的内涵。此外迁移学习方法的引入,使得深度学习可以在现有模型基础上进行微调学习,增强了模型整体的收敛速度和准确度。

然而目前大多数实体关系抽取方法都是基于句子级处理,在实践中有大量的实体关系事实是以多个句子表达的,文档中的多个实体之间往往需要通过整篇文章才可能得以确定。也就是说模型不仅需要理解句子的信息,更需要综合整篇文章的信息才能准确推断实体类型以及实体间的关系。

目前在文档级的公开语料上,有国内研究机构发布了DocRED(Document-level Relation Extraction Dataset)[7]大规模文档级别信息抽取的数据集,该数据集结合Wikipedia的文章和Wikidata的结构化数据生成的,包含了5 053篇人工标注的文章,覆盖了132 375个实体、56 354种关系。然而该数据集是英文数据集,不是本文所研究范畴。为了获取中文跨文档三元组语料,本文尝试通过对Doc2EDAG[8]论文数据集(简称Doc2EDAG数据集)进行预处理,将其转化成本文实验所需的中文实体与关系抽取训练数据集进行实验分析。

1 相关工作

目前针对三元组SPO抽取任务的研究大多采用联合模型。而联合模型可分为基于参数共享和基于联合解码的联合模型。另外,解码方式对实体关系抽取性能的影响也很大,主要的解码方式有三种:基于序列标注、基于指针网络(PointerNet)和基于片段(Span)分类的方法。

联合解码的基于序列标注的经典模型有文献[9],通过{B,I,E,S,O}序列编码,把实体以及实体关系直接通过语料序列标注时就进行表示,然后使用RNN序列模型进行编码和解码。这种模型简单明了,也由此衍生出了许多变种的模型[10-11]。此外为解决实体重叠问题,有研究者提出了基于指针网络的编码模型[12],通过使用多个标签序列(多层label网络)来表示一个句子。基于片段(Span)分类的编码模型SpERT[13]通过找出所有可能的片段组合,然后针对每一个片段进行分类。

SpERT模型通过遍历生成所有可能片段进行训练导致其计算复杂度极高,此外它也无法解决跨文档实体与关系抽取问题。因此本文在SpERT模型基础之上,通过引入SPAN规则模型来生成片段减少复杂度,width embeddings更改为Rule Index Embedding以及引入上下文信息等来解决跨文档实体与关系抽取任务。

2 语料处理

Doc2EDAG数据集是金融领域事件抽取训练数据集,其中事件的论元分散于不同句子(Sentence)中。因此只需对数据集中标注的事件论元等进行相应的转换,即可得到本文所需的跨文档实体关系抽取语料数据集。

Doc2EDAG数据集的文本存储格式如图1所示,每个字段域的具体含义如下:sentences域存储原始文本数据,按句子分隔存储为数组;ann_valid_mspans域存储实体信息;ann_valid_dranges域存储实体位置信息;ann_mspan2dranges域存储实体位置信息;ann_mspan2guess_field域存储实体类别信息;recguid_eventname_eventdict_list域存储事件类型、事件元素信息。

图1 金融领域事件数据集实例

从上述信息格式分析可以看出,Doc2EDAG数据集中的实体已经有规范的边界定义,至于具体如何把语料中定义的事件信息转化为三元组SPO信息,首先得考虑知识图谱的最终应用上来定义和考虑。

三元组SPO抽取从知识图谱最终应用于逻辑推理角度上解释,这里S表示主体、O表示客体、P表示谓词。本文训练所构建的SPO数据集以篇章作为单位,实体为主体S与客体O,而P则是S与O之间的逻辑关系,它描述S与O之间的关系或属性不需要从语料中抽取。基于此分析可以将实体识别问题表述为实体e边界Ce=[estart,eend]检测与实体e类别Ce={None,S,O,SO}的分类问题,其中类别SO表示该实体ei在三元组中既可能充当S也可能充当O,类别None表示ei非三元组中的实体。

下面通过选取Doc2EDAG数据集中的EquityPledge事件来说明事件元素信息如何转换为对应SPO三元组信息。

如表1所示,EquityPledge事件规范元素有9项,部分元素的值为null。值为null部分也就是说实体不存在,转换时可以直接跳过。EquityPledge事件中Pledger元素项的值映射为SPO三元组中的类别为CPledger=S实体,PledgedShares元素项的值映射为SPO三元组中类别为CPledgerShares=SO实体,事件中其余元素的值分别映射为SPO三元组中的类别为Ce=O实体。其中EquityPledge事件谓词P的值为以下集合:

表1 EquityPledge事件

P={EquityPledge,Pledgee,…,TotalHoldingShares}

(1)

由以上映射关系定义可以最终得到如表2所示SPO三元组集合。

表2 SPO三元组数据

结合表1和表2可以看出PledgedShares项的值“28 000 000股”应标注为CPledgerShares=SO类别的实体,也就是说在三元组中既可能充当S也可能充当O。

同理,其他类型事件的元素也可以按照以上相似的方法进行映射,最终把Doc2EDAG数据集转换为跨文档三元组标注数据集。

3 模型结构

跨文档SPO三元组任务的抽取过程不仅需要考虑当前S、O实体所在句子上下文信息,同时也需要考虑文档的上下文。例如文档语料中的某段含有实体内容的句子“……将其持有的本公司限售流通股32 000 000股(占本公司总股份的6.43%)质押给……。……占公司总股本32.97%;累计质押本公司股份164 000 000股……”,从该文档中可看出其中的“1 640 000 00股”与“32 000 000股”为实体信息,但是哪个实体应该标注为“S”,哪个标注为“O”,需要将S、O实体所在句子以及文档上下文一起考虑,才能得出正确的结论。

因此只考虑句子级的三元组抽取无法满足实际需求,本文在借鉴SpERT网络思想基础上,构造了跨文档的三元组抽取模型。模型的整体架构如图2所示。

图2 实体分类与关系抽取模型

模型的整体结构可以分为四个部分:

(1) BERT-WWM预训练模型部分,该部分主要使用预训练模型来得到token以及句子的Embedding表示。

(2) Stacked Span Rule Detect模型部分,该部分主要用于Span候选集生成。它通过语料学习来生成Span规则,为后面的Span候选集生成提供规则模型。

(3) Span Classification模型部分,该部分主要完成对生成的Span候选集进行Ce={None,S,O,SO}分类的任务。

(4) P Classification模型部分,主要通过对Span Classification模型得到的标签为{S、SO、O}的Span进行排列组合得到候选集SOcandidate={(S1,O1),(S1,O2),…,(Si,Oj)},再对SOcandidate中每个元素进行谓词P的多分类任务。

3.1 Span候选集

深度学习中的文本标注语料,通过基于BIO/BILOU的标注模式来实现。该标注模式只为每个字符分配一个类别标注,导致对于实体堆叠的情况就无法标记而完成学习。为此当前研究者提出了多种学习方式来解决该问题,如指针网络、Span分类等技术。而SpERT模型是其中的代表模型之一,通过在模型中引入Span来联合学习。但是由于SpERT模型的Span生成方式导致Span候选集过于庞大使得后期计算极为复杂,虽然模型也引入了Span最大长度来合理削减负样本规模来解决部分问题,可是该方式对于长文本来说复杂度也极为复杂。

因此本文提出通过对语料的Span规则自动学习,实现Span候选集生成,而不需要去排列所有可能的token组合,使得Span候选集规模与句子的token长度比维持在接近1∶1的范围之内,极大减小候选集规模加快训练速度。接下来我们从Doc2EDAG数据集中抽取一篇文档来分析Span规则与候选集生成过程,具体如图3所示。

图3 Span候选集生成处理流程

假设从语料的sentences字段域中抽取出一句文本如下:

“截至2018年12月28日,中国宝安持有本公司股份126 163 313股,占本公司总股本的29.27%。”

从以上文本中可知它含有的实体信息有两项:实体1“126 163 313股”与实体2“29.27%”。如果单纯从实体所含字符长度分析,二者差异较大无法形成有效规则,因此需要通过其他方式来得到一个较稳定的符号特征模式来大体识别它们,这里通过采用词性特征分析来加以实现。首先使用Hanlp[14]中文分词工具对上文进行分词和词性标注,可得到如下内容:

“[截至/v, 2018/m, 年/qt, 12月/t, 28/m, 日/b, ,/w, 中国/ns, 宝安/ns, 持有/v, 本/rz, 公司/nis, 股份/n, 126163313/m, 股/q, ,/w, 占本/nr, 公司/nis, 总股本/nz, 的/ude1, 29.27/m, %/nx, 。/w]”

通过对比分词前后以及实体1和实体2,可以发现实体1由分词后的(126 163 313/m, 股/q)构成,实体2由分词后的(29.27/m, %/nx)构成,可发现这其中已经去除了实体长度因素的影响,并且由于分词器本身就隐式地引入了通用先验语言知识到本文模型之中。为了得到实体大范围的规则覆盖,本文通过把语料中只要出现的实体都形成规则,如(m,q)与(m,nx)词性的组合规则直接加入规则库,不考虑词性的组合频率等其他因素,具体的生成方式如下。

假设句子集S={s1,s2,…,sn},句子s1分词后得到的词集s1={w1,w2,…,wn}和对应的词性集POS1={pos1,pos2,…,posn},通过对比语料中每个实体e所对应的词wi对应词性posi,可得到如下规则集:

Rm={(pos1,pos2),(pos5,pos6),…,(pos7,pos8,…)}

(2)

根据规则集Rm,Span候选集生成伪代码如下:

for n=0 and n

for j=max_Length(Rm) and j>1:

if [posn:posn+j]in R:

SP.add([wn:wn+j])

j+=1

n+=1

for w in wi:

SP.add(w)

3.2 Span的编码与分类

Span会跨过多个token,假设训练最大字符长度为256,则每个token在经过Bert层后可以得到Embedding是{e0,e1,e2,…,e255},Span的Embedding特征可以通过它所含的多个token的Embedding进行Maxpooling计算f(ei,ei+1,…,ei+k)得到相同大小的Embedding表示。假设Span生成时使用规则编号为k,可以通过查询随机嵌入矩阵来得到它的Rule Index Embedding表示wk。Span的Embeddinge(s)可以表示如下:

(3)

Span所在的句子上下文特征Csent使用BERT-WWM层CLS标签所在token的Embedding表示,对于整篇文档的上下文特征Cdoc,通过对每一句的上下文特征Csent_n,使用Maxpooling算子得到。

最后用于Span分类层的输入特征,可以表示如下:

(4)

Span的输入向量xs,进分类层:

(5)

3.3 SPO分类层

Span经过分类后,可以对Span进行过滤,筛选出分类属于集合Cspan={S,O,SO}内的Span。对过滤后的Span类别为Cspan=(S,SO)的Span放入三元组SPO的Sspo,Cspan=(O,SO)放入三元组SPO的Ospo中。对Sspo与Ospo有序组合形成待分类SOij候选集。

SOij={(si,oj)|1≤i≤size(Sspo),1≤j≤size(Ospo)}

(6)

(7)

(8)

3.4 损失函数

L=Ls+Lp

(9)

式中:Ls和Lp分别表示Span分类的损失函数与(S,O)组合对的P分类损失函数。

4 实验与结果分析

4.1 实验设置

本文使用BERT-WWM[15]作为预训练模型,模型接收的最大字符序列长度max_seq_length设置为256,整体的学习率设置为0.001。

实体关系抽取子任务训练上,由于受Span分类任务的精确率、召回率影响,可能无法得到有效的(S,O)组合对数据进行实体关系抽取的训练任务,因此需要扩展关系抽取训练任务的数据。本文对(S,O)候选分类组合的训练数据主要通过如下三种方式生成:

1) 从Span分类正确且分类属于{S,O,SO}结果进行(S,O)全组合生成正样本数据。

2) 使用语料中标注为{S,O,SO}的Span数据进行(S,O)全组合,组合存在部分标注为P标签正样本,否则为负样本标注为None标签。

3) 使用Span分类错误的结果进行全匹配,生成标注None标签的负样本。

综上即可得到充分的用于关系抽取训练的数据。

4.2 基线模型和评价指标

本文是跨文档中文三元组信息抽取,当前还未有公开的基线模型,文本采用SO实体识别部分使用BERT+CRF模型,SO的P分类模型使用BERT得到S、O的字向量分别进行maxpool计算后等到Es、Eo,以及SO分别所在句的[CLS]标签作为句向量maxpool计算得到Econtext,再与Es、Eo拼接进入Softmax分类层进行分类。

模型的评价指标上,对于Span候选集生成只需要考虑覆盖率cov即可,cov计算公式如下:

cov=correctnum/entitynum

(10)

{S,O,SO}实体识别的评价指标使用精确率、召回率、F1值。其中精确率为预测准确实体个数与预测出的实体总数的比值:

precision=correctnum/predictnum

(11)

实体识别召回率为预测准确实体个数与样本总的实体总数的比值:

recall=correctnum/totalnum

(12)

(13)

(S,O)组合的谓词P分类部分只计算准确率:

SOAcc=CorrectLabelnum/TotalLabelnum

(14)

4.3 实验结果

将Doc2EDAG数据集转化为三元组数据集后,进行数据分析统计得到P谓词有20种(即实体关系有20种类别),测试集与训练集的数据量进行随机拆分,分别为3 204和2 5632篇文档。

其中数据集的句子长度分布,最大值832、最小值1、均值46个字符,核密度估计如图4所示。

图4 句子长度分布核密度估计

可以看出句子长度分布主要在0到200长度之间,max_seq_length设置为256是较为合适的,下文在针对不同max_seq_length模型实验中将详细分析。

训练集中所有的三元组S与O实体的长度分布、核密度估计如图5所示。

图5 实体长度分布核密度估计

实体长度分布最大41,最小2,平均7.8,中位数9.0,也就是说token之间有着较长的上下文依赖关系。

由于本文模型的实验指标有三项,其中Span候选集规则抽取部分基线模型不需要用到或者其他对比实验对模型该部分没有影响,因此后文主要对实体与关系识别进行对比分析。其中本文模型Span候选集规则抽取部分实验结果覆盖率cov为0.978,基本上可以满足模型后续候选实体的覆盖率训练要求。

针对不同的max_seq_length配置对于模型的影响实验结果如表3所示。

表3 不同max_seq_length三元组识别实验结果

可以看出max_seq_length越长模型识别效果越好,这主要是因为max_seq_length越长可以捕捉到更多的语义信息。但是对比长度128、256两个实验,可看出模型优化效果大幅降低,再结合图4分析max_seq_length设置为256是比较合适的超参设置。

接下来对不同预训练模型对整体模型性能的影响进行对比实验,实验结果如表4所示。

表4 不同预训练模型三元组识别实验结果

可以看出,BERT-WWM相比其他模型有着更好的效果,因此本文模型更适合使用BERT-WWM作为预训练模型。

最后对本文模型与基线模型进行对比实验,结果如表5所示。

表5 Doc2EDAG数据集三元组识别实验结果

可以看出本文模型相比BERT-CRF不论在实体识别还是关系抽取上都有显著的优势。

5 结 语

本文提出的基于Bert-WWM预训练的跨文档三元组提取模型,通过将SPO三元组抽取任务转化为SO的Span生成、Span分类、P分类任务来实现三元组抽取目标。本文模型在Doc2EDAG的语料实体关系识别部分明显优于基线模型,且支持跨文档的中文SPO抽取任务。

当然本文模型在召回率上有所欠缺,这与Span规则学习方式有关,后期可以通过引入通用实体标注语料进行规则的预学习,同时也可以引入特定领域词汇改进基础分词器的分词效果。这些可以一定程度上在不需要扩大Span候选集规模基础上,提高Span候选集的覆盖率。其次在模型的训练上,未来可以尝试引入其他更优秀的预训练模型。

猜你喜欢
三元组语料文档
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
特征标三元组的本原诱导子
关于余挠三元组的periodic-模
基于语料调查的“连……都(也)……”出现的语义背景分析
基于RI码计算的Word复制文档鉴别
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
基于三元组的扩频码构造及其性能分析
华语电影作为真实语料在翻译教学中的应用
《苗防备览》中的湘西语料