《Span-Based Joint Entity and Relation Extraction with Transformer Pre-Training》阅读笔记

代码
原文地址
预备知识:
1.什么是束搜索算法(beam search)?
beam search是一种用于许多自然语言处理和语音识别模型的算法,作为最终决策层,用于在给定目标变量(如最大概率或下一个输出字符)的情况下选择最佳输出
2.什么是条件随机场(Conditional Random Field ,CRF)?
CRF是一类统计建模方法,通常应用于模式识别和机器学习,并用于结构化预测 。分类器预测单个样本的标签时不考虑"邻近"样本,而CRF可以考虑上下文
3.ELMo模型是如何工作的?
与Glove和Word2Vec不同,ELMo使用包含该单词的完整句子来表示单词的嵌入 。因此,ELMo嵌入能够捕获句子中使用的单词的上下文,并且可以为不同句子中不同上下文中使用的同一单词生成不同的嵌入
本文提出了SpERT,它是一种基于跨度的联合实体和关系抽取的注意力模型。该模型的核心思想是在BERT嵌入上进行轻量级的推理,实现实体识别和过滤,以及使用局部的、无标记的上下文表示的关系分类。为了提高模型的泛化能力,该模型使用强大的句内负样本进行训练,这些负样本可以在单个BERT通道中高效地提取。这些方面促进了对句子中所有跨度的搜索。在消融实验中,本文展示了预训练、强负采样和本地化上下文对模型性能的提升作用。本文的模型在多个数据集上的联合实体和关系抽取任务上,显著超过了以前的工作,达到了2.6%的F1分数的提升。
1 INTRODUCTION
BERT、GPT、TransformerXL、RoBERTa和MASS等Transformer网络,近期在NLP研究领域引起了强烈关注。这些模型利用多头自注意力机制作为捕捉词之间交互的关键机制,从而生成能够消歧同音异义词并表达语义和句法模式的上下文敏感嵌入。Transformer网络通常在大规模文档集合上使用语言建模目标进行预训练,然后将预训练的模型迁移到有相对较少监督训练数据的目标任务上,从而在许多NLP任务中取得最先进的性能,例如问答或情境情感检测。
本文探讨了Transformer网络在关系抽取中的应用。关系抽取的任务是给定一组预定义的目标关系和一个句子,例如"Leonardo DiCaprio starred in Christopher Nolan's thriller Inception",抽取出诸如("Leonardo DiCaprio", Plays-In, "Inception")或("Inception", Director, "Christopher Nolan")这样的三元组。该任务包括两个子问题,即实体识别和关系分类 。虽然常见的方法分别处理这两个问题,但最近的工作使用联合模型同时进行两个步骤。这种联合方法很有潜力,因为一方面,实体的知识(例如"Leonardo DiCaprio"是一个人)对于选择关系是有意义的,而另一方面,关系的知识(Director)对于识别实体是有用的。
本文提出了一个基于Transformer网络BERT的联合实体和关系抽取模型,并且命名为 SpERT 。本文采用了基于跨度的方法:任何词的子序列(或跨度)都构成一个潜在的实体,而任何两个跨度之间都可能存在关系。本文的模型对所有这些假设进行了全面的搜索。 与基于BIO/BILOU标签的先前工作不同,基于跨度的方法可以识别重叠的实体,例如"codeine intoxication"中的"codeine"。由于Transformer模型如BERT在计算上很昂贵,本文的方法只对每个输入句子进行一次前向传播,并对得到的嵌入进行轻量级的推理。与其他最近的方法相比,本文的模型具有更简单的下游处理,使用浅层的实体/关系分类器。本文使用了没有特殊标记的局部上下文表示,并在单个BERT通道中从同一句子中抽取负样本。这些方面有助于实现高效的训练和对所有跨度的全面搜索。
2 RELATED WORK
传统方法:分别使用一个模型来检测实体和分类关系,这些方法都假设实体已经被预先标注。(Transformer在关系分类中的应用:对输入文本进行一次编码,然后对编码后的嵌入进行分类。)
本文的方法:同时检测实体和关系,而不需要标注实体
Joint Entity and Relation Extraction
实体和关系的联合抽取是从非结构化文本中同时检测实体提及并识别它们的语义关系的任务 。大多数现有的方法通过序列到序列的学习 来检测实体,即使用BIO或BILOU方案给每个词分配一个标签,表示它是否属于某个实体类型
Miwa和SasakiGupta等人将联合实体和关系抽取视为一个表格填充问题。在这种方法中,每个单元格对应于句子中的一个词对,对角线的单元格用BILOU标签表示实体,非对角线的单元格用关系类型表示实体对之间的关系。关系类型是通过将实体的最后一个词映射到一个预定义的关系集合来预测的。表格是用一个评分函数来填充的,该函数基于多个特征,如词性标签和实体标签。然后使用束搜索来找到一个最优的表格填充方案,即最能表示句子中的实体和关系的方案。
Miwa和Bansal提出了一个联合实体和关系抽取的堆叠模型 。它由两个部分组成:一个双向顺序LSTM用BILOU方案标记实体,一个双向树形RNN根据实体对的依存分析树预测关系类型。Zhou等人采用了一个基于BILOU的双向LSTM和CNN的组合,从输入句子中提取高层特征表示。该方法只对最可能的关系进行命名实体抽取,因此预测的标签数量较少。Zheng等人先用双向LSTM编码输入词,再用另一个LSTM输出实体边界(类似于BILOU方案)和关系类型。该方法未考虑一个实体与多个其他实体相关的情况。Bekoulis等人也用双向LSTM编码句子中的每个词,但使用了字符嵌入和Word2Vec嵌入作为输入表示。他们用条件随机场(CRF)提取实体边界和标签,并能检测单个实体与多个其他实体相关的情况。
Nguyen和Verspoor提出了一个基于BiLSTM-CRF的模型来进行实体识别,将注意力机制 应用于联合模型中,它将token表示与关系分类任务共享,并学习了BILOU实体标签的嵌入。在关系分类中,他们使用了一个双仿射注意力层来处理实体之间的交互。Chi等人也使用了类似的BiLSTM表示,他们用BIO标签检测实体,并在训练中加入了一个辅助语言建模目标。关系分类器则关注BiLSTM编码。然而,这两项工作都没有使用Transformer类型的网络。
与本文的工作更接近的是Li等人的最新方法,他们也将BERT作为核心模型,并使用了一个问答框架 ,其中利用实体和关系特定的问题来引导模型找到头实体和尾实体。该模型需要手动定义每个关系的(伪)问题模板,例如"找到一个属于<?>的武器"。他们根据BERT嵌入,用BILOU类型的标签按关系方式检测实体。与这种方法不同的是,本文的模型不需要明确地制定问题。而且,本文的方法是基于跨度的,而不是基于BILOU的
Span-based Approaches
由于基于BIO/BILOU的模型只给每个token分配一个标签,所以一个token不能同时属于多个实体,这样就无法处理重叠(通常是嵌套)的实体 。例如,在这句话"福特的芝加哥工厂雇佣了4,000名工人"中,"芝加哥"和"芝加哥工厂"都是实体。为了解决这个问题,一些研究者提出了基于跨度的方法,它们对所有可能的跨度进行搜索,并能够覆盖重叠的实体。这种方法在一些任务上有很好的表现,比如共指消解 、语义角色标注 ,以及通过学习预测跨度而不是单个词来改进语言建模。
最近,一些基于跨度的模型也用于联合实体和关系抽取,它们使用从BiLSTM和连接的ELMo、词和字符嵌入中派生的跨度表示,并在下游任务中共享这些表示。Dixit和Al-Onaizan关注联合实体和关系抽取,Luan等人在假设空间上进行了一次beam搜索,估计哪些跨度参与了实体类别、关系和共指。Luan等人的后续模型DyGIE增加了一个图传播步骤来捕捉跨度的交互。他们构建了一个动态跨度图,其中嵌入使用学习的门控机制进行传播。利用这种跨度表示的改进,他们展示了进一步的改进。最近,Wadden等人的DyGIE++用BERT替换了BiLSTM编码器。DyGIE++是目前唯一基于Transformer的跨度方法,用于联合实体和关系抽取。与DyGIE和DyGIE++不同,本文的模型使用了一个更简单的下游处理,省略了任何图传播,使用浅层实体和关系分类器。相反,本文发现本地化的上下文表示和强负采样是至关重要的。本文在实验部分包括了与DyGIE++的定量比较。
3 APPROACH


本文的模型基于预训练的BERT模型 ,如图1所示。首先,对输入句子进行分词,得到n个字节对编码(BPE)token [28]。BPE token是一种将不常见的词分解为常见的子词(如treehouse分解为tree和house)的方法,这样可以减少词汇表的大小,同时处理词汇表外的词。然后,将BPE token输入BERT,得到一个长度为n+1的嵌入序列,其中最后一个token 是一个特殊的分类器token,用于捕获整个句子的上下文信息。接下来,在所有token子序列(或跨度)中检测实体,而不是像经典的关系分类那样只检测预定义的实体。例如,token序列(we,will,rock,you)对应的跨度有(we),(we,will),(will,rock,you)等。本文将每个跨度分类为一个实体类型,并过滤掉非实体的跨度。最后,将剩余的实体跨度两两组合,分类为一个关系类型。
(a) Span Classification
本文的跨度分类器可以输入任意的候选跨度。令表示这样一个跨度,其中 是第 i 个词的嵌入。另外,假设是一个预定义的实体类别集合,例如人名或组织名。跨度分类器的目的是将跨度映射到中的一个类别,其中 表示不构成实体的跨度。
跨度分类器的细节在图1的虚线框中展示(见步骤(a))。它的输入由三部分组成:
(1)跨度的BERT嵌入(红色),它是通过一个融合函数得到的。关于融合函数,本文发现最大池化效果最好,但本文也会在实验中探索其他选项。
(2)跨度的宽度嵌入(蓝色),它是从一个专用的嵌入矩阵中查找的,该矩阵包含每个跨度宽度 1, 2, ...的固定大小的嵌入。这些嵌入通过反向传播进行学习,并且使模型能够融入对跨度宽度的先验(注意,过长的跨度不太可能表示实体)。 这产生了以下跨度表示(◦表示向量连接):

(3)分类器token (图1,绿色),它表示整个句子(或上下文)。上下文是消歧的重要来源,因为关键词(如 spouse 或 says)是实体类别(如 person)的强指示器。
这三部分通过向量连接(◦)得到跨度分类器的最终输入:

然后,这个输入被送入一个 softmax 分类器,得到每个实体类别(包括 none)的后验概率 :

(b) Span Filtering
本文采用了一种简单的方法来识别实体,即利用跨度分类器的输出(公式 3)根据得分最高的类别判断每个跨度的类别,并且过滤掉所有属于类别的跨度,得到一组候选的实体跨度。与之前的工作不同,本文没有对实体/关系假设进行束搜索,而是直接剔除了长度超过 10 个词的跨度,从而降低了跨度分类的计算复杂度为
(c) Relation Classification
定义 是一组预定义的关系类别。关系分类器处理每一对从中抽取的实体候选对,并估计是否存在中的某种关系。分类器的输入由两部分组成:
(1)为了表示两个实体候选,本文使用融合了 BERT/width 嵌入的(公式 1)。
(2)本文发现不适合用于表达多种关系的长句,因此使用一种更加局部化的上下文,即从实体的直接周围抽取:给定从第一个实体的结尾到第二个实体的开头的跨度 (图 1,黄色),通过最大池化合并它们,得到该表示 。如果范围为空(例如,实体重叠的情况),设置
就像对跨度分类器一样,关系分类器的输入是通过连接上述特征得到的。由于关系通常是不对称的,需要对都进行分类,即输入变为:

都通过一个单层分类器:

其中表示一个大小为的 sigmoid 函数。sigmoid 层中的任何高响应都表明相应的关系在之间成立。给定一个置信度阈值,任何得分的关系都被认为是激活的。如果没有激活的关系,那么句子被认为没有表达两个实体之间的已知关系。
3.1 Training
本文学习大小嵌入(图1中的蓝色部分)和跨度/关系分类器的参数(),并在此过程中对BERT进行微调。本文的训练是有监督的:给定一个带有实体(包括其类型)和关系标注的句子,并定义了一个用于实体分类和关系分类的联合损失函数:

其中,是跨度分类器的损失(对实体类别(包括无)的交叉熵),是关系分类器的损失(对关系类别的二元交叉熵)。两个损失都是对每个批次中的样本进行平均,不使用类权重。一个训练批次由B个句子组成,从中为两个分类器抽取样本:
(1)对于跨度分类器,将所有标注的实体作为正样本,再加上固定数量的随机非实体跨度作为负样本。
(2)对于关系分类器,将真实的关系作为正样本,并从那些没有标注任何关系的实体对中抽取个负样本。例如,给定一个句子,其中有两个关系("玛吉",母亲,"巴特")和("巴特",老师,"斯金纳"),未连接的实体对("玛吉",*,"斯金纳")就是任何关系的负样本。
本文只运行一次BERT(单通道),没有生成分散在多个句子中的样本,因为这样需要将所有这些句子都通过深而昂贵的BERT模型。这样,多个正/负样本就通过一个单一的浅线性层,分别用于实体和关系分类器,从而大大加快了训练过程。
4 EXPERIMENTS
实验评估基于如下三个数据集:
(1)CoNLL04
CoNLL04数据集由新闻文章中的句子组成。这些句子涉及到四种实体类型(Location, Organization, People, Other)和五种关系类型(Work-For, Kill, OrganizationBased-In, Live-In, Located-In)。本文按照Gupta等人的方法,将1153句作为训练集,288句作为测试集,同时从训练集中随机抽取20%作为开发集,用于超参数的调优。
(2)SciERC
SciERC来源于500篇人工智能论文摘要 。该数据集包括6个科学实体(Task、Method、Metric、Material、Other-Scientific-Term、Generic)和7个关系类型(Compare、connection、Evaluate-For、Used-For、FeatureOf、Part-Of、hyponym_of),共计2687个句子。本文使用1861个句子用于训练、275个句子用于开发和551个句子用于测试。
(3)ADE
ADE数据集由从描述药物使用不良反应的医学报告中提取的4,272个句子和6,821个关系组成。它包含一个关系类型Adverse-Effect和两个实体类型Adverse-Effect和Drug。与之前的工作一样,本文进行了10倍交叉验证。
本文对SpERT模型在实体识别和关系提取两个任务上的性能进行了评价,根据实体的预测范围和类型是否与真实值一致来判断实体的正确性,根据关系的预测类型以及两个相关实体的正确性(在范围和类型上)来判断关系的正确性。在SciERC数据集上,本文不考虑实体类型的正确性来评价关系提取,这与之前的工作保持一致。本文计算了每种实体和关系类型的精确度、召回率和F1分数,并报告了ADE数据集的宏平均值和SciERC数据集的微平均值。对于ADE数据集,F1分数是各个折叠的平均值。在CoNLL04数据集上,本文同时报告了F1分数的微平均值和宏平均值,与之前的工作一致。
在大多数实验中,本文使用作为句子编码器,它是在英语语料上预训练的。在SciERC数据集上,用替换了BERT,它是一个在大规模科学论文语料上预训练的BERT模型,与DyGIE++相同。BERT(或SciBERT)的权重在训练过程中被更新。本文用正态分布的随机数()初始化分类器的权重。本文使用Adam优化器,带有线性预热和线性衰减的学习率计划,峰值学习率为5e−5,在实体和关系分类器之前使用0.1的丢弃率,批量大小为,宽度嵌入为25维。这些参数没有进行进一步的优化。根据CoNLL04开发集选择了训练轮数(20)、关系过滤阈值(),以及每个句子的负实体和关系样本数()。本文没有针对另外两个数据集特别调整模型,而是使用了相同的超参数。
4.1 Comparison with state of the art


表1显示了三个数据集的测试集评估结果的平均值,每个数据集运行了5次。SpERT在所有数据集的实体和关系提取任务上都优于最先进的技术。虽然实体识别性能分别提高了1.1% (CoNLL04)、2.8% (SciERC)和2.1% (ADE) F1,但观察到关系提取的性能提高更明显:与Li等人的"多回合QA"模型相比,他们也使用BERT作为句子编码器,但采用BILOU方法进行实体提取,本文的模型将CoNLL04数据集的最新技术提高了2.6%(微)F1。在具有挑战性和特定领域的SciERC数据集上,使用SciBERT作为句子编码器,SpERT比Wadden等的DyGIE++模型高出约2.4%。当使用BERT代替时,性能下降了4.4%,证实了域内语言模型预训练的重要性,这与Wadden等人的研究结果一致。虽然在SciERC之前的工作中没有考虑实体类型来提取关系,但本文报告了这些值作为未来工作的参考(使用SciBERT的精度为40.51,召回率为36.82,F1为38.57)。
在ADE数据集上,与Tran和Kavuluru的"关系-度量"模型相比,SpERT实现了约2%的改进(表1中的SpERT(无重叠))F1。值得注意的是,ADE还包含了120个具有重叠实体的关系实例,这些实例可以通过基于span的方法(如SpERT)发现,而基于BILOU的模型则无法处理。这些实例在之前的工作中已经被过滤掉了。作为未来重叠实体识别工作的参考,本文还提供了完整数据集(包括重叠实体)的结果。当面对这个额外的挑战时,本文的模型的表现只有轻微的下降(- 0.4%)。在120个有重叠实体的关系中,65个被正确检测(≈54%)。表4(顶部)给出了SpERT正确预测的重叠实体之间关系的示例。
4.2 Candidate selection and negative sampling

本文探讨了负训练样本的数量和抽样方式对模型性能的影响。图2展示了CoNLL04和SciERC开发集上的F1分数(关系和实体),按照每个句子的负样本比例Ne/Nr绘制。可以发现,负样本的数量对于模型性能是至关重要的:当每个句子只使用一个负实体和一个负关系()时,关系F1只有10.5% (CoNLL04)和9.7% (SciERC)。当负样本的数量增加时,两个数据集的性能都趋于饱和。然而,当足够大时,本文模型的结果更加稳健(在所有其他实验中设置)。
对于关系分类,本文还比较了使用弱负样本和强负样本的效果:强负样本是指使用实体分类器过滤实体候选,并从中抽取与真实关系不匹配的跨度对;弱负样本是指不进行跨度过滤,而是随机抽取跨度对,不考虑它们是否与真实关系匹配。使用弱负样本时,本文的模型在CoNLL04开发集上的召回率仍然很高(84.4%),但是精度却降到了4.3%。并且,使用弱负样本时,模型倾向于预测实体的子跨度是相关的:例如,在句子"[John Wilkes Booth]head, who assassinated [President Lincoln]tail, was an actor"中,模型会选择("John","President") 或 ("Wilkes", "Lincoln")作为关系对。此外,模型也会偏好一个实体正确而另一个实体错误的配对。因此,跨度过滤不仅可以提高训练和评估的速度,也可以提高SpERT中的定位精度。
4.3 Localized context

尽管使用LSTM或注意力机制可以检测远距离关系,但随着上下文长度的增加,噪声也会增加,这对模型性能是一个挑战。为了解决这个问题,本文使用了局部上下文,即只考虑候选实体之间的上下文,这样关系分类器就可以关注句子中最能区分关系类型的部分
为了评估局部上下文的效果,将其与使用整个句子的另外两种上下文表示进行了比较:
(1)完整上下文:不是对候选实体之间的上下文进行最大池化,而是对整个句子的所有词进行最大池化。
(2)Cls token:就像在实体分类器中一样(图1,绿色),使用一个特殊的分类器token为上下文,它可以关注整个句子。
本文在CoNLL04开发集上评估了这三种选项(图3):当使用SpERT模型并采用局部上下文时,模型达到了71.0%的F1分数,显著优于使用完整上下文的最大池化(65.8%)和使用Cls token(63.9%)。
图3还展示了不同句子长度的结果:本文将CoNLL04开发集按照句子中的词数分成了四个部分,即<20、20−34、35−50和>50。结果表明,对于所有长度的句子,特别是非常长的句子,局部上下文都能取得相同或更好的效果:在这里,它达到了57.3%的F1分数,而使用其他选项时,性能急剧下降到44.9/38.5%。表4(中间)给出了一个包含多个实体的长句子的例子:通过使用局部上下文,模型正确地预测了三个located-in关系,而使用完整上下文时,会产生许多错误的关系,例如("Jackson",located-in,"Colo.")或("Wyo.",located-in,"麦卡伦")。这说明引导模型关注输入句子的相关部分是非常重要的。一个未来的工作方向是学习与实体候选相关的上下文,并将预先计算的语法信息融合到SpERT模型中。
4.4 Pre-training and entity representation


在大规模数据集上进行预训练可以帮助模型学习目标数据集难以捕捉的语义和句法关系,这是一种直观的假设。为了验证这一点,本文测试了三种不同的预训练方式:
(1)使用完全预训练的BERT模型,即包括语言建模预训练,这是默认设置。
(2)保留预训练的token嵌入,但重新训练BERT的层,使用默认的初始化方法。
(3)重新训练BERT的层和token嵌入,同样使用默认的初始化方法。
表2展示了在CoNLL04数据集上使用不同预训练方式的实体和关系提取的性能,以(宏观)F1为指标。从表中可以看出,重新训练BERT的层会导致实体和关系提取的性能分别下降约17.0%和29.4%。如果同时重新训练token嵌入,性能的下降幅度会更大
这些结果说明,在较小的联合实体和关系提取数据集上,预训练像BERT这样的大型网络是非常困难的。因此,语言建模预训练对于模型的泛化能力和竞争力是至关重要的。
最后,本文探索了不同的实体跨度表示的方法,即不使用最大池化对实体token进行聚合,而是使用求和池化或平均池化(注意,为了得到最终的实体表示,还要将大小嵌入和上下文表示连接起来,如公式1所示)。表3展示了在CoNLL04数据集上使用不同的实体表示方法的实体和关系提取的性能,以(宏观)F1为指标。对实体token进行平均池化不适合实体(69.2%)和关系提取(44.8%)。使用求和池化可以将性能提升到80.3/68.2%。然而,使用最大池化的性能分别比这高出3.8%和2.8%。
4.5 Error inspection
尽管SpERT在联合实体和关系提取任务上取得了令人印象深刻的结果,但本文也发现了一些常见的错误类型,这些错误为未来的研究提供了改进的空间。表4(底部)展示了本文在评估数据集中发现的五种典型的错误示例:
(1)一个常见的错误来源是对实体跨度的不准确预测,例如,添加了多余的单词或遗漏了标注的单词。这种错误在领域特定的ADE和SciERC数据集中尤其频繁。
(2)另一个常见的错误是预测了两个实体之间的关系(这里是Work-For),根据实体类型("Yevhen Saburov", a person, and "Black Sea Fleet", an employer)他们可能是相关的,但是在句子中是不相关的。
(3)一个关系没有在句子中明确地表达,但可以根据上下文逻辑地推理出来。在这个例子中,没有明确地说"Linda Schmitt"是"Becton Dickinson"的产品经理,但由于她代表公司发言,这一点可以推断出来。
(4)在一些罕见的情况下(特别是在SciERC数据集中),SpERT正确地预测了两个相关的实体,但分配了错误的关系类型。
(5)在某些情况下,正确的预测没有在基本事实中标注。在这里,除了正确地预测("Norton Winfried Simon",Live-In,"Portland, Ore.")之外,SpERT还输出了("Norton Winfried Simon",Live-In,"San Francisco"),这也是正确的,但没有被标记。
5 CONCLUSIONS

本文提出了SpERT,一个基于跨度的联合实体和关系提取模型,它利用预训练的Transformer网络BERT作为其基础。本文证明了,在输入句子的所有跨度上进行搜索是可行的,只要采用强负采样、跨域过滤和本地化上下文表示。实验结果表明,基于跨度的方法不仅与基于bilou的模型相媲美,而且由于能够识别重叠实体,更具有未来研究的潜力。
在未来的工作中,本文打算为关系分类器探索更细粒度的上下文形式。目前,本文的模型仅仅使用了两个实体之间的跨度,这已经显示出它比使用整个句子的模型更优。如何在保证高效的穷举搜索的前提下,引入额外的语法特征或学习的上下文,是一个有趣的挑战。