李 民 马良玉 姚 智
(南通市第一人民医院(南通大学第二附属医院) 南通 226001)
临床决策支持系统是指运用相关、系统的临床知识和患者基本信息及病情信息,加强医疗相关的决策和行动,提高医疗质量和服务水平的计算机应用系统。其核心任务是诊断预测,其目的是根据患者历史医疗数据预测当前诊断[1]。为了使决策支持结论更加准确,诊断预测任务需要充分有效地利用已有医疗数据,包括患者基本信息、电子病历、病程记录以及医嘱、检验、影像、护理信息等[2-3]。现有临床决策支持系统大多利用机器学习分类模型对结构化数据如患者基本信息、检查检验、医嘱等数据进行建模,对非结构化文本数据,主要使用基于规则的方法抽取关键词进行建模,文本数据利用率偏低[4]。能够反映患者病情的关键信息主要体现在电子病历、病程记录等文本中,有效利用此类文本数据并将其与结构化数据相结合对提高诊断预测准确率意义重大[5-7]。
为解决上述问题,本文提出一种基于深度神经网络语言模型的诊断预测框架,可以获得电子病历、病程记录等医学文本数据的深度语境表示,并将其与患者结构化数据相结合,输入到卷积神经网络分类模型中进行预测,输出最可能的诊断[8-9]。本文提出诊断预测框架,并针对南通市第一人民医院(以下简称南通一院)医疗数据构建数据集进行验证。实验结果表明使用深度神经网络语言模型对医学文本进行表示,结合结构化医疗数据进行诊断预测,较之以往方法F1值提高了13.66%,充分验证了本文提出的诊断预测框架的有效性和先进性。
结构化数据主要是指患者就诊产生的基本信息、检查检验、医嘱等数据。这部分数据存储于关系数据库中,结构清晰,较易从中筛选特征并抽取特征向量用于诊断分类系统[10-12]。选取多个特征作为结构化数据的分类特征,所有特征分为数值型和多项型。数值型指该维度特征值是数字,包括整形和浮点数;多项型指该维度特征值有多个可选值,见表1。
表1 结构化数据特征
2.2.1 命名实体识别 非结构化数据主要是指患者就诊产生的医学纯文本,如电子病历、病程记录等。高效分析该部分数据是诊断预测的关键。命名实体识别是一项序列标注任务,该任务在给定的文本序列上预测序列中需要标注的标签。使用目前最成功的语言模型双向编码器表征(Bidirectional Encoder Representations from Transformers, BERT)来识别文本中的医学实体。其中Classification(CLS)为句子开始标志,输入句子为“患者服用华法林后牙龈出血”,在BERT模型中经过多层自注意力机制和残差网络计算,最终识别出3个实体:华法林(药品)、牙龈(部位)、出血(症状),见图1。
图1 基于BERT的医学命名实体识别
2.2.2 关系抽取 关系抽取使用模板匹配方法。该方法利用医学专家根据经验预先定义的关系模板库,从模板库中对输入文本两个给定实体进行上下文匹配,如果满足模板则输出模板对应关系。在一个句子中,如果有两个实体类型匹配到关系模板的实体1和实体2,则判定其存在对应关系,见表2。
表2 实体关系模板
诊断分类的本质是多分类任务,采用卷积神经网络(Convolutional Neural Networks, CNN)完成最终诊断预测,见图2。其中x1为个人信息、医嘱、检验等结构化数据表示矩阵,x2为电子病历、病程记录、检查报告等非结构化数据表示矩阵,X为输入矩阵,其计算方式如下:
x=x1⊕x2
ci=f(WTxi:i+h-1+b)
c=[c1,c2,…,cn-h+1]
从隐藏层z到输出层y,通过softmax函数计算该患者属于每个诊断的概率,然后取概率最大的一个作为本次预测的诊断,计算方式如下:
y=softmax(W(S)z+b)
图2 基于卷积神经网络的诊断预测
实验中使用的数据集是在南通一院4个月的就诊数据基础上生成的,通过多名医学专家进行人工标注,包含病程记录和检查报告等文档共1 800份。本文提出的方法需要识别28类实体和32类关系。28类实体分别为:治疗、检查发现、检验指标、属性值、分型、属性值单位、部位、体征指标、症状、诱因、程度、症状+、药物、检查指标、发生时间、性质、手术、检查、诊断+、检验、持续时间、类型、频率、检查描述、分期、转归、护理和诊断。32类关系分别为:症状的发生时间、诊断的发生时间、症状的持续时间、诊断的持续时间、症状的部位、诊断的部位、症状的程度、诊断的程度、症状的性质、诊断的性质、症状的频率、诊断的频率、症状的诱因、诊断的诱因、症状的转归、诊断的转归、诊断的类型、诊断的分期、诊断的分型、检查发现的部位、检查描述的部位、检查的结果、检查的描述、检查的指标、检验指标的值、检查指标的值、体征指标的值、检验指标的单位、检查指标的单位、体征指标的单位、药物的剂量、药物的剂量单位。
为验证本文提出框架的有效性,选择分类模型最常用评价指标:精确率(Precision)、召回率(Recall)和二者的调和平均值F1,计算公式如下。公式中TP指被模型预测为正的正样本、FP指被模型预测为正的负样本、TN指被模型预测为负的负样本、FN指被模型预测为负的正样本。
精确率度量分类器对某一类别预测结果的准确性,对所有类别求和取均值后可以得到整体精确率。
召回率度量分类器对某一类别预测结果的覆盖面,对所有类别求和取均值后可以得到整体覆盖面。
调和平均值F1度量分类器对某一个类别预测结果的精确性和覆盖面。它是精确率和召回率的调和平均值。
实验中使用两种方法进行对比,第1种方法只用结构化数据进行诊断预测,作为本文的对比方法,记为基线方法(Baseline);第2种方法即本文提出的方法,将结构化和非结构化数据相结合进行诊断预测,记为本文提出的方法(Ours),见表3。根据实验结果,本文提出的框架在数据集上的结果与基线方法相比,精确率、召回率和F1 3个指标均有大幅提高。其中精确率提高了14.04%,召回率提高了13.29%,F1值提高了13.66%,充分验证本文提出诊断预测框架的有效性。
表3 实验结果(%)
诊断预测是临床辅助决策系统的核心任务,该任务根据患者的结构化数据(个人信息、医嘱、检验等)和非结构化数据(病程记录、检查报告等)预测患者诊断,是医学研究和应用领域最复杂的任务之一。然而现有诊断预测系统对非结构化文本数据的利用率偏低,导致诊断预测准确率有待提高。近年来深度学习技术受到广泛关注。与传统的机器学习模型需要领域专家手工完成特征工程不同,深度学习模型可从源数据中自动学习数据表示,建立与任务相关的特征。患者电子病历等数据的积累为深度学习预测患者诊断奠定了基础。临床诊断预测模型在医学研究与实践中的应用广泛。借助临床预测模型医生和患者可以共同做出决策,临床研究者可以更精准地筛选合适的研究对象,政府部门与卫生管理者可以更好地进行医疗质量管理,合理配置医疗资源[12-13]。此外临床预测模型的应用价值体现在疾病的三级预防体系。一是疾病的一级预防。临床预测模型可以给患者和医生提供基于当前健康状态、未来患有某疾病的量化风险值(概率),为健康教育和行为干预提供更直观、有力的科学工具。二是疾病的二级预防。临床预测模型尤其是诊断模型,常可借助无创、低成本、易采集的指标给出高灵敏度和特异度的诊断方案,践行“早发现,早诊断,早治疗”的疾病预防理念,具有重要卫生经济学意义。三是疾病的三级预防。预后模型可对疾病的复发、死亡、伤残以及出现并发症的概率给出量化估算,从而指导对症治疗和康复方案的制定,防止伤残和促进功能恢复,提高生存质量,延长寿命,降低病死率。
诊断预测是指利用大规模的医疗数据建成诊断预测模型,根据就诊数据预测患者可能发生的疾病。该任务在临床辅助决策系统和疾病预防体系中具有广泛应用。本文使用BERT、CNN等先进的深度学习模型构建一种诊断预测框架。该框架可以将患者的非结构化文本数据和结构化数据有机结合,对患者病情做出更准确预测。实验结果表明,将非结构化文本数据与结构化数据相结合,能够有效提高诊断预测的准确率,为临床决策支持系统后续的诊疗推荐等任务奠定基础。