一种基于融合深度学习的诊疗科室分类方法
技术领域
本发明涉及医疗服务技术领域,特别涉及一种基于融合深度学习的诊疗科室分类方法。
背景技术
随着医学的进步和发展,医院对于科室的设置也更专业化,随之带来的问题是用户选择科室带来一定的困难,为了解决这个问题各大医院都增加了导诊环节,包括导诊人员和自主导诊服务,主要是帮助患者推荐诊疗科室。
传统的导诊服务一般是基于医学规则构建的专家系统,要求用户按照系统的引导一步步输入症状描述,然后通过计算给出需要就诊的科室。因为专家系统的构建需要开发人员掌握大量专业的导诊知识并构建出庞大的规则库,通常要求比较高且任务繁重,更重要的是对于专家系统来说,用户使用时,需要一步步的输入患者症状描述,比较机械不便于用户使用。
基于词的科室分诊模型,虽然引入了端到端的算法框架,但是分词本身引入了误差,况且是致命的。
发明内容
本发明主要是克服上述背景中的不足,提出一种基于融合深度学习的诊疗科室分类方法。构建基于大数据和神经网络的算法系统在准确率等指标上可以超越现有的专家系统和基于词的模型系统,因为是端到端的,并不需要编写规则库,而是直接从数据中自行学习到输入到输出的映射,使得系统构建更加简便,使用时,用户只需要一次输入患者症状描述,本发明的系统给出推荐结果,用户使用方便、快捷。
实现上述的技术效果,本发明采取以下技术方案:一种基于融合深度学习的诊疗科室分类方法,包含以下步骤:
(1)预处理患者咨询数据;
(2)使用基于词的科室分诊模型,将患者咨询内容使用结巴分词转化为词向量,将科室进行向量化,训练模型;
(3)使用基于拼音的科室分诊模型,将患者咨询内容分成单个字先转化为拼音再转化为向量,将科室进行向量化,训练模型;
(4)使用基于字符的科室分诊模型,将患者咨询内容分成单个字转化为向量,将科室进行向量化,训练模型;
(5)融合基于词的科室分诊模型、基于拼音的科室分诊模型、基于字符的科室分诊模型,作为最终的科室分诊模型;
(6)将患者咨询数据输入到最终的科室分诊模型中,进而得到推荐的诊疗科室名称。
进一步的,所述的步骤(2)中基于词的科室分诊模型包括依次连接的嵌入层、卷积层、池化层、dropout层、全连接层;
所述的步骤(3)和步骤(4)中基于拼音的科室分诊模型和基于字的科室分诊模型均包括依次连接的嵌入层、LSTM、LSTM、全连接层。
进一步的,所述的步骤(5)中科室分诊的融合模型采用的是加权平均,权重是根据模型的准确率计算得到。
进一步的,所述的步骤(1)具体如下:
建立样本集:收集若干患者症状文本及其对应的科室名称文本构成样本集,将样本集分成验证集和训练集。
进一步的,所述的步骤(2)具体如下:
(2.1)创建词典C1:对样本中所有文本进行分词,选取其中出现次数大于N次的词构成词典,同时向词典中加入一个占位符<PAD>,<PAD>表示词典未包括的所有词汇;
(2.2)数值矩阵化样本V1:基于词典C1,将样本集中每一条文本转化成尺寸相同数值矩阵A1;
(2.3)构建基于词的科室分诊模型M1:模型M1包括依次连接的嵌入层、卷积层、池化层、dropout层、全连接层;
(2.4)训练神经网络模型:对基于词的科室分诊模型M1中的神经网络参数初始化后,用步骤(2.2)的数值矩阵A1进行数据迭代优化神经网络模型参数,得到训练后的模型。
进一步的,所述的步骤(2.2)具体如下:
(2.2.1)设定矩阵尺寸[1,D1],其中D1为正整数;
(2.2.2)对每条文本进行分词,得到K1个词,如果K1>=D1,则取前D1个词构成分词列表,否则,则在K1个词后面填充D1-K1个<PAD>构成分词列表;
(2.2.3)针对分词列表中的每个词从词典C1中查询得到该词对应的索引值,所述索引值为非负整数,并将分词列表映射成相应的数值矩阵,矩阵尺寸为[1,D1]。
进一步的,所述的步骤(3)具体如下:
(3.1)创建词典C2:对样本中所有文本出现的字进行统计,选取所有出现的字构成词典,同时向词典中加入一个占位符<PAD>,<PAD>表示词典未包含的所有字;
(3.2)数值矩阵化样本V2:基于词典C2,将样本集中每条文本转化成尺寸相同的数值矩阵A2;
(3.3)构建基于拼音的科室分诊模型M2:模型M2包括依次连接的嵌入层、LSTM、LSTM、全连接层;
(3.4)训练神经网络模型:对基于拼音的科室分诊模型M2中的神经网络参数初始化后,用步骤(3.2)的数值矩阵A2进行数据迭代优化神经网络模型参数,得到训练后的模型。
进一步的,所述的步骤(3.2)具体如下:
(3.2.1)设定矩阵尺寸[1,D2],其中D2为正整数;
(3.2.2)对每条文本进行分字,得到K2个字,如果K2>=D2,则取前D2个字构成分字列表,否则,则在K2个字前面填充D2-K2个<PAD>构成分字列表;
(3.2.3)针对分词列表中的每个字从词典C2中查询得到该字对应的索引值,所述索引值为非负整数,并将分字列表映射成相应的数值矩阵,矩阵尺寸为[1,D2]。
进一步的,所述的步骤(4)具体如下:
(4.1)创建词典C3:对样本中所有文本出现的字进行转拼音,然后对拼音出现的次数进行统计,选择其中所有的拼音构成词典,同时向词典中加入一个占位符<PAD>,<PAD>表示词典未包含的所有拼音;
(4.2)数值矩阵化样本V3:基于词典C3,将样本集中每条文本转化成尺寸相同的数值矩阵A3;
(4.3)构建基于字符的科室分诊模型M3:模型M3包括依次连接的嵌入层、LSTM、LSTM、全连接层;
(4.4)训练神经网络模型:对M3中的神经网络参数初始化后,用步骤(4.2)的数值矩阵A3进行数据迭代优化神经网络模型参数,得到训练后的模型。
进一步的,所述的步骤(4.2)具体如下:
(4.2.1)设定矩阵尺寸[1,D3],其中D3为正整数;
(4.2.2)对每条文本进行分字,转拼音,得到K3个拼音,如果K3>=D3,则前D3个拼音构成分拼音列表,否则,则在K3个拼音前面填充D3-K3个<PAD>构成拼音列表;
(4.2.3)针对分拼音列表中的每个拼音从词典C3中查询得到该拼音对应的索引值,所述索引值为非负整数,并将分拼音列表映射成相应的数值矩阵,矩阵尺寸为[1,D3]。
本发明和现有技术相比,具有以下的有益效果:
本发明是基于融合深度学习的诊疗科室分类方法,主要是通过大数据和深度学习算法实现,系统在输出准确率等性能指标方面可以超过现有的专家系统,构建过程不需要专业领域人员编写规则库,只需要计算机从大数据中自行学习输入到输出的映射,使得系统构建更加简便,同时对于用户而言只需要一次性输入患者症状描述,便可给出推荐结果,可以针对用户的一段关于症状的文本描述,推荐与之最匹配的医院诊疗科室,用在导诊系统中,提高导诊效率。
附图说明
图1是本发明的基于融合深度学习的诊疗科室分类方法的流程示意图。
具体实施方式
下面结合本发明的实施对本发明做进一步的阐述和说明。
如图1所示,一种基于融合深度学习的诊疗科室分类方法,具体步骤流程为:
第一步,创建样本集:从互联网上收集大量患者症状描述文本及其对应的就诊科室名称,构成样本集,样本数量为500万条,包含诊疗科室名称45个,并从中随机抽取10%的样本构成验证集,剩下部分构成训练集。
第二步向量化
创建词典1:对上述样本集中的所有文本进行分词后得到一个词汇集合,选择其中出现次数大于5的词构成词典,同时向词典中添加一个占位符<PAD>,用来表示词典中未包含的所有词汇,本实施例中词典尺寸大小为800000。
创建词典2:对上述样本集中的所有文本进行分字后得到一个字集合,选择所有出现的字构成词典,同时向词典中添加一个占位符<PAD>,用来表示词典未包含的所有字,本实施例中词典大小为8000。
创建词典3:对上述样本集中的所有文本进行转拼音后得到一个拼音集合,选择所有出现的拼音构成词典,同时向词典中添加一个占位符<PAD>,用来表示词典未包含的所有拼音,本实施例中总词典大小为800。
数值矩阵化样本1:基于词典1,将样本集中每一条文本转化为尺寸相同的数值矩阵,其中步骤为:
(1)设定矩阵尺寸为[1,D1]本实施例中为300
(2)对每条文本进行分词,得到K1个词,如果K1>D1则截取前D1个词构成分词列表,反之,则在其后填充(D1-K1)个<PAD>构成分词列表;
(3)针对分词列表中的每个词从上述词典中查询得到该词对应的索引值(索引值为非负整数),如此将分词列表映射成相应的数值矩阵,矩阵尺寸即为[1,D1]。
数值矩阵化样本2:基于词典2,将样本集中每一条文本转化为尺寸相同的数值矩阵,集体步骤为:
(1)设定矩阵尺寸为[1,D2]本实施例中为200
(2)对每条文本进行分词,得到K2个字,如果K2>D2则截取前D2个词构成分词列表,反之则在其前填充<D2-K2>个<PAD>构成分字列表
(3)针对分字列表中的每个词从上述词典中查询得到该词对应的索引值(索引值为非负整数),如果将分字列表映射成相应的数值矩阵,矩阵尺寸即为[1,D2]
数值矩阵化样本3:基于词典3,将样本集中每一条文本转化为尺寸相同的数值矩阵,集体步骤为:
(1)设定矩阵尺寸为[1,D3]本实施例中为200
(2)对每条文本进行分词,得到K3个字,如果K3>D3则截取前D3个拼音构成分拼音列表,反之则在其前填充<D3-K3>个<PAD>构成分拼音列表
(3)针对分拼音列表中的每个词从上述词典中查询得到改词对应的索引值(索引值为非负整数),如果将分拼音列表映射成相应的数值矩阵,矩阵尺寸为[1,D3]
第三步,构建词的神经网络网络模型,该模型包括依次连接的词嵌入层、卷积层、池化层、全连接层。其中,所述词嵌入层通过线性变换实现将输入大小为[1,D1]的数值矩阵映射到大小为[D1,embed_size]的数值矩阵,此处embed_size优选取值为100,同时,本实施例中,所述卷积层包括5种类型的卷积核,他们的尺寸大小分别为[1,embed_size]、[2、embed_size]、[3,,embed_size]、[12,embed_size]、[30,embed_size],且每种卷积核的数量大小为FILTERS_NUM,此处FILTERS_NUM优选取值为64,具体的卷积层的计算过程如下:
具体的卷积层的计算过程如下
(1)设某一卷积核Filter的权重参数为矩阵WF、偏置参数为标量bf,WF的尺寸为[filter_size,embed_size],filter_size取值来自于集合[1,2,3,12,30]中某一值
(2)卷积核Filter沿输入矩阵的第一个维度做窄卷积计算,窗口滑动步幅取1,得到矩阵CF,CF的尺寸为[D-filter_size+1,1];
(3)计算fc(CF+bf),fc为激活函数RELU,得到矩阵CA,其尺寸与CF一致;
(4)对所有64个卷积核重复计算过程。
具体的,本实施例中,所述池化层对每个卷积核的CA取最大值,并组合这些最大值得到特征矩阵FV,FV的尺寸为[FILTERS_NUM,1].
同时,所述全连接层完成如下计算:
(1)通过线性变化SC=FV*Wcf+Bcf将特征空间的分布式特征FV映射成样本标签空间的分数向量SC,其中Wcf为全连接权重矩阵,Bcf为全连接偏置矩阵,SC的尺寸为[1,CLASSES_NUM],CLASSES_NUM表示从样本集中获取的诊疗科室种类数量即前述45,Wcf的尺寸为[5*FILTERS_NUM,CLASSES_NUM],Bcf的尺寸为[1,CLASSES_NUM];
(2)基于softmax函数将SC映射到具有概率意义的矩阵LABELS_HAT其尺寸为[1,CLASSES_NUM].
构建字的神经网络模型:模型包括依次链接的嵌入层、LSTM、LSTM、全连接层,这里嵌入层的维度优选64,这里前一个LSTM输出返回所有timesteps的输出结果,后一个LSTM返回最后一个时刻的输出结果;
构建拼音的神经网络模型:模型包括依次链接的嵌入层、LSTM、LSTM、全连接层,这里嵌入层的维度优选30,这里前一个LSTM输出返回所有timesteps的输出结果,后一个LSTM返回最后一个时刻的输出结果;
训练神经网络模型:步骤四中的三个模型分别进行参数初始化后,基于训练集数据迭代优化模型参数,得到一个训练后的模型;
训练神经网络模型采用交叉熵作为损失函数,采用随机梯度下降法作为参数优化,在全连接层采用dropout方法防止模型过拟合,dropout概率取0.2;
第四步,模型融合,利用上面训练的是三个模型利用对预测结果进行加权平均,其中权重为[0.5,0.3,0.2]
第五步,模型输出,利用第五步的融合模型,输出模型预测结果;
第六步,模型推荐:利用步骤三中的方法将任意患者症状描述文本转化为数值矩阵,利用第五步的模型输出计算得到推荐的诊疗科室标签,进而得到推荐的诊疗科室名称。其中具体取LABLES_HAT中最大值所对应的索引值为模型推荐的诊疗科室标签。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的实例实施方式,然而本发明并不局限于此,对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变形和改进,这些变形和改进也视为本发明的保护范围。