文献学习-联合抽取C-Joint Extraction of Biomedical Entities and Relations based on Decomposition and Recombio

2023-11-06

论文信息

(1)题目:Joint Extraction of Biomedical Entities and Relations based on Decomposition and Recombination Strategy(基于分解重组策略的生物医学实体和关系联合抽取)

(2)文章下载地址:

(3)相关代码:-

(4)作者信息:-
 

摘要:

实体和关系抽取是构建医学知识图谱的关键任务之一,对于医学人工智能的发展具有重要意义。然而,重叠的三元组对于生物医学实体和关系提取来说是巨大的挑战。为了提高生物医学实体和关系提取的性能,提出了一种基于分解重组策略的实体和关系联合提取方法来挖掘生物医学文本。我们的方法将实体和关系提取任务分解为三个相关的子模块,即实体标记模块关系分类模块重组匹配模块。我们的主要贡献如下:首先,引入了用于联合实体和关系提取的分解和重组端到端学习框架。其次,提出了一种双向预测方法来处理重叠三元组问题。最后,提出了负样本生成方法来减轻这些模块之间的误差累积。大量实验表明,所提的方法可以将 ADE、DDI 和 BB 生物医学语料库中的 F1 分数提高 4.36%、2.13% 和 11.72%。

关键词:实体与关系联合抽取、分解重组策略、重叠三元组、双向预测、负样本生成

1、Introduction

实体和关系抽取是自然语言处理中信息抽取的子任务之一[1]。其目标是从大量非结构化文本中提取实体对及其关系,并以主语-关系-客体三元组的形式描述它们。在生物学和医学领域,越来越多的生物医学文本包含了大量的生物医学信息,是我们生物医学研究的重要知识来源。因此,生物医学文本的实体和关系提取引起了人们的广泛关注。在过去的十年中,有许多公共可用的实体和关系提取语料库。例如,对药物不良事件(ADE, the Adverse Drug Events)语料库进行注释,以支持从医疗病例报告中自动提取与药物相关的不良反应[2]。药物相互作用 (DDI,The Drug-Drug Interaction) 语料库是为 DDI 提取挑战而开发的,其主要目标是为评估应用于药理物质识别和生物医学文本中 DDI 检测的信息提取技术提供一个通用框架[3]。 BioNLP Shared Task 2019中的细菌生境(BB, Bacteria Biotopes)关系提取是一种生物医学关系提取,旨在研究细菌及其位置之间的相互作用[4]。

大多数实体和关系提取任务都采用管道方法。换句话说,命名实体识别(NER)和关系提取(RE)这两个子任务是由每个单独的模型依次完成的。然而,管道方法有一些缺点。例如,当NER和RE子任务独立建模时,它会忽略它们之间的联系。许多没有任何关系的实体也被放入关系抽取模型中,这会使实体变得冗余。此外,如果我们单独建模,两个任务之间会存在错误累积,这意味着NER任务中的错误将导致后续RE任务中的错误。为了解决这些问题,实体和关系的联合提取方法被提出并显示出可喜的结果。例如,Zheng等人[5]提出了一种新的标记方案。他们的方法认为一个实体最多属于一个关系,并且无法识别具有重叠实体的三元组

生物医学文本中有许多重叠的三元组。例如,DDI、BB和ADE语料库中的重叠三元组约占60%、65%和70%[6],这会影响提取性能。为了提高重叠三元组的提取效果,提出一种基于分解重组策略的实体和关系联合提取。文章的贡献是

(1)我们提出了一种基于分解和重组策略的新颖的端到端学习框架,该框架将生物医学实体和关系提取分为三个相关的子模块

(2)我们提出了一种新的双向预测方法,包括前向和后向预测方法来处理先前工作中尚未解决的重叠三元组问题

(3)我们使用负采样策略来缓解误差累积问题

文中对三个公开的生物医学语料库(包括 ADE、DDI 和 BB 语料库)进行了实验。实验结果表明我们提出的方法实现了最先进的性能。

2、Related Work

在以往的研究中,生物医学实体和关系的提取都是基于管道方法。其中,基于CRF的生物医学NER方法严重依赖特征工程,提取结果并不理想[7-9]。后来,许多深度神经网络方法被提出。例如,Sahu 等人[10]使用带有注意力池的 LSTM 来提取 DDI。 Li等[11]利用FFN联合提取DDI和ADE。但提取效果并不理想。最近,Zuo等人[12]受到Eberts等人[13]工作的启发,提出使用基于跨度的联合提取模型来提取生物医学领域的BB。该方法在BB语料库中取得了最好的结果。

Crone等人[14]采用多任务机器学习方法来处理NER和RE任务。他们引入了针对特定任务的双向 RNN,并针对不同语料库调整了共享层和特定任务层的数量。他们的方法在 ADE 语料库中取得了最先进的结果。

Wang等人[15]使用token pair linking(令牌对链接)实现了单阶段实体和关系联合提取。他们的模型在预训练模型的支持下,在DDI语料库中取得了state-of-the-art的结果。然而,上述方法忽略了生物医学文本中存在的大量重叠三元组,这将对提取结果产生严重影响。 Li等人[16]提出了一种翻译解码方案来处理重叠三元组问题。然而,他们的方法只考虑了主语重叠问题,并不能有效地提取宾语重叠三元组。

Yu等人[17]将实体和关系提取的任务分解,但他们的方法无法处理这些任务之间的误差累积问题。因此,我们提出一种基于分解和重组策略的实体和关系联合提取方法来处理这些问题。与以前的方法相比,我们的方法可以解决重叠三元组并更有效地缓解误差累积问题。

3、Method

为了处理生物医学文本中的重叠三元组问题,本文提出将实体和关系提取任务分为三个子模块,即实体标注模块关系分类模块重组匹配模块。我们的模型结构如图1所示。更具体地说,采用预训练模型作为编码器来获取其语义信息的词向量。然后,将词向量放入实体标注模块中,提取所有的主语和宾语实体。同时,词向量也被放入关系分类模块中,提取所有可能的关系。最后,以双向预测的方式将主体和客体的实体与各个关系重新组合。此外,利用自注意力机制来匹配相应的主体和客体实体,然后在重组匹配模块中将它们并集形成输出三元组。

A、Entity tagging module

文中使用两个相同的二元分类器来预测主体和客体实体的开始和结束位置:

 实体标注模块时通过最小化公式3来预测实体e的跨度:

 实体标注模块采用公式4表示的损失函数来训练\theta的权重和偏差:

 所有提取的主体和客体分别表示为Msub和Mobj.

B、Relation classification module

将预训练模型中的词向量作为关系分类模块的输入,以获得实体对之间的关系。公式5是预测句子中所有潜在的关系

 X是预训练模型的输出。如果关系样本的分别在语料库中是均衡的,则关系分类模块使用下面的交叉熵损失函数:

 r_i表示所有关系中第i个关系的概率,y_i表示关系的真是标签。

C、Recombination matching module(重组匹配模块)

文中提出一种重组匹配方法来处理重叠三元组问题

主题集合Msub*R集合,形成二元对,然后利用自注意力机制得到所有对象实体的表示,并匹配Mobj中最相关的对象实体的起始位置。

文中所提模型有效地提高主题重叠三元组的提取。但是,存在一些问题,为此,文中提出了一种双向预测方法来处理主题和客体重叠三元组提取。前向预测是主题实体+关系-->客体实体;后向预测是客体实体+关系-->主体实体。

重组匹配的过程:针对组合{s1, r1}

(1)将实体标记模块的s1的开始和结束位置信息表示为张量v_s1。r_1映射到相同的维度的张量v_r1,将两个张量相加,结合了s1和v1的特征。之后,使用自注意力机制得到表示A:

 然后,采用二元分类器来识别前向预测中对象实体的起始位置:

 A_i是句子X中第i个token的注意力特征,p_start_i是起始位置的概率,p_start_i与M_obj匹配,如果起始位置相似,则说明它是其主语和关系的客体实体。否则,这个主语和关系的组合不存在对应的客体实体。同样,后向预测的过程与上面相同。后向预测结合对象实体和关系进行预测主体实体。最后,模型最小化公式9来训练模型。

D、Negative samples generation

分解策略中各模块之间存在误差累积。然而,这个问题在之前的工作中并没有得到很好的解决[17]。为了应对这一挑战,文中建议生成负样本减轻这些模块之间的错误使模型更适合噪声输入。更具体地说,我们设计了五种生成负样本的方法:(1)在交换主客体实体时使用正确的关系。 (2)使用正确的主体实体和错误的关系。 (3)使用正确的客体实体和错误的关系。 (4)使用错误的主体实体和正确的关系。 (5)使用错误的客体实体和正确的关系。

这些生成的负样本在训练阶段替换正确的实体和关系对。但我们没有在重组匹配模块中分配任何实体来匹配它们。不同语料库的负样本数量不同。对于小语料库(例如BB语料库),负样本过多会对最终的提取产生影响。我们通过实验找到不同语料库合适的负样本数量,如负样本生成消融实验部分所示。(查看IV-C)

4、Experiments and Results

A、Corpus and baseline methods

我们在三个广泛使用的生物医学公共语料库上进行了实验来验证我们的方法的有效性,如表1所示。并且我们分别在三个语料库上选择SOTA模型来验证我们提出的方法的优越性。这些 SOTA 模型已在相关工作部分中进行了描述。结果如表II所示。

B、Results and discussion

表二显示了文中模型的性能。在NER任务中,我们的模型的提取效果与当前模型没有太大区别。但是,我们的模型在RE任务中具有明显的优势。与其他基线模型相比,我们提出的模型在 ADE 语料库上的三个指标上显示出显着改进。F1提升4.63%。在DDI语料库上,提升了2.13%,达到79.23%。在BB语料库上,文中的模型精度略低于SOTA模型,但明显优于其他基线模型。文中的模型在召回率和F1分数上分别实现了19.30%和11.72%的显著提升。

总的来说,文中模型在所有三个生物医学语料库上都取得了更好的结果。由于BB语料库的数据量很小,因此提取效果低于ADE和DDI。我们的双向预测方法考虑了三元组存在的所有可能组合。因此,可以提取语料库中大量重叠的三元组。文中分解和重组策略不会错过三元组的正常类型,并且提取性能不受重叠三元组问题的限制。因此,如果语料库中有更多重叠的三元组,文中的方法将变得更加有效。

C、The ablation experiments

为了验证双向预测方法和负样本生成方法,文中分别进行了消融实验:

(1)双向预测方法(Bi-directional prediction method):文中提出了一种双向预测方法来处理重叠三元组问题。表3显示了重组匹配模块中不适用双向预测(即单向预测)和使用双向预测的影响。

从表III中可以明显看出,在提出的双向预测方法之后,模型的性能得到了一定程度的提高。在ADE语料库上,双向预测比单向预测方法精度提高了0.10%,召回率提高了5.36%,F1分数提高了2.62%。在 DDI 语料库上,如果采用双向预测方法,这三个指标分别提高了 1.50%、2.43% 和 1.98%。原因是 DDI 语料库中对象重叠三元组的数量要大得多。在BB语料库上,准确率提高了5.85%,召回率提高了0.18%,F1分数提高了2.99%。因此,双向预测方法可以显着提高提取结果。

 (2)Negative samples generation(负样本生成):不同模块之间存在误差积累问题,提取性能将受到严重影响[17]。为了缓解这个问题,我们引入负样本来处理噪声输入。表IV显示了不同负样本对最终提取输出的结果负样本量为0表示没有负样本。实验结果表明,在这三个语料库上一定数量的负样本都可以提高提取性能。在ADE和DDI语料库上,由于原始数据量大,每个输入句子20个负样本达到了最好的结果。对于BB语料库来说,由于数据量较小,每个输入句子额外增加10个负样本比较合适。一般来说,负样本会对提取产生影响,负样本的数量与数据大小有关。

5、Conclusion and Future Work

NER和RE是构建知识图谱的基本任务。管道方法分别考虑NER和RE任务,这使得它们效率低下。与这些管道方法相比,实体和关系的联合提取方法是有前途的。在本文中,我们提出了一种基于分解重组策略的实体和关系联合提取方法,用于非结构化生物医学文本挖掘。该方法将实体和关系提取任务分解为三个子模块:分别是实体标记、关系分类和重组匹配模块。为了处理重叠三元组问题,文中在重组匹配模块中提出了一种双向预测方法,并进行了消融实验来证明其有效性。此外,我们设计了五种生成负样本的方法来缓解这些模块之间的误差累积问题,实验结果表明了该方法的有效性。然而,我们的工作有一些缺点。例如,我们发现当存在大量实体和关系对时,双向预测方法效率低下。在未来的工作中,我们将探索如何提高重组匹配模块中的匹配效率。希望使文中的模型更广泛地适用于其他领域,而不仅仅是医学文本挖掘。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文献学习-联合抽取C-Joint Extraction of Biomedical Entities and Relations based on Decomposition and Recombio 的相关文章

  • 词干函数错误:词干需要一个位置参数

    这里的stem函数显示错误 指出stem需要循环中的一个位置参数 如所讨论的 from nltk stem import PorterStemmer as ps text my name is pythonly and looking fo
  • Blenderbot 微调

    我一直在尝试微调 HuggingFace 的对话模型 Blendebot 我已经尝试过官方拥抱脸网站上给出的传统方法 该方法要求我们使用 trainer train 方法来完成此操作 我使用 compile 方法尝试了它 我尝试过使用 Py
  • 将单引号替换为双引号并排除某些元素

    我想用双引号替换字符串中的所有单引号 但出现的情况除外 例如 n t ll m 等 input the stackoverflow don t said hey what output the stackoverflow don t sai
  • 如何提取数字(以及比较形容词或范围)

    我正在用 Python 开发两个 NLP 项目 它们都有类似的任务提取数值和比较运算符来自句子 如下所示 greater than 10 weight not more than 200lbs height in 5 7 feets fas
  • python中的语音识别持续时间设置问题

    我有一个 Wav 格式的音频文件 我想转录 我的代码是 import speech recognition as sr harvard sr AudioFile speech file wav with harvard as source
  • NLTK 中的 wordnet lemmatizer 不适用于副词 [重复]

    这个问题在这里已经有答案了 from nltk stem import WordNetLemmatizer x WordNetLemmatizer x lemmatize angrily pos r Out 41 angrily 这是 nl
  • PHP 和 NLP:嵌套括号(解析器输出)到数组?

    想要将带有嵌套括号的文本转换为嵌套数组 以下是 NLP 解析器的输出示例 TOP S NP PRP I VP VBP love NP NP DT a JJ big NN bed PP IN of NP NNS roses 原文 我喜欢一大床
  • 除非 POS 显式,否则 WordNetLemmatizer 不会返回正确的引理 - Python NLTK

    我正在对 Ted 数据集成绩单进行词形还原 我注意到一些奇怪的事情 并非所有单词都被词形还原 要说的是 selected gt select 哪个是对的 然而 involved gt involve and horsing gt horse
  • 使用 OpenNLP 获取句子的解析树。陷入困境。

    OpenNLP 是一个关于自然语言处理的 Apache 项目 NLP 程序的目标之一是解析一个句子 并给出其语法结构的树 例如 天空是蓝色的 这句话 可能会被解析为 S NP VP The sky is blue where S是句子 NP
  • Java 中的自然语言处理 (NLP) [重复]

    这个问题在这里已经有答案了 可能的重复 Java 有没有好的自然语言处理库 https stackoverflow com questions 870460 java is there a good natural language pro
  • spacy 如何使用词嵌入进行命名实体识别 (NER)?

    我正在尝试使用以下方法训练 NER 模型spaCy识别位置 人 名和组织 我试图理解如何spaCy识别文本中的实体 但我无法找到答案 从这个问题 https github com explosion spaCy issues 491在 Gi
  • R 中带有变音符号的字符列表

    我试图将字符串中的电话 字符 出现次数制成表格 但变音符号单独作为字符制成表格 理想情况下 我有一个国际音标的单词列表 其中包含大量变音符号以及它们与基本字符的几种组合 我在这里给出了仅包含一个单词的 MWE 但对于单词列表和更多类型的组合
  • 使用 NLP 进行句子压缩 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 使用机器翻译 我可以获得一个句子的非常压缩的版本 例如 我真的很想喝一杯美味可口的咖啡将被翻译为我想喝咖
  • 使用 Huggingface 变压器仅保存最佳权重

    目前 我正在使用 Huggingface transformers 构建一个新的基于 Transformer 的模型 其中注意力层与原始模型不同 我用了run glue py检查我的模型在 GLUE 基准测试上的性能 但是 我发现huggi
  • 如何使用WordNet或与wordnet相关的类别来实现基于类别的文本标记?

    如何使用wordnet按单词类别标记文本 java作为接口 Example 考虑以下句子 1 计算机需要键盘 显示器 CPU才能工作 2 汽车使用齿轮和离合器 现在我的目标是 例句必须标记为 第 1 句话 电脑 电子键盘 电子中央处理器 电
  • 如何改进 NLTK 中的荷兰语 NER 词块划分器

    感谢这个伟大的答案 我使用 NLTK 和 Conll2002 语料库训练自己的荷兰语 NE 词块划分器 有了一个良好的开端 NLTK 荷兰语命名实体识别 https stackoverflow com questions 11293149
  • Spacy提取特定名词短语

    我可以在 python 中使用 spacy 来查找具有特定邻居的 NP 吗 我想要文本中前后都有动词的名词短语 您可以合并名词短语 这样它们就不会单独标记化 分析依存解析树 查看相邻标记的 POS gt gt gt import spacy
  • 更换色谱柱时出现稀疏效率警告

    def tdm modify feature names tdm non useful words kill stampede trigger cause death hospital minister said told say inju
  • 如何使用 NLP 确定句子中的中心词?

    例如 如果我得到一个句子 一名英国士兵在阿富汗战斗中丧生 这句话的中心词是 杀 给定 Python 中的 nltk 包 我怎样才能找到它 我不是在谈论词干 我指的是中心词 您正在寻找中心词句子解析 它可以在 Python 的 nltk 包中
  • python nltk从句子中提取关键字

    我们要做的第一件事 就是杀掉所有律师 威廉 莎士比亚 鉴于上面的引用 我想退出 kill and lawyers 作为两个突出的关键词来描述句子的整体含义 我提取了以下名词 动词 POS 标签 First NNP thing NN do V

随机推荐

  • 抗锯齿相关技术介绍:MSAA、FXAA、SMAA、TXAA、MSAA

    在图像处理中 锯齿一直是一个大问题 因此图像中的抗锯齿 Anti aliaing 简称AA 也被称为边缘柔化 消除混叠 抗图像折叠有损等 AA主要是处理图像有锯齿的边缘 使其图像更清晰清晰 下面有一些反锯齿的常用技术 一 多重采样抗锯齿 M
  • 36 KVM管理设备-配置虚拟串口

    文章目录 36 KVM管理设备 配置虚拟串口 36 1 概述 36 2 操作步骤 36 KVM管理设备 配置虚拟串口 36 1 概述 在虚拟化环境下 由于管理和业务的需求 虚拟机与宿主机需要互相通信 但在云管理系统复杂的网络架构下 运行在管
  • DOM(文档对象模型)

    目录 1 DOM是什么 2 DOM 树 3 节点 4 获取元素 4 1 根据id获取 4 2 根据标签名获取 4 3 根据 name 属性来获取 4 4 根据类名来获取 4 5 根据选择器获取 4 6 获取body元素 4 7 获取html
  • html给百度富文本编辑器editor设置默认值,设置固定高度

    通常在一些文章编辑或者内容编辑的应用场景下会用到百度编辑器设置默认值进行回显 百度到的问题代码 UE getEditor editor setHeight 500 UE getEditor editor setContent 内容 执行完浏
  • Linux系列之:9秒钟掌握多种实时查询日志的方法,再也不用cat命令了。

    实时查询日志 1 引言 2 less 3 tail 3 1 单文件实时查询 3 2 多文件实时查询 3 3 目标名称查询 3 4 跟踪日志 4 multitail 4 1 安装 4 2 用法 5 总结 1 引言 由于最近从某些企业毕业的同学
  • 查看当前SHELL的种类

    shell种类 shell种类常见的有sh bash csh zsh tcsh等 方法 echo 0
  • 【C语言程序设计】C语言渔夫打鱼晒网问题!

    如果一个渔夫从 2011 年 1 月 1 日开始每三天打一次渔 两天晒一次网 编程实现当输入 2011 1 月 1 日以后的任意一天 输出该渔夫是在打渔还是在晒网 实现过程 1 自定义函数 leap 用来判断输入的年份是否是闰年 2 自定义
  • 软件测试---用例篇

    软件测试 用例篇 测试用例 Test Case 概念 是为了实施测试而向被测试系统提供的一组集合 这组集合包括 测试环境 操作步骤 测试数据 预期结果等要素 好的测试用例是不熟悉业务的人也能根据用例很go准 用例表达清楚 无二义性 不能出项
  • 自增与自减运算符号&&赋值运算符

    自增运算符为 其功能是使变量的值自增1 自减运算符为 其功能是使变量值自减1 它们经常使用在循环中 自增自减运算符有以下几种形式 注意 无论是a 还是 a都等同于a a 1 在表达式执行完毕后a的值都自增了1 无论是a 还是 a都等同于a
  • Unsafe学习

    一 介绍 一个管理内存的类 Unsafe类是 final 的 不允许继承 且构造函数是private的 使用单列模式模式获取类对象 1 1 测试的类 public class UnsafeBean private static int st
  • 计算机程序存储在哪里,计算机正在运行的程序存放在哪里?

    计算机正在运行的程序存放在RAM 内存 里 RAM是与CPU进行沟通的桥梁 计算机中所有程序的运行都是在内存中进行的 因此内存的性能对计算机的影响非常大 计算机正在运行的程序存放在RAM 内存 里 RAM是与CPU进行沟通的桥梁 计算机中所
  • 使用Requests库来进行爬虫的详解

    Requests是用Python编写 基于urllib 采用Apache2 Licensed开源协议的HTTP库 它比urllib更方便 可以节约我们大量的工作 完全满足HTTP测试需求 安装 pip3 install requests 使
  • 【知识普及】神经网络架构搜索(Neural Architecture Search,NAS)

    文章目录 1 背景引入 2 网络架构搜索 NAS 2 1 NAS 搜索策略 2 1 1 基于强化学习 2 1 2 基于进化算法 2 1 3 基于梯度的方法 2 2 NAS 加速 2 2 1 层次化表示 2 2 2 权值共享 2 2 3 表现
  • 教你一招删除休眠文件hiberfil.sys节省大量C盘空间

    教你一招删除休眠文件hiberfil sys节省大量C盘空间首先分清SLEEP睡眠和HIBERNATE休眠两个概念 我们常用的是SLEEP功能 也就是电脑经过一定时间后 进入低功耗状态 工作态度保存在内存里 恢复时1 2秒就可以恢复原状态
  • 最新配置安装的centos7,解决xshell连接问题,安装docker

    配置初始的centos7 1 更新yum yum update y 2 安装vim yum install y vim 3 解决xshell连接显示警告 The remote SSH server rejected X11 forwardi
  • 用深度学习和CNN进行年龄识别

    DIP大作业 用深度学习和CNN进行年龄识别 基于深度学习的方法 基本步骤 深度学习方法 1 10 需求分析 系统设计 环境搭建 2 10 数据集及预处理 3 40 卷积神经网络模型设计 模型程序编写 模型训练 模型测试 4 30 实验结构
  • OpenWRT安装管理界面中文包

    如果刚刷的openwrt18点多的没有中文界面 用ssh连接路由后用opkg安装 root openWRT opkg install luci i18n base zh cn Unknown package luci i18n base z
  • 顺序栈——基础

    时间限制 1000ms 内存限制 256M 实验目的 编写代码 实现一个简单的顺序栈 实验要求 1 每个栈元素是一个union类型 例如 union unData 栈元素的数据类型为Union Union共用同一块存储空间 int d ch
  • 分布式任务 + 消息队列框架 go-queue

    为什么写这个库 应用场景有哪些 如何使用 总结 为什么要写这个库 在开始自研 go queue 之前 针对以下我们调研目前的开源队列方案 beanstalkd beanstalkd 有一些特殊好用功能 支持任务priority 延时 del
  • 文献学习-联合抽取C-Joint Extraction of Biomedical Entities and Relations based on Decomposition and Recombio

    论文信息 1 题目 Joint Extraction of Biomedical Entities and Relations based on Decomposition and Recombination Strategy 基于分解重组