电子病历文本挖掘研究综述
2021-11-25吴宗友白昆龙杨林蕊王仪琦田英杰
吴宗友 白昆龙 杨林蕊 王仪琦 田英杰
1(中国科学院大学经济与管理学院 北京 100049) 2(中国科学院大学计算机与科学技术学院 北京 100049) 3(中国科学院虚拟经济与数据科学研究中心(中国科学院大学) 北京 100190) 4(中国科学院大数据挖掘与知识管理重点实验室(中国科学院大学) 北京 100190) 5(中国科学院大学中丹学院 北京 100049)
(bossbit@126.com)
在过去的几十年里,互联网信息技术蓬勃发展,使得数据的管理与传输变得更为高效,同时医疗机构也构建了大量的电子病历信息库.在众多的现代化医疗数据中,电子病历数据是最重要的医疗数据资源之一.每天都有海量的电子病历数据在各级医院产生,形成了医疗大数据的重要组成部分.电子病历以患者为主体,比较完整地记录患者长期的医疗信息,并且经过计算机技术的整理、储存、共享和分析,是纸质病历的升级版本.电子病历的特性使得相关信息库中同时包含着结构化数据和非结构化数据,结构化数据如表格数据,非结构化数据如文本数据和医学图像等.
对电子病历进行数据挖掘有巨大的应用前景,然而电子病历数据量大、非结构化数据多的特点使得数据挖掘十分困难.虽然早期部分研究人员利用一些简单的电子病历数据挖掘方法如决策树[1]等辅助诊断,但是由于技术和方法的限制,对医疗数据的信息挖掘效果十分有限.而近年来,机器学习和深度学习在其他领域展现的巨大潜力给电子病历的挖掘带来了新的希望[2].本文主要针对电子病历中的文本数据部分,结合国内外的研究现状,分析电子病历数据挖掘面临的挑战以及现有的解决方案.
1 电子病历
电子病历往往包含了患者就诊过程中产生的多种数据格式,如文本、图像、表格等.本文主要针对的是电子病历中的文本部分,包括患者基本信息、患者病史、患者的症状、医生的诊断说明等.电子病历中的文本数据同样分为结构化信息和非结构化信息.结构化信息如身高、体重等往往通过简单的数据清洗就可以作为各种机器学习算法的输入;非结构化的信息如诊断信息、用药信息、检查信息、临床记录等,这些数据则需要较为复杂的预处理和自然语言处理(natural language processing, NLP).对电子病历信息进行分析与利用需要大量有专业知识的人工付出大量的时间,成本昂贵.而NLP的发展为自动处理电子病历文本数据提供了基础.对电子病历的数据挖掘有助于节省人力物力,提高医生的诊断效率,实现智慧医疗.
电子病历的数据挖掘始于数据收集和预处理,在获得海量电子病历数据后需要针对数据的特性和挖掘分析的目标对数据进行预处理.电子病历数据预处理常用的方法主要包括脱敏处理、数据清洗、数据集成、数据选择和数据规约.
1) 脱敏处理.电子病历的一个特性是隐私性,这意味着相关数据的收集只能以大型的医院信息部门或者一些专业的医疗机构作为数据来源,并且公开数据集时要对数据进行处理,隐藏掉部分信息以保护患者的隐私权.
2) 数据清洗.数据清洗其主要目的是将错误或杂乱无章的数据处理成干净、标准的数据以供后续数据统计和挖掘使用.数据清洗主要包括补齐、去重和降维等方法,需要针对不同数据选择具体的方法.对电子病历文本挖掘前的数据清洗需要考虑电子病历的特点,电子病历的建立通常需要医护人员和患者协作,在记录过程中可能会有数据缺失、噪声数据、错误语义甚至是自相矛盾的数据或文本存在.对于缺失的数据,通常可以只删除带有缺失数据的样本或者采用均值将缺失数据填充,再者,可以采用类似于回归、贝叶斯、决策树等机器学习方法来确定填充数据的最佳值.而噪声数据通常指的是数据出现了明显的不正常数值,如血压数值高于常人数倍,面对这样的数据,通常采用平滑处理或异常值分析的方法.平滑处理通常用数据周围点的均值进行处理,而异常值分析方法通常通过聚类方法来构建类别从而处理数据.另外,面对一些语法错误和语义错误,只能通过人为再编辑或者NLP技术进行修正.
3) 数据集成.经过数据清洗过后干净的数据需要经过数据集成操作,数据集成通常是指将不同源头的电子病历数据集成到同一个数据库中,可以扩大数据规模,方便模型的训练和后续算法的研究.但是数据集成也存在着问题,从不同源集成的数据之间可能存在结构的不一致或数据存在冗余的现象,那么整理之后的数据要重新进行数据清洗.在电子病历数据中,同一个患者的数据可能来自不同医院的不同科室,这些数据很容易出现异构或重复的现象.
4) 数据选择.针对不同的研究目标,对整理出的电子病历数据进行内容筛选处理也十分重要.根据研究目的的不同,选择出电子病历中不同的病历记录.经过数据选择确定研究数据,一方面可以剔除掉无关属性和噪声对研究目标的影响,另一方也起到了对数据的降维作用.高质量的数据选择是数据预处理中的关键步骤,影响着研究目标的实现结果.
5) 数据规约.数据规约是对电子病历文本数据进行规范化调整,将数据调整为适合进行数据挖掘的形式,包括对输入数据的归一化处理(最小最大归一化、零均值归一化和分数归一化等)、遗漏数据的处理以及错误信息的纠正.数据规约是为了使数据更加规范化,使得数据在接近原始数据的基础上更加易于处理.
2 电子病历数据挖掘任务和方法
电子病历中包含着大量非结构化文本信息,要从非结构化的文本信息中挖掘出潜在的规律需要识别出大量专业词汇和如疾病-症状等特殊鲜明的实体关系,要对这些文本信息进行数据挖掘,关键的2个基本任务分别为命名实体识别和关系抽取.近年来,随着NLP技术的发展,对电子病历数据的分类任务和问答任务也有了一定的突破.下文将简单介绍电子病历文本挖掘中常见的4种任务:命名实体识别、关系抽取、文本分类和问答系统,并介绍任务常用的数据分析方法.
2.1 医学命名实体识别
命名实体识别(named entity recognition, NER)也称为概念抽取,即从指定的自由文本中抽取出相关的具有特定意义的词语,它在医学文本研究中被称为生物医学命名实体识别(biomedical named entity recognition, BioNER).电子病历命名实体识别是BioNER的子领域,其主要任务是识别出患者的电子病历中具有特定意义的实体,并对它们进行标注,这些实体根据研究目的不同而有所区别.通常中文电子病历中的实体类型包括疾病、病因、临床表现、检查方法、药品名称、手术、身体部位等.电子病历在被标注实体之后可以提高医生查看病历的工作效率.同时,标注的结果也将辅助后续的如关系抽取和知识图谱构建等研究.随着相关技术的进步和研究的进展,发展出了很多电子病历命名实体识别的方法,最开始的方法是基于词典与规则的方法和基于统计学的机器学习方法.而在过去几年中,基于深度学习的方法在该任务中效果显著并得到广泛使用,如2018年出现的BERT(bidir-ectional encoder representation from transformers)等深度学习框架进一步改善了生物医学命名实体识别的性能.目前主流的中文电子病历命名实体识别的方法仍然是条件随机场和双向长短时记忆网络[3].下面将对3类不同方法进行详细梳理.
1) 基于词典和规则的方法
基于词典的方法在识别过程中通常是依靠术语词典,然后采取匹配算法进行命名实体识别.因此,对于电子病历这种专业性较强的文本,标注语料即词典的规模和质量起到了相当关键的作用.在医疗领域,中文电子病历的标注规范也在不断的探索当中,并形成语料库,如曲春燕等人[4]在2015年参照i2b2 2010的标注规范制定了中文电子病历的标注规范,并在2名临床医生的帮助下对标准语料进行了检验,后来在他们的标注语料基础上,一些研究人员也进行了改进[5-6],这些都使得中文电子病历标注语料规模和质量变得更加可靠.虽然完全基于词典的命名实体识别准确率有一定的保障,但是电子病历的标注语料库的构建需要医疗专业知识,通常需要医学方面的专业人员共同协作,且随着时间的推移语料库的维护也耗时耗力.由于词典规模有限且需要及时更新等原因,仅使用词典往往并不能取得特别好的效果,因此后来词典常作为特征帮助以提升自然语言处理的效果.
与基于词典的方法不同,基于规则的方法主要是通过对整个文本进行分析来构建规则模板,利用规则模板,通过匹配的方式实现命名实体的识别.基于规则的方法更加直观且方便维护,但规则的构建也需要相关领域专家的人力且耗时较大,而且在没有明显规则时基于规则模板的识别将较困难.同时,不同领域文本与实体大不相同,无法从某个医学领域直接扩展到其他医学领域.因此,规则与词典相似,后来也通常被用于辅助命名实体识别模型.例如利用规则优化词典等的特征,再结合条件随机场对中文电子病历进行命名实体识别,比单纯使用条件随机场的效果要好[7].
2) 基于统计学习的方法
随着机器学习的发展和流行,针对词典和规则的方法存在的缺点,基于统计机器学习进行命名实体识别的方法被提出并得到深入的研究和应用,词典和规则则作为一种辅助手段用于提高机器学习实体识别的效果.机器学习方法需要的专业人工相对较少,成本也较低,所以近年来应用相对广泛.传统机器学习方法可以分为有监督学习、半监督学习和无监督学习3类.其中有监督学习方法在命名实体任务中占了主流,它通常需要大规模带标签的训练集,将命名实体识别任务转换成分类问题,训练集用于模型的训练,生成目标模型后才可以对未标注语料中的实体进行识别.常用的序列标注模型包括隐马尔可夫模型、最大熵模型、条件随机场模型和支持向量机等.
① 隐马尔可夫模型.隐马尔可夫模型(hidden Markov model, HMM)最初由Bikel等人[8]提出并发表在统计学的系列论文中,该模型在后续研究中被证实在语言识别、自然语言处理以及生物信息学等多个领域的应用都体现了很大价值[9].
在序列标注中使用HMM时,目的在于给定观测序列是X的条件下,求解使条件概率P(X|Y)最大的标记序列Y*.根据贝叶斯公式推导可知,HMM的实质为求解联合概率P(X,Y).在获得模型参数后,命名实体识别问题的解码(常用Viterbi算法)过程目标为得到相对于观测序列的最优命名实体标记序列,解码序列.HMM虽然是序列标注的最常用且有效的方法之一,然而HMM是以独立性假设为前提的,即观测元素为独立于观测序列中的其他元素的单元.事实上元素之间一般并非独立,且可能具有长距离依赖关系,如文本语句远距离上下文之间的语义联系,严格的独立性假设不能够真实地描述数据序列所包含的信息,这是HMM的主要缺陷.
② 最大熵模型.熵(entropy)[10]表示能量在空间中分布的均匀程度.香农在描述信息量时用了这个概念,提出了信息熵的概念,来表示系统的平均信息量.最大熵模型(maximum entropy, ME)是在最大熵原理[11]的基础上实现的,主要思想是在已知部分知识的前提下选择熵最大的概率分布,即在满足约束条件的情况下选择不确定性最大,信息量最大的模型.
最大熵模型在特征选择时相对灵活可以引入特征提高模型的准确率,且不需要HMM必须的独立性假设.但是其迭代过程计算量巨大,计算的时间复杂度较高.
③ 条件随机场模型.条件随机场(conditional random fields, CRFs)[12-13]是一种用于序列标记任务的概率统计模型.CRF是最大熵HMM模型在标注问题上的改进.假设X,Y分别表示为需要标记的观测序列和相对应的标记序列的联合分布的随机变量,那么CRF就是一个以观测序列X为作为全局条件的无向图模型.在命名实体识别任务中,X可能是一句话,而Y则是相对应的类别标记序列.在对标记序列进行建模时,最简单也是最常用的图形结构就是:观测节点与标记序列中的节点构成简单的一阶链形式,此时图中的标记序列形成了一条马尔可夫链.CRF克服了HMM的独立性假设条件,考虑了整个X即上下文的信息,虽然也具有时间复杂度大导致的训练难度高等问题,但是仍然被广泛使用,对比其他传统机器学习方法,是最受欢迎的用于命名实体识别的机器学习方法.在电子病历的命名实体识别任务中也是如此,如燕杨等人[14]针对中文电子病历的命名实体识别问题,提出使用层叠条件随机场且在第2层中使用包含实体和词性等特征的特征集,对疾病名称和临床症状2类命名实体进行识别,该模型相比于传统层叠CRF模型和单层CRF模型总体性能有显著提高.
④ 支持向量机.支持向量机(support vector machine, SVM)是较为经典的模式识别方法,其在解决小样本、线性不可分及高维度等模式识别问题中发挥了重大作用,在多个领域成功应用,其中包括电子病历文本挖掘.其主要思想是利用高维特征空间转化使其变为线性可分问题处理,再基于结构风险最小理论构建最优分割超平面,目标是使得学习器得到全局最优化.支持向量机在电子病历文本挖掘中除了文本分类任务也可以被用来完成命名实体识别,例如Tang等人[15]研究了结构化支持向量机(structed support vector machine, SSVM)用于临床命名实体识别的方法,该算法结合了CRFs,SVMs以及词表征.评价结果表明,当使用相同的特征时,基于SSVMs的NER系统在临床实体识别方面的性能优于单纯基于CRFs的系统.将2种不同类型的单词表征与SSVMs相结合,最终系统精度表现最高达到85.82%.
基于统计学习的方法学习过程不需要太多的人工干预,便于在不同领域之间进行模型的移植,因此大受欢迎,且有不少学者尝试使用多个统计模型来提高医学命名实体识别任务的效果.但是在广泛使用的有监督学习模型实施中,前期大规模标注语料的构建成本高,如何获取高质量、可靠的语料也是主要挑战之一.所以也有不少研究利用半监督学习方法对电子病历进行命名实体识别[16-17].无监督学习方法最典型的就是聚类,在命名实体识别中的主要目标就是通过相似的上下文将内容或格式相似的实体聚在一起.
3) 基于深度学习的方法
近年来,随着深度学习的兴起,为降低人工消耗和训练代价,研究者们也开始将神经网络应用于自然语言处理领域,获得不少成果.在自然语言处理任务中,常用的深度学习模型包括卷积神经网络、循环神经网络、长短期记忆网络、Word2Vec模型和2018年出现的BERT模型等.
① 卷积神经网络.卷积神经网络(convolution neural network, CNN)是由卷积层、池化层和全连接层组成,卷积层利用不同的卷积核提取不同的输入特征,池化层是为了降维提取主要特征,全连接层为了结合最后损失函数进行分类.
CNN不仅在图像处理领域有很好的效果,在NLP的诸多任务也可以实现特征抽取等目标,从而提升最终的性能.利用CNN对词向量输入进行特征抽取,是CNN在NLP的一大应用.每一个词向量可以视为一个1维的输入,而对于一个由词语构成的序列,它可以作为2维的数据(和2维图像一样),作为CNN的输入.为了保证卷积操作的可解释性,通常过滤器的某个维度会设置成和词向量的维度一样,而在另一个维度上的设置则是考虑上下文语境的长度,并在该维度上进行移动与卷积操作.CNN中的过滤器具有一定的感受野,考虑了前后语境的影响,这个过程也是n元语言模型的一种体现.CNN在计算上还有一个巨大的优势:它支持并行计算,无论是单个过滤器在不同位置的卷积操作,还是不同过滤器之间,都互不影响,这也意味着在并行计算中CNN具有极高的自由度.但是通常来讲,单个的卷积层只能够捕捉到局部短距离的依赖关系(如三元语言模型),想要建立更长距离的语言特征、依赖关系,需要多层的卷积层,但深层网络的参数优化也会相应的更加困难.另外一个CNN在NLP任务应用的缺点是池化层在一定程度上丢弃了卷积层保留的相对位置关系,在NLP中有时候相对位置关系尤为重要,这也导致了一定程度的信息丢失.
CNN在生物医学命名实体识别任务研究中有大量应用.Gehrmann等人[18]将卷积神经网络与传统的基于规则的实体提取系统进行了对比和测试.结果显示CNN优于其他算法,基于NLP的深度学习方法提高了患者表型的性能.如Wu等人[19]将CNN应用在中文临床记录文本的命名实体识别任务中,他们使用CNN对文本进行词向量的预训练,以此提高基准模型的准确率.Crichton等人[20]将每个单词标记及其周围的上下文单词作为输入,设计了有监督的多任务CNN模型,结果表明多任务学习的引入带来了更好的效果,且对小型数据集很有用.Luo等人[21]同时应用CNN和RNN对来自i2b2-VA挑战数据集的出院摘要中的医学概念之间的语义关系进行分类,并表明具备单词嵌入特征的CNN和RNN可以在挑战中获得与具有大量特征的系统相似性能.
② 循环神经网络.在NLP领域,最常使用的深度学习算法是基于循环神经网络(recurrent neural network, RNN)的深层结构.传统的神经网络无法处理像自然语言这种具有时间序列特性的连续输入,而RNN则通过添加指向自身的回路,使得网络能够利用输入的序列特征,因而在处理概念抽取、词性标注等时间序列标注任务时有着先天的优势.RNN的改进之处在于添加了指向自身的回路,每个神经元的输出除了沿层间连接向上传递之外,还直接传输给了下一个序列.理论上,RNN可以处理任意变长的序列,然而,随着时间序列的不断累积,梯度会出现指数级衰减的现象,这导致RNN难以记录距离较远的历史信息,其性能也因此而受到制约.为了解决这个问题,1997年Hochreiter等人[22]第一次提出长短期记忆网络(long short-term memory, LSTM)概念,并从理论上证明了这种结构能够很好地解决梯度消失和爆炸问题.
③ LSTM. LSTM也是一种时间递归神经网络.在LSTM算法中加入了判断信息有用与否的输入门、遗忘门和输出门,LSTM是解决长距离依赖问题的有效技术.
另外,在有些NLP任务中,某个时间的输出不仅和过去信息有关,也取决于它的未来信息,例如在命名实体识别任务中,一个词语是否为命名实体,由其上下文共同决定.因此,为了同时考虑过去和后续的信息对当前时刻的影响,我们可以在原有的LSTM中增加一个反向的信息流,来传递后续时刻的信息.Schuster等人[23]基于LSTM提出了双向长短期记忆网络(bi-directional LSTM, Bi-LSTM)概念,这种方法不仅从前到后对序列建模,而且从后到前也对序列建模,所以每一个时刻的状态不仅包含前面的信息,而且囊括了后面的信息.
在过去几年中,使用LSTM和CRF结合的模型,BioNER的性能得到了很大改善.LSTM是解决传统RNN中梯度消失问题的一种方法,而双层循环神经网络Bi-LSTM改进了LSTM,使得在做命名实体识别时可以既利用正向序列信息同时利用反向序列信息.之后又在Bi-LSTM后加入了CRF层,Bi-LSTM可以充分利用字词信息和位置信息得到特征,将其隐层输出输入到CRF层中来做标签的预测.Habibi等人[24]将通过学习一个实体注释的金标准语料库(gold standard corpora, GSC),结合预先学习词嵌入(word embedding)的大型语料库(大量来自PubMed的摘要)得到特征,并作为BiLSTM-CRF模型的输入.在包括5种不同的实体类型的不同标准语料库进行了准确率评估.平均而言,它比基于词典的NER工具提升5%,比单独使用CRF方法提升3%.Wang等人[25]为BioNER提出了一个使用字符级的多任务神经网络的学习框架.该框架考虑了具有依赖于上下文的Bi-LSTM层的BiLSTM-CRF模型.通过重用相应Bi-LSTM单元中的参数,来自不同数据集的输入可以有效地共享字符和单词级表征.文献[25]的作者将提出的多任务模型与多个BioNER系统和基线神经网络模型在15个基准BioNER数据集上进行比较,并观察到更好的性能.Gorinski等人[26]对比了基于规则、运用深度学习和迁移学习3种不同的系统在对脑卒中患者的脑成像报告中的命名实体识别任务的应用效果.实验表明基于规则的系统因为有相关领域专家提供的规则效果最精确,而运用BiLSTM-CRF模型的系统减少了设计新规则时对专家知识的需求,学习效率更高,迁移学习虽然仍然需要大量人工操作但是表现很好有代替基于规则的系统的可能.但是无论是RNN还是CNN,在处理NLP任务时都有缺陷.CNN是其卷积操作不适用于序列化的文本,RNN的缺点则是其不能实现数据处理并行化,这会导致对内存的要求过高.在中文电子病历的命名实体识别研究中,张聪品等人[27]构建了LSTM-CRF模型对电子病历进行命名实体识别,准确率达到了96.29%.
在深度学习中不得不提到的是Word2Vec模型[28]和Bert模型,它们采用分布式表示方法将自然文本转换到词向量,之前提到的特征都是基于词向量挖掘而被具体的神经网络学习最终服务于各种任务,包括命名实体识别、关系抽取任务等.
④ Word2Vec模型.传统的自然语言词语处理方法将词语看作一个符号,被称作one-hot表示,这种方法导致词与词之间的关系被独立开,当词表过大时,向量维度也随着变大,Word2Vec的提出解决了这一问题.Google在2013年提出了一种新的用于计算词向量的方法Word2Vec[28],Word2Vec模型是一种快速训练词向量模型的方法.使用Word2Vec模型的目的在于从大量的文档医学文本数据中训练出高质量的词向量,Word2Vec被用来解决大规模语料的词向量表达问题,在Word2Vec出现之前,很多的NLP技术都是采用one-hot结构,这样构建出的词向量忽略了词语之间的相似性和关联性,Word2Vec则提出了词向量的分布式表示方法,利用浅层神经网络,在大规模无标注语料库上训练低维稠密的词向量.Word2Vec框架提出基于分布式词表示的思想,即要理解一个词语的意思只需要通过了解词语出现的上下文即可.由此提出了2种用于训练的模型,一种为连续词袋模型(continuous bag of words, CBOW)模型,其基本思想是给定上下文来预测其中心词;另一种为连续跳跃模型(continuous skip-gram model, Skip-Gram),是利用给定的中心词来预测上下文进行训练.在生物医学文本挖掘任务中,由于生物医学语料库与一般领域语料库在词汇和表达方面存在较大差异,在应用于生物医学数据时需要在医学文本语料上进行训练.如Zhu等人[29]在包含临床报告和临床领域相关的Wikipedia页面的语料库上训练上下文单词嵌入模型,然后训练BiLSTM-CRF模型.
⑤ BERT模型.以Word2Vec为代表的词向量模型有一个明显的缺陷,即训练好的词向量是固定的,单词不会因为处在不同的语境而改变,这对于一词多义的情况是十分不利的.因此在Word2Vec出现之后,涌现了许多利用语言模型建立基于上下文的词向量方法,如ELmo[30],OpenAI[31],BERT[32],其中的模型BERT是最具影响力的方法.BERT模型是基于Transformer提取特征,并采用双向语言模型.其训练方式区别于传统的从左到右的训练方式,而采用2种新的方法进行大规模无监督训练,2种方法分别是Masked LM和Next Sentence Prediction.Masked LM方法是在给定一句话并随机抹去这句话中的1个或几个词语,然后利用BERT模型去预测这几个被抹去的词语.Next Sentence Prediction是给定一句话,判断下一句话是否与给定的句子属于同一个上下文中.其在文本分类任务、语句对分类任务和NER中均取得SOTA(state-of-the-art)的效果.BERT采用多层双向Transformer编码器,可以学习生成考虑语境的语言模型,并可以在调整后针对各种任务(如命名实体识别和关系抽取).Mao等人[33]在系统Hadoken中利用BERT模型对训练数据进行预训练,然后将临床病例的表征提供给CRF输出层以进行分类,并且发现其适用于多语言命名实体识别任务.
深度学习的模型通常需要大量的标注训练数据,然而在电子病历文本挖掘任务中构建大型训练集需要专业人士的知识,成本非常高.因此用于生物医学文本挖掘任务的训练数据较少,大多数生物医学文本挖掘模型无法充分利用深度学习的能力.为了解决训练数据的缺乏,近年来有研究集中在训练多任务模型或是借助迁移学习的力量.如Yoon等人[34]提出使用多个NER模型(在文中指的是一组BiLSTM-CRF模型)组合的CollaboNet.在CollaboNet中,在不同数据集上训练的模型彼此连接,成功地减少了错误分类实体的数量并提高了性能.另一方面,在深度学习中应用迁移学习的思想,用在其他数据集训练好的模型初始化部分甚至所有的神经网络中的参数,为用目标数据集训练做准备.Lee等人介绍了针对生物医学文本挖掘任务的语境化语言表示模型BioBERT[35],其在原结构BERT的基础上重新训练.他们使用迁移学习来解决缺乏训练数据的问题,即使用一般语料库和医学领域语料库对BioBERT进行预训练.实验证明,BioBERT能有效地将大量其他语料库文本的知识迁移到医学文本挖掘任务中,只需要针对特定任务的体系结构进行少量修改.BioBERT在3个具有代表性的生物医学文本挖掘任务、生物医学命名实体识别、生物医学关系提取和生物医学问答系统上明显优于其他模型.
2.2 关系抽取
关系抽取(relation extraction, RE)通常基于命名实体识别的结果之上,也是自然语言处理中一个重要的子任务,但是由于深度学习的发展,也有不少深度神经网络将命名实体识别和实体关系抽取看作一个完整的任务.理论上,关系抽取任务分为2步,首先判断一个实体对是否存在关系,若有关系,则进一步判断属于哪种关系.在实际模型设计中,通常把无关系当作一种特殊的关系,直接将关系抽取看作是多类别分类任务.关系抽取是医疗健康知识库建立维护的基础.在医学领域,不同实体间的关系有不同的定义标准,根据I2B2 2010评估会议[36],EMR中的实体关系可以分为3类,包括疾病之间的关系、疾病与医学检查的关系以及疾病与治疗之间的关系.在医学领域,常常采用基于共生[37]、传统机器学习和深度学习方法来进行关系抽取.基于共生的方法是基于2个实体同时出现的频率越高关系越强这一假设的统计方法.最广泛使用的方法还是传统机器学习方法和深度学习方法,例如Bhasuran等人[38]采用有监督的机器学习方法,即使用深度集成支持向量机来训练,利用语法和语义属性的特征集并结合词嵌入,从4个标准语料库中提取基因-疾病关系.实验显示在EUADR,GAD,CoMAGC,PolySearch四个语料库处理结果的F-measure分别达到85.34%,83.93%,87.39%,85.57%.
同时,将机器学习与深度学习相结合,也可以提高电子病历中关系抽取性能.如张玉坤等人[39]将CNN,SVM,CRF三者结合,然后通过联合学习方式来对医疗文本进行关系抽取,取得了不错的效果.自注意力机制也是医疗关系抽取中常用的方法,宁尚明等人[40]针对文本特征的每个通道都计算注意力权重,实现了电子病历实体关系的抽取,在2010 i2b2和SemEval 2013 DDI中F1值分别达到69.72%和72.32%.
时序性是电子病历数据的一大特点,因为电子病历通常不仅包括患者当前的治疗状况和指标,还包括患者过去所经历的临床事件.为了自动构建这些事件之间的时间线,需要抽取临床记录中事件和时间的关系.自动检测并抽取患者记录中的时间和事件之间的关系能帮助医务人员了解疾病进展,如Tian等人[41]提出了一种基于深度学习的汉语电子病历时间信息提取框架.他们运用LSTM-CRF模型提取临床实体如疾病、治疗等以及时间等相关实体,之后用CNN进行时序关系分类.
另外,从临床记录中提取药物相关实体与药物之间的关系,可以帮助患者避免药物引发的不利效果,比如药物的不良事件(adverse drug events, ADE)中的实体关系能反映某些药物引起的副作用,以及副作用对患者产生的影响.电子病历是挖掘ADE的丰富信息来源,学者们已经广泛应用NLP技术以使用关系抽取方法挖掘在电子病历数据中的ADE相关信息.Christopoulou等人[42]提出了一种集成学习方法,其运用神经网络模型中的Bi-LSTM注意力机制和Transformer神经网络来提取药物和药物相关实体之间的关系.
2.3 文本分类
文本分类是文档级的自然语言处理任务,目标是给文档打上预定义的文档级标签.电子病历中的医学报告是一种具有丰富信息的资源,特别是主要用自然语言写的自由文本部分,这部分包括医生的临床推理信息及其思维过程,其能通过提供详细的病人情况来帮助解决不同的临床问题,而且它们通常不能被其他结构化数据所代替.文档分类有助于处理和提取这类数据,辅助后续的分类预测任务,并提高叙述性临床笔记的利用效率,因此文档分类成为临床预测分析的一个重要研究领域.早期的文献中,自动分类研究需要利用手工实现且由专家制定规则的知识工程,这非常耗时耗力,且对人力资源有较高的要求.最近,机器学习算法和自然语言处理技术已经被用来处理电子病历以支持临床决策,目前效果较好的文档分类方法之一是基于Word2Vec的神经网络模型.深度神经网络可以通过算法本身学习复杂的数据特征,而不需要手工设计的特征提取规则.深度学习在医疗文本分类中通常使用的方法是先利用网络将医疗文本以字为单位应映射到向量空间,然后再利用SVM等模型对向量空间进行分类[43],例如Hughes等人[44]将基于单词分布式表示的CNN应用于句子级的医学文本分类任务中,取得了很好的性能.
文本分类可以被用于分类临床记录,以此来辅助识别患者所患疾病,例如Turner等人[45]评估了多种传统分类器(包括神经网络、随机森林、朴素贝叶斯、支持向量机等)在系统性红斑狼疮患者识别中的性能,其中具有统一医学语言系统(unified medical language system, UMLS)概念唯一标识符(CUIs)的浅神经网络和同时具有CUIs和词袋模型(bag-of-words, BoW)的随机森林表现最优.Topaz等人[46]针对从临床记录中识别糖尿病患者这一任务建立了一个基于NLP的分类系统Nimble-Miner,运用了包括SVM,RNN等多种机器学习方法.Doing-Harris等人[47]使用聚类算法,基于词汇和词性的数据表征,通过无监督学习区分不同文档类型和信息来源,并取得了良好的性能.Kocbek等人[48]使用基于bag-of-phrases的SVM检测各种疾病类别,对潜在疾病的人入院进行分类.
也有学者从临床记录中的句嵌入方法入手临床文本分类问题,与词嵌入相似,句嵌入是一种高维向量,它可以表示单词序列的特征.句子嵌入的使用通常是考虑到在训练数据较少的情况下,依赖许多词向量的RNN捕获诊断信息来分类文档比较困难,而少量的句子向量就可以获得丰富的语义信息.如Ormerod等人[49]通过LSTM构建电子病历分类模型,并同时显示文档中哪些句子对患者的病情诊断最有帮助.另外,中文病历的文本分类与英文电子病历的文本分类有所不同,因为中文语言有其特殊性:断句方式不同、需要新的分词工具等,且中文电子病历既有短文本又有长文本,因为在借鉴国外优秀成果时需要结合中文特点作出调整.杜宝琛[50]在设计基于电子病历的辅助治诊断系统时同时考虑长短文本,采用了双通道下不同神经网络同时学习.吕愿愿等人[51]在对电子病历进行自然语言处理后,利用TF-IDF和潜在语义分析(latent semantic analysis, LSA)方法提取特征,在挖掘出依存关系后对病历短文本进行分类.
2.4 智能问诊
问答系统(question answering system, QA)是自然语言处理中的传统任务,相比于日常的机器问答,由于在医学领域有更多的专业名词,实现问答则更为困难,传统的问答系统通常需要特征工程、语言工具或外部资源的帮助.通常是使用语言模型提取语义特征,利用决策树等模型[52-53]来识别问题的答案.尽管这些方法具有一定的有效性,但它们需要额外的资源和特征工程并使用语言工具,模型的复杂性较高.
目前,问答研究主要集中在利用深度学习技术自动提取句子特征,且多在通用数据集上进行测试.例如Wang等人[54]使用LSTM框架将答案选择任务转化为分类和排序问题.Xiong等人[55]使用动态协作注意网络将斯坦福问答数据集上的F1值增加到80.4%.此外,Tan等人[56]提出了一个基于注意力机制的RNN模型,将问题注意引入到答案表征中,建立了基于BiLSTM模型的匹配问答对,并利用余弦相似度计算了它们的接近度.Dong等人[57]提出了一种改进的多列卷积神经网络,从响应路径、上下文和答案类型3个方面学习问题和答案的分布式表示.Santos等人[58]提出了一种基于特征加权的双向注意力机制,通过特征工程、注意机制等提高问答匹配的准确性.
使用大型带注释的数据集构建的几个开放领域的机器理解系统使自动问答取得了长足的进步.然而在临床领域,自动问答仍然在探索阶段.由于缺乏大规模的临床标注数据集,目前还没有一个通用的系统来回答医生在病人的电子病历上提出的自然语言问题.医生们通常希望根据电子病历中找到有关医疗实体和关系的问题答案,这需要计算机对临床笔记有更深的理解.电子病历中数据的特性包括大量的非结构化数据、大量的专业术语、多个疾病之间有时序性和拼写错误等,而这些都是机器理解电子病历时的难点,现有的NLP工具难以应付这种复杂情况.此外,在挖掘答案时也有难点,因为答案可能是隐式的,而且可能需要多个临床领域的知识和推理.由于这些挑战的存在,为患者构建可信的QA系统变得十分困难,同时QA系统一般需要大规模的问答注释.然而构建数据集涉及到个人健康信息的隐私问题以及大量人力资源,手工构建大型注释数据集不切实际[59].
QA数据集主要分为两大类:使用非结构化文档的机器理解(machine comprehension, MC)数据集和使用知识库的问题-答案对数据集.MC系统旨在回答任何针对参考文本提出的问题.最近在云资源和搜索引擎方面的进展导致了MC数据集的爆炸式增长,但其中有价值的数据比例却较少.另一方面,特定领域MC数据集如MCTest,BioASQ,InsuranceQA等对专家注释的需求高,同时也涉及隐私问题,这使其在规模上受到了限制(500~10 000).Pampari等人[60]利用i2b2数据集中针对各种NLP任务的临床笔记上的现有专家注释,为电子医疗记录生成大型问题-答案对数据集.得到的语料库有100万个问题形式和40多万个问题-答案对,在问题-答案的关系抽取时用了带注意力层的端对端模型.Roberts等人[61]通过在468个电子病历问题上手工注释标签,生成了语料库.随着医学QA系统的发展,学者们也结合了传统的方法和深度神经网络方法来构建混合模型.这些模型结合了神经网络模型的精确性和传统方法中符号表示的可解释性.
总而言之,医疗问答系统方面还处于探索和研究阶段,没有能够切实有效的落地应用,但其未来的潜力巨大,是一个非常有前景的研究方向.
3 电子病历文本挖掘在糖尿病和心脑血管疾病中的应用
除了常见的命名实体识别、关系抽取、文本分类和医疗问答等基本任务外,对于电子病历文本挖掘的应用广泛存在于不同的领域,且在不同的疾病中往往有不同的表现形式.
3.1 糖尿病
国际糖尿病联合会2017年修订的第8版本数据显示,全球有4.25亿糖尿病患者.这意味着每11个成年人里就有1个糖尿病患者,而中国有超过1亿人患有糖尿病,所以不管是对个体患者还是在整个人类范围内,管理糖尿病都是非常重要的[62].糖尿病是一种慢性疾病,健康的胰腺分别通过α-细胞和β细胞动态控制胰岛素和胰高血糖素激素的释放,以维持正常血糖[63],而糖尿病特征是患者体内不存在葡萄糖稳态.糖尿病可以分为多种,当身体的免疫系统攻击产生胰岛素的细胞并完全停止产生胰岛素时,就会导致Ⅰ型糖尿病;当身体不能产生足够的胰岛素或细胞产生胰岛素抵抗时,会导致Ⅱ型糖尿病,Ⅱ型糖尿病可能是遗传、饮食不良、缺乏运动或肥胖的结果;另外还有妊娠期糖尿病(妊娠中期或晚期确诊糖尿病且在妊娠前没有糖尿病症状)和由于其他原因引起的特定类型的糖尿病,例如单基因糖尿病综合征、外分泌胰腺疾病和药物或化学诱导的糖尿病[64].糖尿病护理在很大程度上取决于患者的日常自我管理,包括吃什么以及何时运动,以及确定部分患者需要的胰岛素剂量和时间.在这种情况下,每个患者每天都产生与糖尿病相关的大量数据,这些数据来源包括电子病历、胰岛素泵、传感器、血糖仪和其他可穿戴设备,还包括实验中糖尿病相关的基因组学、蛋白质组学、代谢组学和微生物学数据[65].所以在糖尿病相关的研究中有许多数据挖掘的应用.最早在2002年Breault等人[66]应用CART分析方法对糖尿病数据库进行了分析,虽然准确率仅为59%,但是首次验证了数据挖掘技术在糖尿病问题领域的应用前景.随着标准化的电子病历系统在中国的兴起,糖尿病相关的诊断和风险管理等也接受到电子病历文本挖掘的辅助,本节将从糖尿病的诊断角度阐述机器学习在糖尿病上的应用.
糖尿病的诊断需要通过包括α-糖酸盐血红蛋白(A1C)实验、随机血糖实验、空腹糖试验或口服葡萄糖耐量实验在内的几项实验.无论是Ⅰ型还是Ⅱ型糖尿病,早期诊断和预测对于延缓疾病发展,有针对性地选择药物,延长患者预期寿命,减轻症状和相关并发症的发作都至关重要.生物标志物(例如生物分子)是代表健康和疾病状态的特定病症的可测量指标,通常在体液(血液、唾液或尿液)中测量.在研究糖尿病的情况下,生物标志物可以反映患者是否存在高血糖及其严重程度,或是否存在糖尿病相关并发症及其严重程度.而机器学习方法中的特征选择可以帮助挖掘出新的生物标志物,辅助糖尿病的确诊,且在特征选择步骤之后,分类算法可以被用来评估所选特征的预测准确度.例如Jelinek等人[67]研究了在糖化血红蛋白(glycated hemoglobin, HbA1c)水平低于或等于6.5%的情况下,找到的2种生物标志物与HbA1c一起参与检测,提高了糖尿病的诊断准确性.也有学者利用特征提取的算法选取预测糖尿病的特征,如Bagherzadeh-Khiabani等人[68]使用了803名有55个特征的糖尿病前期女性的临床数据集,比较了19种常用的特征选择算法来预测糖尿病.Sideris等人[69]提出了一种基于聚类的特征提取框架,使用疾病诊断信息产生的特征群,并用作预测患者病情严重程度和患者再入院风险.
许多利用电子病历的机器学习方法和框架被运用到Ⅱ型糖尿病的早期诊断上[70-71].集成学习方法和关联规则学习也被大量运用到糖尿病的诊断中.如Tapak等人[72]比较了5种机器学习模型ANN,SVM,FCM(fuzzyk-means)、随机森林(random forst, RF),LDA(linear discriminant analysis)来分类是否患有糖尿病的个体.集成学习也被逐渐应用到诊断糖尿病的分类系统中[73].Han等人[74]提出了一种基于SVM和RF的规则提取集成学习方法.另外,通过挖掘一些与糖尿病相关的属性也可以预测糖尿病风险,提醒体检的人注意某些习惯预防糖尿病的发生.
深度学习方法也对糖尿病的诊断研究作出了贡献,尤其是在对电子病历非结构化数据的处理分析中,例如可以有效地识别病历中未明确指出的糖尿病病例,从而显著改善糖尿病病例发现现状.EMR的非结构化数据存在于临床记录、手术记录、出院记录、放射学报告和病理报告中.其中临床记录包含的信息有患者的病史(疾病和治疗措施等)、疾病家族史、环境和生活方式等,因此提供了很多可供研究的细节信息[75].Zheng等人[76]针对已有算法无法大量识别糖尿病电子病历案例中非结构化数据的问题,使用RF的方法实现更完整的糖尿病诊断.Pham等人[77]针对个性化医疗中的预测患者疾病和护理过程建模问题,考虑了包括时序性等几项特性,提出了一种端到端的深层动态神经网络.其基于LSTM,引入了处理不规则且有时序性事件的方法,还模拟医疗干预措施改变病程,根据历史和当前健康状态来估计未来结果.最近,Liu等人[78]提出了一个多任务学习框架来预测包括糖尿病在内的慢性疾病的发病,并比较了不同深度学习架构(包括CNN和LSTM)的性能.
糖尿病作为影响人类健康的常见疾病,长久以来一直损害着社会的经济,用自动化、低成本的方式来管理糖尿病的患者,辅助医疗,将创造巨大的社会效益.
3.2 心脑血管疾病
心脑血管疾病是心脏血管和脑血管疾病的统称,泛指由于高脂血症、血液黏稠、动脉粥样硬化、高血压等所导致的心脏、大脑及全身组织发生的缺血性或出血性疾病.其中心血管疾病(cardiovascular disease, CVD)是全球众多致死疾病之一,因其死亡人数占全球死亡人数的13[79].2种疾病都严重威胁人类,特别是50岁以上中老年人的健康,且有幸存者生活不能完全自理的可能性,或者有严重的并发症,例如心力衰竭(heart failure, HF).但是电子病历文本挖掘可以在多个角度辅助患者的治疗和风险管理等.例如通过电子病历计算患者HF存活风险评分,识别高风险患者并应用个体化治疗和健康生活指导将降低其死亡风险[80],且可以在出院时确定再入院风险的患者.另外,Li Bin等人[81]在心血管疾病的许多严重的预后疾病如急性心肌梗死、肺栓塞、严重的脑神经系统疾病等研究中发现风险预警模型可以探讨其风险因素,筛选出与危重疾病预后相关的严重疾病(中风、心力衰竭、肾功能衰竭).本节主要就心脑血管疾病的预测讨论数据挖掘技术辅助心血管疾病治疗的作用.
对于心脑血管疾病的预测,在医疗领域,建立可预测患者疾病的模型可以提高医院的治疗效果和效率.传统的对于心血管的治疗预测等都是通过评分来辅助决策,例如美国心脏病学会(American College of Cardiology, ACC)美国心脏协会(American Heart Association, AHA)提出基于风险因素的组合Framingham风险评分,包括高血压、糖尿病、胆固醇和吸烟状况等这些常规因素的预测模型预测心血管疾病.然而,随着电子病历系统的迅速普及,患者的大部分数据都以电子格式存储.确定疾病所需的风险因素数据存在于电子病历中,包括结构化数据如心电图、血管造影等和临床记录等非结构化数据.然而,通常为了利用结构化数据,需要大量的人力物力资源来对数据进行筛选和清洗,同时从非结构化电子病历数据中手动提取所需成本也十分昂贵[82].且心血管疾病本质上是复杂的,由多种遗传、环境(例如空气污染)和行为因素(例如饮食)引起的,需要更有效的工具来准确地预测结果,而不是依靠简单的评分系统.在数据挖掘领域,人工智能技术(如机器学习)正在彻底改变医生制定临床决策和诊断的方式,并提高心脑血管疾病风险自动化预测的水平.将医学信息技术与机器学习技术相结合,使用疾病相关数据生成的预测模型,可以提高预测准确性.其中,有监督学习算法已成功应用于心脑血管疾病的预测.Kim等人[83]使用与心血管疾病相关的健康数据进行统计分析,找出与心血管疾病相关的变量,并建立了基于深度信念网络(deep belief nets, DBN)的心血管风险预测模型.但是有监督学习也有一定的缺点,首先其需要大型数据集来训练模型并通过其他数据集进行验证.通常还需要手动标记训练数据集,比如苏嘉等人[84]针对中文电子病历特点构建的心血管疾病风险因素的标注语料库,以预测死亡率和再入院率等.此外,即使模型能在给定的训练数据集和测试集上表现良好,但是它可能由于训练数据与真实数据的差异和过拟合情况而导致偏差.针对这些问题,也有不少无监督学习算法应用到心血管疾病预测模型中,在最近的趋势下无监督深度学习在这一领域表现较好.其次,深度学习可用于分类来自异质CVD的新基因型和表型,例如肺动脉高压和心肌病等.另外,深度学习预测模型可以通过高血压、肾功能异常、肝功能异常、年龄、药物治疗和酒精摄入等因子之间的加权来预测出血和中风的风险评分,以确定患者的最佳剂量和抗凝治疗持续时间[85].最后,通过深度学习,可以从心电图模式或超声心动图预测冠状动脉钙化评分.事实证明,深度学习比其他机器学习技术(如SVM)更好.但是深度学习也有缺点,比如其通常是非线性分析,有很多参数和多层,因此可能导致过度拟合而预测性能不佳.而且,深度学习还需要大量的训练数据集,这需要各机构之间的协作,对计算机硬件的要求也较高.
脑血管疾病主要的表现就是脑卒中,也叫中风,主要分为缺血性脑卒中和出血性脑卒中.中风的预测从简单的到复杂的模型各不相同.脑卒中的风险因素是复杂的,可以从直接和间接2方面找到不同程度的因素.Leira等人[86]采用逐步回归法对数据库中选择的1 266例患有缺血性脑卒中患者和复发脑卒中患者的医疗记录进行分析并选择20个临床变量进行评估.Goyal[87]利用ICD-10编码(包含疾病特征和分类)和脑卒中患者的电子病历数据进行分析,最终利用LSTM建立脑卒中的预测模型.除此之外大多数的数据挖掘模型都结合电子病历中的医学图像辅助脑血管疾病的预测.
简而言之,对患有心脑血管疾病患者的电子病历进行数据挖掘,可以从病前、病中、病后3个阶段进行有效的预测,从而来配合医生和患者做出更好的决策.
4 总结与展望
在医疗领域中,文本电子病历是医疗单位对患者临床诊疗的数字化相关信息载体.电子病历数据中的知识对于临床决策和医药研发等都有很强的指导意义,其非结构化特征导致很难利用计算机直接进行批量分析.故将人工智能技术和大数据数据挖掘的手段应用在电子病历中是大势所趋,但是由于电子病历数据的特性,机器学习方法的应用也有特定的挑战和难点,其吸引了国内外广大学者的研究.本综述针对电子病历数据挖掘,尤其是其中的非结构数据挖掘的主要分析流程和方法进行了梳理,简要介绍了传统机器学习和深度学习常见网络结构,综述其在电子病历等方面的最新研究进展,并且探讨了在糖尿病和心脑血管疾病这样特定疾病中的应用现状和前景,为后续文本数据挖掘的研究应用提供参考.