DeepEventMine: end-to-end neural nested event extraction from biomedical texts
DeepEventMine:利用端到端神经网络从生物医学文本进行嵌套事件提取
今天分享一篇,在2020年12月份发表在Bioinformatics (IF:5.610)上利用端到端神经网络从生物医学文本进行嵌套事件提取的文章。该工具的代码: https://github.com/aistairc/DeepEventMine.
1 Introduction
生物医学信息分散在大量的文献中,因此需要自然语言处理(NLP)技术来提取这些底层信息,而减少人工操作部分。生物医学信息提取(IE)技术已经得到了广泛的研究,在这些研究中,从文本中提取实体之间的事件被认为是最重要的任务之一。事件结构是揭示基础知识和捕获非结构化文本中描述生物过程的关键。事件捕获实体(如蛋白质和基因)及其属性(如位置和位点)之间的动态n元关系。它们可以促进诸如信息检索等实际应用的发展。事件由一个触发器和零个或多个参数组成(在本工作中,所有的目标事件都有触发器)。触发器是一种文本提及,它表示在文本中出现了一个事件。每一个参数要么是一个实体,要么是一个事件,并且可以用来描述对事件的贡献。如果一个事件的参数中有其他事件时,则该事件被称为嵌套事件(nested event),而当一个事件的参数中只有实体时,被称为扁平事件(flat event)。图1展示了平面和嵌套事件以及嵌套触发器和实体的示例。图1展示了平面和嵌套事件以及嵌套触发器和实体的示例。在这个例子中有一个平面事件Cell transformation (' transformed ')。扁平事件有一个来自细胞实体(‘erythroid cells’)[红血球]的主题参数。(Positive regulation)正向调节(' transformed ')是第1级的嵌套事件(我们定义了嵌套事件的k级。K = 1表示事件在其参数中有平面事件,K = 2表示事件至少有一个1级嵌套事件作为其参数)。以细胞转化事件为主题,以生物体实体(“erbA/myb IRES”)为原因。在这个例子中,有两个触发器共享相同的' transformed '文本跨度。我们将这些触发器称为嵌套触发器,它允许我们处理由同一短语指示的多个事件。类似地,这个例子也涉及到嵌套或重叠的实体;有机体实体包含两个GGP(Gene or gene product)实体(' erbA '和' myb ')。嵌套事件具有这种复杂的模式,允许多重、重叠、有向无环图(DAG)结构,因为它们对于深入理解经常出现在生物医学等科学和技术领域的以压缩格式编写的文本至关重要。
图 1
绿色和橙色表示实体,而红色是事件触发器,如erbA, erythroid cells是两个实体,transformed是一个触发器。蓝色连接表示参数对触发器的作用,其中参数可以是实体或触发器。事件结构是由事件触发器及其参数构造的。扁平事件(flat event),即转化的红细胞(transformed erythroid cells),只有一个实体作为参数。嵌套事件(nested event),erbA/myb IRES transformed erythroid cells,有实体erbA/myb IRES作为原因, 平扁平事件(flat event) transformed erythroid cells作为参数。嵌套事件是一棵树,其根是红色矩形(Positive regulation),蓝色连接到它的实体参数(Organism)和它的扁平事件参数(transformed erythroid cells)。
许多神经模型已经被提出用于事件提取,并显示出比传统的基于特征的模型产生更好的结果。但是,在一般领域中,大多数工作都是在平面实体上提取平面事件。此外,大多数事件提取模型假设实体已经给定,所以我们需要在从原始文本中提取事件之前准备一个外部命名实体识别器。这将导致实体-事件管道中潜在的错误传播,这需要额外的调优。特别是当参数实体是嵌套的时候,我们还需要考虑嵌套命名实体识别器。虽然有一些端到端(end-to-end)模型在平面实体上提取平面事件时,这些模型都不能处理可能与事件触发器进一步重叠的嵌套实体上的嵌套事件。在大规模语料库上预先训练的深度模型在几个自然语言处理任务上取得了令人印象深刻的结果。这些模型包括来自语言模型的嵌入(ELMo),OpenAI生成预训练(GPT),以及 (BERT)。高性能的NLP系统是通过在这些模型上叠加简单的特定任务体系结构进行构建。这类模型还有助于对事件等复杂结构进行建模。以往的平面事件提取神经模型主要集中在事件触发和参数检测方面。他们假设实体是给定的,因此,需要一个单独的实体识别模块来从纯文本中提取事件。
我们提出了一种新的神经模型,名为DeepEventMine,该模型以端到端(end-to-end)方式从句子中提取嵌套事件。我们建立了一个相对简单但具有代表性的模型来捕获嵌套的事件结构,依赖于BERT的高度表达能力。与这些现有的模型不同,我们的模型不依赖于任何外部语法工具,这允许我们的模型应用到几个领域。我们对SciBERT模型进行了微调,该模型是用大规模生物医学和计算机科学文本预先训练的,同时训练事件提取模型。我们在7个生物医学嵌套事件提取数据集上评估了我们的模型:Cancer Genetics 2013, Epigenetics and Post-translational Modifications 2011, GENIA 2011, GENIA 2013, Infectious Diseases 2011, Pathway Curation 2013和Multi-Level event extraction。端到端(end-to-end)训练使得模型更注重事件检测而不是管道训练。因此,当给定标准(手动注释)实体时,我们的模型在所有七个任务的测试集上都达到了最新水平(SOTA)。
2 Related work
深度神经网络包括循环神经网络和卷积神经网络(CNNs)提高了事件提取性能,这些模型表现出比传统手工制作的基于特征的方法更好的性能。
以往的平面事件提取神经模型主要集中在事件触发和参数检测方面,他们假设实体是给定的,因此,需要一个单独的实体识别模块来从纯文本中提取事件。由于事件模型和实体检测之间的独立性,两者之间不存在信息共享。Nguyen引入了一种利用双向循环神经网络的端到端神经模型,他们解决了实体检测的独立问题[Nguyen T.M. , Nguyen T.H. (2019) One for all: Neural joint modeling of entities and events. In: Proceedings of AAAI. Association for the Advancement of Artificial Intelligence. Hawaii.]。但是,它们只提取具有平面实体参数的平面事件,并依赖于几个语法特征,因此应用程序仅限于通用领域,不能应用于生物医学事件提取任务。同时,我们的模型可以同时处理扁平实体和嵌套实体,并且它独立于外部语法工具。
与平面事件提取相反,研究嵌套事件检测的尝试较少。系统通过处理四个连续的子任务来执行事件提取:检测实体/触发器、关系、事件和事件修饰符。所有模块共享一个统一的句子表示,这是基于一个CNN。他们的方法依赖句法信息,例如词性标签和依赖关系,来对句子进行编码。此外,由于独立检测,忽略了实体、关系和事件之间的依赖关系。相比之下,我们的模型支持子任务之间共享的丰富语义表示,错误可以通过整个任务序列解决。
3 DeepEventMine
我们的DeepEventMine模型由四个层组成:BERT层、实体/触发器层、角色层和事件层。我们在图2中演示了模型的概述。如图所示,构建在BERT层输出上的文本跨越表示由后续层共享和更新。
图 2
该图省略了隐藏层。我们使用图1中的示例来展示我们的方法。由于空间限制,我们省略了一些不重要的标记。我们使用缩写来表示触发器和实体,例如:CTrans, PReg分别代表Cell Transformation和Positive Regulation触发器,Org和GGP分别代表有机体和基因或基因产品实体的缩写形式。我们将标记的表示求和,并与第一个和最后一个标记连接以形成一个span的表示。
3.1 BERT layer
BERT层接收子词序列,并通过BERT将上下文表示赋给子词。我们假设每个句子S有n个单词,第i个单词被分成Si个子单词。向量Vi,j表示第i个单词的第j个子字。
3.2 Entity/trigger layer
实体/触发器层将实体或触发器类型分配给句子中重叠的文本跨度或单词序列。我们使用了Sohrab和Miwa的模型[Sohrab M.G. , Miwa M. (2018) Deep exhaustive model for nested named entity recognition. In: Proceedings of EMNLP. Brussels, Belgium. ACL, pp. 2843–2849.], 该模型的优点是可以利用目标候选对象内部的所有子词信息。这一层详尽地考虑了一个句子所有可能的跨度,其大小小于或等于最大跨度的大小,Lent用于实体,Ltrig用于触发器。对于句子中第k个单词到第l个单词的跨度,计算mk,l∈Rdm表示如下:
式中[;;]表示分隔,vi,j表示第i个单词中的第Jth子单词表示。更具体地说,vk,1是第k个单词的第一个子词表示,而vl,sl是第l个单词的最后一个子词表示。由于每个span可能有多个类型,我们通过使用带有sigmoid函数的多个二进制分类器来解决这个多标签问题。将表示mk,l传递给对应于所有可能类型的多个二进制分类器。对于每个分类器,如果输出得分为>0.5,则选择跨度作为对应的实体/触发器类型。
3.3 Role layer
角色层枚举给定触发器和实体/触发器层检测到实体的所有触发器-参数对(触发器-触发器和触发器-实体对),并为每个触发器对分配角色类型或不分配角色。因为每个角色都是由一个触发器和一个参数构造的,所以我们首先计算由实体/触发器层检测到的所有触发器和参数的表示。触发器和参数的表示以相同的方式计算。触发器t的范围从开始的tsth单词到结束的te单词,用它的span表示mt。
类似地,参数a的表示形式可以为:
同时,c表示从BERT层中获得上下文的句子。ri∈Rdr由触发(表示vt )、参数(表示va )和上下文(表示c)计算所得:
其中Wr和br分别是可学习权值和偏差,GELU是高斯误差线性单元(GELU)激活函数。在得到pair表示ri后,我们将其传递到一个具有softmax函数的全连接层,以预测相应的角色类型。
3.4 Event layer
给定由实体/触发器层检测到的触发器和实体以及由Role layer层检测到的角色对,事件层枚举所有角色对组合成为每个触发器构造事件候选。这些候选事件包括没有参数的事件。然后将每个候选对象分类为事件或非事件。
为了允许构造嵌套事件,我们以自底向上的方式构建事件。具体地说,我们首先对带有非触发参数(不包含参数或仅包含一组实体参数)的候选事件进行分类,以获得一组检测到的(平面的)事件。然后,我们重复以下构造和分类嵌套事件候选项的过程,这些候选项包含触发器参数。在构造步骤中,我们通过将触发器参数替换为相应的检测到的事件来构造嵌套事件候选项。对嵌套事件候选进行分类,检测到的事件可以作为更高嵌套级别嵌套事件候选的参数。这个过程会一直重复,直到所有候选事件都被分类,或者没有保留固定参数的候选事件。
其中,Wp和bp分别为事件结构中角色的可学习权值和偏差,而Wn和bn为角色层检测到的、共享触发器但不在事件结构中的角色的可学习权值和偏差。我们不仅包括结构中的角色,还包括结构外的角色,目的是从所有可能的角色集中选择适当的角色集。当事件候选对象有一个以固定事件作为参数的触发器时。表示ei被传递到一个带有GELU的隐含层以产生e'i,然后将e'i提供给一个二进制分类器来分类为事件或非事件。当候选事件被分类为事件时,e'i将另外传递给softmax分类器,以便将事件修改类型附加到检测到的事件。
4 Experimental settings
4.1 Data and task settings
我们在生物医学领域的6个事件抽取共享任务数据集上评估了我们的模型: Cancer Genetics 2013, Epigenetics and Post-translational Modifications 2011 (Ohta et al., 2011) (EPI), GENIA 2011 (Kim et al., 2011b) (GE11), GENIA 2013 (Kim et al., 2013) (GE13), infectious diseases 2011 (Pyysalo et al., 2011) (ID) and pathway curation 2013 (Pyysalo et al., 2015) (PC). 我们还在多级事件提取(Pyysalo等人,2012)(MLEE)(主要事件提取数据集)上对其进行了评估。对于所有的数据集,我们使用由共享任务或由MLEE的数据提供者提供的数据分区。
4.2 Training settings
我们基于预先训练的BERT模型,以端到端方式对模型进行训练。我们使用预先训练的SciBERT模型,该模型是对大规模生物医学文本进行预先训练的。对于生物医学文本的预训练模型,有几种现有模型,如BioBERT和SciBERT模型。我们在CG开发集上对BioBERT和SciBERT模型进行了实证比较,发现使用SciBERT模型获得了更好的性能。由于预先训练的BERT的规模很大,我们在ABCI (ABCI, https://abci.ai/)中使用了多个gpu来加速。我们使用来自PyTorch Pretrained BERT存储库(https://github.com/huggingface/pytorch-pretrained-BERT/tree/34cf67fd6c)的BERT模型作为我们的BERT层,并在其之上实现端到端事件提取层。对于所有的数据集,我们将句子按空格分割成单词,并将每个单词进一步分割成子单词,这是在设置BERT标记器之后输入BERT的前提。我们的训练包括两个步骤。在第一步中,为了避免在后续层中使用不可靠的预测,并充分利用标准注释,我们通过使用标准注释训练每一层来分别预热每一层。在第二步,我们同时训练整个模型,包括实体/触发器、角色和事件层。训练损失是所有层次损失的总和。我们使用相应的二元或分类交叉熵损失函数作为每一层二元或softmax分类器的学习目标。我们用Adam优化器训练模型(Kingma和Ba, 2015)。我们包括梯度裁剪,dropout和L2正则化。该模型训练100个epoch,训练小批数为16。Dropout被用于各个层的输入:实体/触发器层、角色层和事件层。以上所有超参数都通过Optuna框架(https://github.com/pfnet/optuna)进行了调整。
4.3 Models in comparison
我们将我们的模型与测试集上的SOTA模型进行了比较。这里简要描述这些模型。
TEES-CNN (Björne and Salakoski, 2018) (SOTA on CG and GE11 tasks):一个管道系统,通过顺序执行实体、参数和事件提取来检测事件。每个模块共享一个基于cnn的句子编码器架构。
BioMLN (Venugopal et al.,2014) (SOTA on GE13 task):这是一个基于马尔可夫逻辑网络的联合模型,建立在多个基于特征的事件提取模块上。
EventMine (Miwa et al.,2013b) (SOTA on ID task):一个使用手工制作的词汇和语法特征的管道系统,采用领域自适应方法,并在七个事件语料库上进行训练。
PMCNN (Li et al., 2020) (SOTA on MLEE task):一种表示句子成分语义特征的并行多池CNN模型。我们还比较了最近的两种基于神经的模型:MultiRep-CNN (Wang et al., 2017)和BLSTM (He et al.,2019)。
对于我们的模型,我们包含了以下两个设置:
DeepEventMine:我们的端到端模型,能够从原始文本一次传递预测事件。同时对模型进行实体/触发器、角色和事件检测的训练。
Pipeline:管道模型,每个层都是单独训练的。这是为了展示端到端方法的有效性而准备的。
5 Results and discussion
我们在七个语料库上展示了我们的DeepEventMine模型的性能,并在给定标准实体的测试集上与SOTA模型进行了比较。我们还对端到端和管道模型进行了分析比较,并对原始文本和带有黄金实体的文本的提取进行了评估。最后利用CG数据集对结果进行了深入分析。[详细的比对数据请查看原文]。
实验结果和分析表明,在给定标准实体的情况下,所提出的DeepEventMine模型在所有子任务中的性能都得到了持续提高,而端到端学习进一步提高了事件检测性能,但实体/触发器和角色检测性能略有下降。