【2022】使用 UMLS 元词库改进医学术语嵌入

发布于:2024-09-18 ⋅ 阅读:(72) ⋅ 点赞:(0)

《Improving medical term embeddings using UMLS Metathesaurus》

BMC Medical Informatics and Decision Making  2022 .4 

原文链接:Improving medical term embeddings using UMLS Metathesaurus | BMC Medical Informatics and Decision Making

1.总结

  • 背景
    • 健康提供者使用电子健康记录(EHRs)记录患者信息,其中的医疗笔记在医学信息学应用中很有价值,而学习医疗术语的向量表示是分析医疗笔记的重要预处理步骤,但学习好的嵌入很有挑战性,因为医疗笔记术语丰富且 EHRs 数量有限。
  • 主要贡献
    • 提出一种新算法 definition2vec,用于从有限的医疗笔记中学习医疗术语的嵌入,该算法扩展了 skip - gram 算法,利用了统一医学语言系统(UMLS)元词典提供的医疗术语定义的外部信息。
    • 通过实验证明该算法能为不常见或未观察到的医疗术语提供有用的嵌入,且这些嵌入有助于提高下游医疗信息学任务的质量。
  • 相关工作
    • 学习词嵌入是自然语言处理的重要研究课题,skip - gram 模型是学习术语嵌入的流行选择,但在小语料库和专业术语丰富的应用中效果不佳。
    • 研究医疗术语和概念的嵌入是活跃的研究领域,以往的工作使用 skip - gram 算法学习 UMLS 概念表示,还有其他研究使用外部知识源改进嵌入和下游预测模型,但本文通过易于实现且计算高效的 skip - gram 扩展来利用医疗术语定义
  • 方法
    • 问题定义:给定医疗笔记语料库,将每个术语表示为向量,使语义相似的术语具有相似的向量。
    • Skip - gram 算法:扫描笔记中的术语并根据上下文更新向量表示,通过创建术语对和负采样来更新观察到上下文术语的可能性。
    • Definition2vec 算法:增强了 skip - gram 算法,利用医疗术语定义,通过公式计算目标向量,使其受上下文和定义的影响。扫描语料库并构建术语对及其负对,使用随机梯度算法最小化瞬时损失,学习过程中还学习了每个定义词的嵌入。
  • 结果
    • 数据集:使用 UMLS 元词典和 MIMIC - III 数据集,对 MIMIC - III 数据集的出院总结进行预处理,使其与 UMLS 元词典中的概念匹配,并找到每个匹配令牌的定义。
    • 下游评估
      • 预测 ICD - 9 - CM 诊断代码:使用 CAML 模型进行多标签分类,预测出院总结的诊断代码。在大数据集上,definition2vec 在 F1 MAC 指标上比基线更准确,与其他基线在其他指标上相当;在小数据集上,definition2vec 在所有指标上都优于基线,且较大的 β 适合较小的训练数据集。
      • 预测 ICD - 9 - CM 诊断代码使用小训练数据:创建四个较小的训练数据集,重复实验,结果支持 definition2vec 在小语料库上特别有用的假设。
    • 语义相似性评估
      • 使用 3 个人类标记数据集:使用三个数据集评估学习到的嵌入,通过测量余弦相似度和计算皮尔逊相关系数来比较嵌入,结果表明 definition2vec 更好地反映了医疗术语之间的语义关系。
      • 使用 UMLS 语义类型:对嵌入的医疗术语进行 k - means 聚类,使用归一化互信息(NMI)评估聚类的纯度,结果表明 definition2vec 在学习的向量空间中能成功地将相似的医疗术语保持在一起。
    • 定性评估:在完整和最小训练数据集上学习 definition2vec 和基线嵌入,搜索医疗术语的最近邻域,结果表明 definition2vec 在小训练数据集上似乎更优越,且能为不在训练数据集中但在 UMLS 元词典中有定义的医疗术语找到合适的嵌入。
  • 讨论
    • definition2vec 算法可结合外部资源定义来学习嵌入,在文档语料库小的情况下特别有用,也可应用于非医疗领域。
    • 虽然 BERT 等上下文嵌入模型在一些应用中表现优越,但在小而专业的语料库设置中,不一定优于本文算法,因为 BERT 在通用语料库上训练,可能无法捕捉高度专业医疗术语的有用表示。
  • 局限性
    • 实验依赖 MetaMap 匹配文本与医疗概念,可能存在覆盖不完美的情况,可以考虑使用字符级嵌入神经网络来改善。
  • 结论
    • definition2vec 算法通过结合出院总结数据集和医疗术语定义来学习医疗术语嵌入,在训练数据集小时特别有用,医疗术语定义对罕见或词汇表外医疗术语的嵌入尤其有益,可用于从 EHR 数据中分析罕见医疗状况和治疗。

翻译

抽象的

背景

医疗服务提供者创建电子健康记录 (EHR) 来描述治疗患者的病情和程序。医务人员以自由文本形式输入的医疗笔记是 EHR 中特别有见地的组成部分。在众多医疗信息学应用中,人们对将机器学习工具应用于医疗笔记非常感兴趣。学习笔记中术语的向量表示或嵌入是此类应用中的重要预处理步骤。然而,学习好的嵌入具有挑战性,因为医疗笔记中有大量专业术语,而实际应用中可用的 EHR 数量通常非常少。

方法

在本文中,我们提出了一种新颖的算法,用于从一组有限的医疗记录中学习医学术语的嵌入。该算法称为definition2vec,它利用医学术语定义形式的外部信息。它是 skip-gram 算法的扩展,该算法结合了统一医学语言系统 (UMLS) 元词库提供的医学术语的文本定义。

结果

为了评估所提出的方法,我们使用了公开的重症监护医学信息集市 (MIMIC-III) EHR 数据集。我们进行了定量和定性实验,以衡量学习到的嵌入的实用性。实验结果表明,definition2vec可以将语义相似的医学术语保持在嵌入向量空间中,即使它们在语料库中很少见或未被观察到。我们还证明了学习到的向量嵌入对下游医学信息学应用很有帮助。

结论

本文表明,当从少量专业文档(例如医疗笔记)中学习罕见或以前从未见过的医学术语的嵌入时,医学术语定义会很有帮助。

背景

医疗服务提供者使用电子健康记录 (EHR) 来保存有关患者的医疗状况和治疗方法的信息。虽然 EHR 的主要目的是运营和管理,但它在生物医学研究中的作用越来越大,例如患者表型分析 [ 12 ]、健康风险预测 [ 34 ]、医疗事件预测 [ 56 ]、医疗代码提取 [ 7 ] 以及药物与药物不良反应之间的关系提取 [ 8 ]。特别地,EHR 中最有价值的部分是医疗笔记,它们是由医务人员创建的自由文本,旨在提供有关患者病情和治疗的见解。提取信息和分析医疗笔记是一个开放的机器学习 (ML) 问题。现代医疗笔记分析方法中的一个关键预处理步骤是医学术语嵌入,它指的是将医学术语表示为向量。医学术语嵌入可用作神经网络的输入,用于一系列预测和描述任务 [ 910 ]。在本文中,我们将医学术语表示为单词(例如,帕金森病或多词(例如,帕金森病),并与医学同义词库(例如,UMLS 元同义词库)中的条目相关联11 ]。

最近的研究已经产生了几种用于学习医学术语、诊断和手术代码、药物和实验室测试的嵌入的方法 [ 12、13、14、15 ]。特别是 skip-gram 模型 [ 16 ]由于其简单性和计算效率,成为从通用语料库(例如 Wikipedia)和专业语料库(例如医学笔记)[2、13、17] 中学习术语嵌入的热门选择当文档语料库很大并且需要嵌入的术语很频繁时 skip-gram 和相关的嵌入方法(如 fastText [ 18 ] )效果很好。然而,有许多应用程序依赖于相对较小的语料库,其中包含大量专业术语和缩写 [ 19、20、21 ],在这种情况下直接应用 skip-gram 模型并不总能得到高质量的嵌入。

本研究的主要贡献总结如下:我们提出了一种名为definition2vec的新算法,该算法特别适合从少量医疗笔记语料库中学习不常见或未观察到的医学术语的嵌入。我们的方法通过利用现有公开资源(例如 UMLS Metathesaurus)中的医学术语文本定义来增强 skip-gram 算法。我们通过实验证明,我们的算法提供了不常见和未观察到的医学术语的有用嵌入,并且这些嵌入可以提高下游医学信息学任务的质量。

相关工作

由于嵌入在自然语言处理的深度学习方法中具有重要意义,因此学习 n-gram、单词、术语、句子和段落的嵌入是一个活跃的研究课题。现代嵌入算法从众所周知的分布假说中汲取灵感,该假说指出,在相同上下文中出现的单词往往具有相似的含义 [ 22 ]。[ 23 ]概述了传统的嵌入方法。最近,从提出 skip-gram [ 16 ]、GloVe [ 24 ] 和 fastText [ 18 ] 算法的开创性论文开始,人们提出了许多通用和专用的嵌入算法,用于处理文本和各种类型的数据对象,如序列和图 [ 25 ]。skip-gram 算法 [ 16 ] 在预测目标词的上下文词的同时,还学习了嵌入。 FastText [ 18 ] 是另一种方法,它将单词视为具有自身嵌入的 n-gram 序列,有时有助于寻找词汇表之外的单词的表示。

研究医学术语和概念嵌入的专门方法一直是一个活跃的研究领域 [ 2262728 ]。使用 skip-gram 算法从医疗笔记和日志中学习 UMLS 概念表示的工作 [ 1213 ] 与本文特别相关。最近的一项研究 [ 29 ] 对基于 skip-gram 架构的生物医学词嵌入进行了广泛的分析。Med2Vec [ 17 ] 是另一项相关工作,它使用两层神经网络从代码出现和有关患者就诊的临床叙述中学习医学概念的嵌入。[ 30 ] 的作者提出了 cui2vec,它根据临床笔记中概念共现的分布来学习 UMLS 概念唯一标识符 (CUI) 的嵌入。[ 14 ]中描述了一种相关方法,该方法侧重于时间关系来嵌入医学概念。它扩展了连续词袋 (CBOW) 模型 [ 16 ],以开发一种用于学习医学概念的时间感知注意方法。Hahn 等人的研究调查 [ 31 ] 详细概述了依赖于医学术语嵌入的不同医学信息提取方法。

其他研究以不同的方式使用外部知识源来改进嵌入和下游预测模型 [ 3233 ]。 [ 32 ]中的作者结合 UMLS 元词库和语义网络信息,按照生成对抗网络 (GAN) 框架学习概念嵌入 [ 34 ]。 [ 33 ] 中的工作使用医学主题词 (MeSH) 术语图 [ 35 ] 来生成 MeSH 术语序列。虽然这项先前的工作利用了医学术语之间的已知关系,但在我们的工作中,我们通过易于实现且计算效率高的 skip-gram 扩展来利用医学术语定义。

方法

在本节中,我们将描述我们提出的学习医学术语嵌入的算法。我们首先定义问题并简要介绍基线 skip-gram 算法 [ 16 ],这是我们方法的基础。然后,我们描述我们提出的算法。

问题定义

假设我们得到了一份医疗笔记语料库。我们将单个笔记N描述为一个有序的术语序列,N  = { 1 , 2 ,  , n },其中i是词汇表V中的术语,n是笔记的长度。词汇表的大小为 | V |。术语可以是单个单词(例如,帕金森)或多个单词(例如,帕金森病)。术语嵌入的目标是将词汇表中的每个术语表示为一个向量,使得语义相似的术语具有相似的向量。

Skip-gram算法

用于嵌入的 skip-gram 算法 [ 16 ] 会扫描笔记中的术语,并根据其上下文更新其向量表示。术语的上下文通常定义为序列中的相邻术语。给定语料库中的目标术语t ,skip-gram 算法会创建由扫描术语w t及其上下文术语i组成的术语对,并使用对 ( t , i ) 更新在给定目标术语t情况下观察到上下文术语w i 的可能性。如果上下文大小为 2 ,则t的上下文定义为其相邻术语wt  = ( t−2 , t−1 , t + 1 , t + 2 )。上下文术语w i从C wt中选择。语料库中所有术语观察到上下文术语的对数似然定义为

其中p ( i |w t ) 是在给定目标词t的情况下上下文词w i的条件概率。Skip-gram 方法如图 1所示。

为了对p ( i | w t ) 进行建模,skip-gram 将向量ww分配给词汇表中的术语w。两个向量的维度相同。条件概率定义为以下 softmax 函数

我们提出的方法:definition2vec

所提出的definition2vec算法通过利用公共资源中可用的医学术语的文本定义来增强 skip-gram 方法。与 skip-gram 类似,它会扫描语料库中的术语并使用随机梯度下降来最小化负采样瞬时损失。但是,在更新术语的嵌入时,definition2vec还会考虑其定义的嵌入。

假设目标词t的定义以词序列wt  = ( 1 , 2 ,  , m ) 的形式出现,其中it的第 i个定义词,m是定义的长度。我们将d表示为来自定义的词 d 的向量表示,将′ wt表示为目标词的定义独立向量。我们将得到的目标向量表示为

这里,wt是w t在语料库中出现的频率, β是超参数。使用公式 5,我们的目标是获得受其上下文和定义影响的 t的嵌入。图2说明了所提出的方法但是。如果一个术语在语料库中频繁出现,那么它的表示将受到其上下文术语的影响,而不是其定义词的影响。,如果一个术语在语料库中很少见或从未见过,那么它的表示将受到其定义词的严重影响。超参数β决定了术语的定义对其嵌入的影响。我们提出的算法逐个扫描语料库,并构建上下文和目标术语对以及它们相应的负对。它遵循 skip-gram 的负采样思想,并使用随机梯度算法来最小化瞬时损失。上下文术语、目标术语和定义词向量的更新计算如下,

训练完成后,目标向量w成为词项w的嵌入。作为学习过程的副产品,我们还学习了每个定义词的嵌入。

结果

在本节中,我们首先解释数据集和数据预处理。然后,我们描述实验设计。最后,我们展示并讨论定性和定量评估的结果。

数据集

在我们的实验中,我们使用了两个数据集。第一个数据集是 UMLS Metathesaurus,其中包含大量医学术语的文本定义。第二个数据集是 MIMIC-III,其中包含大量重症监护病房 (ICU) 患者的 EHR 记录,并附有英文注释。

UMLS 元词库:统一医学语言系统 (UMLS) 是一组集成多种医学词汇的文件和软件 [ 11 ]。UMLS 元词库是 UMLS 的组成部分,它维护医学概念及其文本定义,这些定义链接到不同的医学源词汇,如美国国家癌症研究所词库 (NCIT) [ 36 ]、医学主题词 (MeSH) [ 35 ]、通用医疗器械命名系统 (UMD) [ 37 ]、人类表型本体 (HPO) [ 38 ] 和 Mondo 疾病本体 (MONDO) [ 39 ]。UMLS 元词库列出了 188,050 个至少有一个文本定义的概念,每个概念都有其概念唯一标识符 (CUI)。每个概念都有一个或多个与之关联的医学术语,其中每个术语都有其字符串唯一标识符 (SUI)。每个 SUI 可以有一个或多个原子唯一标识符 (AUI),用于将术语与特定源词汇表中的定义联系起来。UMLS 元词库有 773,692 个 SUI。尽管 UMLS 元词库中列出了超过 250 万个医学概念,但在本研究中,我们只考虑那些至少有一个定义的概念,因为definition2vec需要它们。

MIMIC-III:重症监护医疗信息集市 (MIMIC-III) 是一个公开的去识别数据集,包含 2001 年至 2012 年期间记录的来自贝斯以色列女执事医疗中心的 41,127 名 ICU 患者的 EHR [ 40 ]。该数据集包含结构化(医疗代码、实验室结果)和非结构化(医疗笔记)数据。MIMIC-III 包含几种类型的医疗笔记,如进度记录、放射学报告和出院总结。在本研究中,我们只考虑医疗服务提供者在 ICU 住院结束时准备的出院总结。MIMIC-III 中共有 59,652 份出院总结,这表明大多数患者在数据集中只有一个 EHR。在我们的研究中,我们还对 MIMIC-III 数据集中每次患者住院时列出的 ICD-9-CM 诊断代码41 ] 感兴趣。数据集中列出了总共 6,717 个唯一的诊断代码。

数据处理

给定一份出院总结,我们执行了图 3所示的几个预处理步骤。首先,我们删除数字和特殊字符,将所有字符转换为小写,并对文本进行标记。然后,我们使用 MetaMap v16.2 [ 42 ] 自动将标记与 UMLS CUI 进行匹配。每个标记可以保持不匹配,直接匹配到医学概念,或者成为与医学概念匹配的多词短语的一部分。如果匹配的概念是多标记(如“帕金森病”),我们通过添加下划线特殊字符(如“帕金森病”)将标记连接成单个标记。最后,我们删除所有不匹配的标记,这样每个出院总结就变成与 UMLS 元同义词库中的医学概念匹配的标记序列。该预处理过程与之前的工作 [ 12 ] 一致。

为了找到每个匹配标记的定义,我们执行了以下步骤。首先,我们确定每个匹配标记的 CUI。然后,我们找到与 CUI 对应的所有 AUI,检索每个 AUI 的医学术语定义,并连接定义。最后,我们对定义句子进行预处理,以删除数字和特殊字符、将所有字符小写、标记化并删除停用词和罕见词。图 3说明了从出院记录开始到以一系列与 CUI 匹配的标记及其相应定义结束的过程。

补充:

AUI(Atomic Unique Identifier),即原子唯一标识符,用于将术语与特定源词汇表中的定义联系起来。例如在统一医学语言系统(UMLS)元词库中,每个 SUI(字符串唯一标识符)可以有一个或多个 AUI,UMLS 元词库通过 AUI 检索每个医学术语的定义,并连接定义。

MetaMap 是一个高度可配置的应用程序,由美国国家医学图书馆 (NLM) 的Lister Hill 国家生物医学通信中心开发,用于将生物医学文本映射到 UMLS 元词库,或者等效地识别英文文本中引用的元词库概念。MetaMap 采用知识密集型方法、自然语言处理 (NLP) 和计算语言学技术,并在全球范围内被工业和学术界广泛使用。在 NLM,MetaMap 是 NLM医学文本索引器 (MTI)的基础之一,它适用于生物医学文献的半自动和全自动索引。有关 MetaMap 和相关研究的更多信息,请参阅 MetaMap 门户索引计划 (II)

MetaMap 的常见用途包括:

  • 信息提取
  • 分类/类别
  • 文本摘要
  • 问答
  • 数据挖掘
  • 基于文献的发现
  • 文本理解
  • UMLS 基于概念的索引和检索
  • 生物医学文献和临床文本的自然语言分析

特征:

学习医学术语嵌入

按照图3所示的流程对 MIMIC-III 的出院摘要进行预处理后 ,生成的语料库中的每个医学术语都与其定义序列相关联。在本小节中,我们将描述用于通过definition2vec和基线算法生成嵌入的实验设计。

我们的第一步是将预处理后的出院摘要随机分为训练集、验证集和测试集。与 [ 7 ] 类似,最终的训练数据集包含来自 36,998 名患者的 47,423 条记录,测试数据集包含来自 2,755 名患者的 3372 条记录,验证集包含来自 1,374 名患者的 1,632 条记录。一名患者的出院记录只能出现在三个子集之一中。

我们使用训练数据集来学习医学术语的嵌入。通过这种方式,我们学习了 46,861 个医学术语的嵌入,这些术语对应 29,740 个医学概念。表1列出了有关训练数据集的一些统计数据。我们在预处理的训练数据上训练了definition2vec和基线来学习医学术语嵌入。我们使用三种流行嵌入算法的 Python Gensim 实现作为基线:GloVe、脚注1 skip-gram,脚注2和 fastText。脚注3​​​​​​

我们对所有嵌入算法使用相同的超参数:词上下文邻域(或窗口大小)= 5,嵌入向量长度(或特征大小)= 100,学习率 = 0.01,负样本数量 = 5。先前的研究也使用了相同的参数 [ 16 , 43 ]。所有模型都训练了 10 个 epoch,这足以收敛。

Glove、skip-gram、fastText 和definition2vec嵌入都是非语境化的,这意味着每个术语都有一个固定的向量表示。相比之下,最近的研究产生了语境化嵌入,其中给定术语的向量表示取决于提及该术语的上下文。语境化嵌入最著名的代表是 BERT 神经网络 [ 44 ],它是在大量通用文本语料库上训练的。具体来说,给定一个输入文本,BERT 的最后一个隐藏层为每个 WordPiece [ 45 ] 标记提供 768 维嵌入。每个单词都可以用该单词的第一个 WordPiece 标记的嵌入来表示。这种嵌入是语境化的。最近的一项研究 [ 46 ] 发现,BERT 语境化嵌入在几个下游任务中的表现可以胜过来自 skip-gram、fastText 和 GloVe 的上下文无关嵌入。因此,我们在实验中将 BERT 嵌入与非语境化嵌入进行了比较

为了获取出院记录中医学术语的 BERT 上下文嵌入,我们将小写记录发送到 BERT 模型并记录每个医学术语的嵌入。如果出院记录包含超过 512 个标记,我们首先将其划分为少于 512 个的子序列,并将所有子序列中的医学术语嵌入连接起来。

我们进行了两种类型的研究来评估基线和我们提出的术语嵌入,如下所述。

下游评估:预测 ICD-9-CM 诊断代码

我们的第一个评估是将嵌入用于下游任务,即为给定的出院总结预测 ICD-9-CM 诊断代码。这是一个多标签分类,其中预测模型提供多个输出,每个 ICD-9-CM 诊断代码一个。所采用的预测模型是多标签分类的卷积注意力 (CAML) [ 7 ],这是一个具有注意力机制的卷积神经网络 (CNN)。在 CAML 中,预处理后的出院总结中的每个医学术语根据其嵌入转换为向量,并作为神经网络的输入。CAML 的输出是 ICD-9-CM 诊断代码预测的二进制向量。

为了测量准确度,我们使用“8 时的召回率”、微平均 (MIC) 和宏平均 (MAC) F1 以及 ROC 曲线下面积 (AUC),与之前的研究类似 [ 7 ]。k 时的召回率(k = 8)是 k 个最有信心预测的代码中正确预测的 ICD-9-CM 诊断代码的比例。要计算 F1,我们必须首先计算召回率和精确度。召回率是 CAML 预测的真实 ICD-9-CM 诊断代码的比例。精确度是预测代码中真实 ICD-9-CM 诊断代码的比例。F1 分数通过召回率和精确度的调和平均值来衡量。在 MIC 计算中,每对(出院记录、代码)都被视为单独的预测。然后,所有预测都用于计算 F1 准确度。另一方面,MAC 值的计算方法是首先计算每个单独的 ICD-9-CM 诊断代码的 F1。然后,对特定于代码的 F1 准确度取平均以获得 MAC F1 准确度 [ 7 ]。与 MIC F1 准确度相比,MAC F1 准确度更加重视罕见代码预测。

我们使用了作者提供的 CAML 实现。脚注4我们使用我们提出的方法学习到的嵌入和三个非语境化基线作为 CAML 的输入。在 CAML 训练期间,嵌入不会被修改。所有训练过的模型都具有相同的神经网络架构和原始论文中给出的默认超参数。每个 CAML 都基于所有可用的训练数据进行训练。我们检查每个时期后验证集上的“8 次召回率”准确度作为停止标准。如果“8 次召回率”值在连续十个时期后没有增加,我们就停止训练。对于definition2vec,我们通过探索不同的值(即 1、2、5、10、20、50 和 100)来调整β值。基于验证数据,我们获得了β  = 10 的最佳结果。CAML 模型有 2690 个带有 S 形神经元的输出,对应于我们训练数据中频率 ≥ 10 的所有 ICD-9-CM 诊断代码。

为了评估语境化 BERT 嵌入,我们还使用了相同的 CAML 架构和训练程序。唯一的区别是嵌入的维数,BERT 为 768,而非语境化嵌入为 100。

表2中的结果显示了在测试数据上测得的准确率。可以看出,definition2vec在 F1 MAC 测量上比基线更准确,而在其他准确率测量上与 skip-gram 和 fastText 相当。我们注意到,F1 MAC 准确率比 F1 MIC 测量赋予罕见 ICD-9-CM 诊断代码更大的权重。

Table 3 Accuracy of ICD-9-CM diagnosis code prediction using small training data sets (UT: number of unique medical terms, DC: number of ICD-9-CM diagnosis codes, PDC: number of predicted ICD-9-CM diagnosis codes occurring at least 10 times in training data)

From: Improving medical term embeddings using UMLS Metathesaurus

果还表明,BERT 上下文化嵌入并不比非上下文化的definition2vec嵌入更好。我们认为主要原因是 BERT 是在大型通用语料库上进行预训练的,而definition2vec和其他基线方法(即 GloVe、skip-gram 和 fastText)是在专门的出院记录语料库上进行训练的。

下游评估:使用小型训练数据预测 ICD-9-CM 诊断代码

在许多医学信息学应用中,可用的语料库比 MIMIC-III 数据集小得多。我们的假设是definition2vec非常适合小数据场景,其中大多数医学术语的出现频率不够高,无法使基线算法学习良好的嵌入。

我们使用较小的训练数据集重复了上一小节中描述的 CAML 实验。具体来说,我们通过从训练数据中随机抽取 1000、2000、5000 和 10,000 份出院摘要创建了四个训练数据集。我们在小数据集上对definition2vec和基线(GloVe、skip-gram、fast-Text)进行了 40 次迭代训练,以使用与之前相同的参数(窗口大小 = 5、特征大小 = 100、学习率 = 0.01 和负样本数量 = 5)学习概念嵌入。

在学习了医学术语的表示后,我们使用完整的训练数据集以相同的方式训练了一个 CAML 模型。我们仅预测了在训练数据集中出现至少 10 次的 ICD-9-CM 诊断代码。对于每种大小的训练数据,我们使用验证从以下选项中确定definition2vecβ 的最佳选择。

β  = 1、2、5、10、20、50 和 100。我们发现,β  = 50 对于 1000 和 2000 数据集可获得最佳结果,β  = 20 是 5000 数据集的最佳选择,而β  = 10 对于 10,000 数据集则为最佳选择。

3显示了每个数据集的 CAML 准确率。对于所有四个小型训练数据集,definition2vec在所有指标上的表现都优于基线。在两个最小的训练数据集(1000 和 2000)上, definition2vec与基线方法之间的差异特别大,而在两个最大的训练数据集(5000 和 10,000)上,差异减小。因此,表3 的结果有力地支持了我们的假设,即definition2vec在小型语料库上特别有用。

表3 使用小型训练数据集进行ICD-9-CM诊断代码预测的准确率(UT:唯一医学术语的数量,DC:ICD-9-CM诊断代码的数量,PDC:训练数据中出现至少10次的预测ICD-9-CM诊断代码的数量)

此外,我们发现definition2vec中较大的β适合较小的训练数据集,反之亦然。这一结果支持了我们的假设:如果一个术语在训练语料库中很少见或从未见过,那么它的表示应该会受到其定义词的很大影响。

语义相似度评估:3 个人工标记的数据集

一些研究 [ 12 , 27 ] 使用医学概念或术语对之间的相似度评分来评估学习到的嵌入。为了评估我们学习到的嵌入,我们使用了下面描述的三个不同的数据集。

Pedersen 数据集:Pedersen [ 47 ] 提供了由 3 名医生和 9 名临床术语学家做出的 30 个 UMLS 医学术语对的数据集,其中包含语义相似性判断。

Pakhomov 数据集:该数据集 [ 48 ] 包含 101 个临床术语对,其相似性由梅奥诊所的 9 名医学编码员和 3 名医生确定。

UMNSRS 数据集:UMNSRS 数据集 [ 49 ] 包含 566 个医学术语对。每个医学术语对都有一个语义相似度评分,该评分由明尼苏达大学医学院的 8 名住院医师确定。

在本次实验中,我们将三个数据集中的所有字符串都视为医学术语,并将它们与我们的嵌入进行匹配。为了比较嵌入,我们测量了它们之间的余弦相似度,并计算了余弦相似度得分与人类专家得分之间的皮尔逊相关系数。这三个数据集中的一些医学术语并不存在于我们学习到的嵌入的词汇表中。因此,我们分别使用了来自三个语义相似度数据集的 25、67 和 306 个医学术语对。由于 BERT 是一个上下文嵌入模型,在不同上下文中为同一术语提供不同的向量,因此我们没有将此模型作为本次实验的基线。表4展示了definition2vec和基线方法的皮尔逊相关系数。结果表明,definition2vec更好地反映了医学术语之间的底层语义关系。

语义相似性评估:UMLS 语义类型

UMLS 语义网络具有 127 种不同的语义类型,例如“药物”、“病毒”、“疾病”和“程序”,它们对医学概念进行分类并揭示它们之间的关系。我们将每个嵌入的医学术语标记为 127 个类别之一。然后,我们对从完整训练数据集中学习到的嵌入应用k = 127 的k均值聚类算法 。我们使用归一化互信息 (NMI) 来评估聚类相对于其语义网络标签的纯度。高 NMI 值表示聚类是纯粹的,并且每个聚类中包含一组有限的语义类型。

5比较了使用四种不同嵌入算法获得的 NMI 值。使用 GloVe 嵌入获得的聚类与语义标签的一致性最低。使用definition2vec嵌入获得的聚类显示出最大的一致性。使用 fastText 获得的聚类与definition2vec 的相似,但一致性略低。结果表明definition2vec成功地将相似的医学术语保持在学习向量空间中紧密相连。

表5 不同模型的聚类NMI值

定性评估

我们在完整训练数据集(47,423 个摘要)和最小训练数据集(1,000 个摘要)上学习了definition2vec和基线嵌入。然后,我们在嵌入空间中搜索一系列医学术语的最近邻居。对于给定的医学术语,我们根据嵌入之间的余弦相似度找到它的 10 个最近邻居。例如,表6显示了基于从完整和最小训练数据集学习的“心脏病发作”的最近邻术语。对于完整数据集, definition2vec和 skip-gram 都提供相似的结果,两种方法的结果中都有阻塞心肌心脏阻塞心率缓慢。然而,基于最小训练数据集的结果不同。definition2vec发现心肌梗塞急性心肌梗死出血性中风高血压危象,这些都是与“心脏病发作”有关的概念。另一方面,skip-gram 发现疼痛、咳嗽、血液、日程安排、跳过和手机与“心脏病发作”的关系不那么密切。

表 6 在definition2vec和 skip-gram中显示“心脏病发作”的前 10 个最近邻词

7显示了另一个包含“躁郁症”最近邻的示例。与前面的示例类似,在完整训练数据集上训练时,definition2vec和 baseline 嵌入会产生类似的邻域。例如,两种方法的前几个邻居分别是精神分裂症分裂情感性障碍bpad情绪障碍。然而,在最小训练数据集上学习获得的结果却不同。definition2vec找到了几个与“躁郁症”相关的概念,例如抑郁症精神病高脂血症,而 skip-gram 找到的最近邻居相关性较低,例如装甲帕金森病ckd慢性肾病缩写)。从这些结果中,我们可以得出结论,当都在完整训练数据集上训练时, definition2vec提供了与 skip-gram 类似的嵌入,而当训练数据集较小时,它似乎更胜一筹。

定性评估:词汇外(OOV)医学术语

可能有许多重要的医学术语未出现在训练数据中,但在 UMLS 元同义词库中却有定义。由于definition2vec通过医学术语定义学习词向量,因此它可以通过取其定义词向量的平均值来计算 OOV 术语的向量。例如,在表8中,我们展示了“尼古丁替代疗法”和“胃痛”的前 10 个邻居,这些邻居并未出现在完整的训练数据集中。definition2vec在 OOV“尼古丁替代疗法”术语的最近邻居中正确地找到了“尼古丁替代品”、“戒烟疗法”、“尼古丁贴片” 。同样,它正确地识别了 OOV 术语“胃痛”的邻居。这些结果表明definition2vec可以使用定义词向量找到 OOV 医学术语的正确嵌入。这使得definition2vec比 Glove 和 skip-gram 更具优势,因为后两者无法提供 OOV 术语的嵌入。它还比 fastText 更具优势,因为 fastText 完全依赖 n-gram 嵌入来计算 OOV 术语的嵌入。

表 8 显示definition2vec中两个 OOV 术语“尼古丁替代疗法”和“胃痛”的前 10 个最近邻术语

讨论

在实践中,文档语料库通常太小,无法训练语言模型,并且仅用于学习最常见术语的嵌入。为了解决这个问题,我们扩展了 skip-gram 算法,以纳入来自外部公开资源的医学术语定义。在我们的案例中,我们依赖 UMLS Metathesaurus 作为外部来源。我们注意到,建议的definition2vec算法允许其他医学术语定义来源,包括 Wikipedia 等网络资源。

我们的实验表明,definition2vec可以生成更好的医学术语嵌入,尤其是在文档语料库规模较小的情况下。这在无法拥有大型语料库的应用中尤其有用 [ 192021 ],例如当语料库来自专业医疗实践、与罕见疾病治疗有关或以罕见语言编写时。Definition2vec还可以应用于非医学领域,例如法律术语或各种科学领域中使用的专业术语的嵌入。

以 ELMo (基于语言模型的嵌入) [ 50 ] 和 BERT (基于 Transformer 的双向编码器表示) [ 44 ] 等神经网络为代表的语境化嵌入的最新进展允许嵌入取决于每个术语出现的上下文。尽管最近的一项研究 [ 46 ] 发现 BERT 语境化嵌入在某些应用中可能优于来自 skip-gram、fastText 和 GloVe 的上下文无关嵌入,但我们的结果表明,在小型且专业的语料库设置中情况不一定如此。另一篇最近的论文 [ 51 ] 也报告称 BERT 嵌入并未提高医疗代码预测任务的预测准确率。我们认为这是因为 BERT 是在通用语料库上训练的,而通用语料库没有提供足够的信息来捕获高度专业化的医学术语的有用表示。

限制

拟议的研究有一些局限性。例如,有专门针对医学文本的 BERT 版本,例如 ClinicalBERT [ 52 ],它针对所有 MIMIC-III 医学笔记进行了微调。但是,ClinicalBERT 不适合我们的实验,因为我们想比较可以在 MIMIC-III 的非常小的子集上学习的嵌入。因此,我们不得不将评估限制在 BERT 上下文化嵌入上。

此外,本文提出的实验依靠 MetaMap 将文本与医学概念进行匹配。MetaMap 无法完美覆盖医学术语,最常见的原因是拼写错误或非标准术语或缩写。为了能够匹配非标准术语变体,考虑使用经过训练的字符级嵌入神经网络来重建或模仿来自单词级嵌入模型的嵌入可能会有所帮助53 ]。

结论

在本文中,我们提出了一种新算法definition2vec,该算法通过结合出院总结数据集和医学术语定义来学习医学术语嵌入。我们通过比较学习到的嵌入在根据出院总结预测医疗代码时的实用性以及它们与医学术语之间的语义相似性的匹配程度来评估它们。我们的结果表明,当训练数据集较小时, definition2vec在下游任务中特别有用。此外,医学术语定义对于嵌入罕见或词汇表之外的医学术语特别有益。因此,所提出的方法可用于从 EHR 数据中分析罕见的医疗状况和治疗方法。

数据和材料的可用性

我们在实验中使用了两个数据集。第一个数据集是 UMLS Metathesaurus,可在 ( UMLS Knowledge Sources: File Downloads ) 中找到。第二个数据集(MIMIC-III 数据集)可在 ( MIMIC ) 中找到。希望使用这些数据库的研究人员必须按照其网站上的步骤正式请求访问权限。

全文总结

主要方法:

 
  • 提出算法:提出 definition2vec 算法,用于从有限的医疗笔记中学习医疗术语的嵌入。
  • 定义问题:将医疗笔记表示为术语序列,目标是将每个术语表示为向量,使语义相似的术语具有相似的向量。
  • 介绍基线算法:简要介绍 skip - gram 算法,该算法通过扫描笔记中的术语并根据上下文更新向量表示。
  • 详细描述算法:definition2vec 算法利用 UMLS Metathesaurus 提供的医疗术语定义的外部信息,增强了 skip - gram 算法。当更新术语的嵌入时,会考虑其定义的嵌入。通过公式计算目标向量,使其受上下文和定义的影响。算法扫描语料库并构建术语对及其负对,使用随机梯度算法最小化瞬时损失。
 

创新点:

 
  • 利用外部信息:definition2vec 算法通过利用统一医学语言系统(UMLS)元词典中医疗术语定义的外部信息,扩展了 skip - gram 算法,特别适用于从小语料库的医疗笔记中学习不常见或未观察到的医疗术语的嵌入。
  • 提高嵌入质量:实验表明,该算法在小数据集上表现优越,能使语义相似的医疗术语在嵌入向量空间中更紧密地聚集在一起,且对于罕见或词汇表外医疗术语,能通过其定义找到合适的嵌入。