本发明涉及医疗服务技术领域,特别涉及一种基于卷积神经网络的诊疗科室推荐方法及系统。
背景技术
随着科技的进步和医学的发展,医院诊疗科室设置也更加专业化和细分化。然而,这却给用户就医挂号时选择科室带来一定困扰,于是一些医院尤其是大型医院均增设了导诊环节,包括导诊服务人员和导诊自助系统等,其主要功能之一就是为患者推荐诊疗科室。
传统的导诊系统通常是基于规则库构建的专家系统,需要用户按照系统的引导一步步输入各种患者症状描述,然后为用户输出对应的就诊科室。但是,专家系统的构建要求相关开发人员掌握大量专业的导诊知识并编码出庞大的规则库,要求较高且任务繁重,另外用户使用专家系统进行导诊时,需严格按照系统引导一步步输入患者症状描述,较为机械和繁琐,并不便于用户使用。
技术实现要素:
本发明的目的是克服上述背景技术中不足,提供一种基于卷积神经网络的诊疗科室推荐方法及系统,通过基于大数据和神经网络的系统在输出准确率(精度)等性能指标方面可以超越现有的专家系统,且构建时不需要专业领域人员编写规则库,而是让计算机从大数据中自行学习输入到输出的映射,使得系统构建更加简便,同时用户使用时只需一次性输入患者症状描述,本发明的系统便给出推荐结果,使得用户的使用更加便捷。
为了达到上述的技术效果,本发明采取以下技术方案:
一种基于卷积神经网络的诊疗科室推荐方法,包含以下步骤:
s1.建立样本集:收集若干患者症状描述文本及其对应的就诊科室名称文本构成样本集,并从所述样本集中抽取a%的样本构成验证集,其余样本则构成训练集;a优选取值为5,
s2.创建词典:对所述样本集中所有文本进行分词,选取其中出现次数大于n次的词构成词典,同时向词典中添加一个特殊词<ukn>,所述<ukn>表示词典未包括的所有词汇;
s3.数值矩阵化样本:基于所述词典,将样本集中每一条文本转化成尺寸相同的数值矩阵;
s4.构建神经网络模型,且所述神经网络模型包括依次连接的词嵌入层、卷积层、池化层、全连接层;
s5.训练神经网络模型:对步骤s4中的神经网络模型参数初始化后,基于训练集的数据迭代优化神经网络模型参数,得到一个训练后的模型,改变参数初始化,如此训练m次,得到m个训练后的模型,其中,训练结束条件为每个样本平均参与迭代的次数大于等于a次,具体的,优选m大于等于1并小于等于5,a大于等于200;
s6.模型选择:利用验证集评估上述m个训练后的模型的性能,选择其中预测精度最高的一个模型用于诊疗科室推荐;
s7.利用步骤s3将任意患者的症状描述文本转化为数值矩阵化样本,然后将该数值矩阵化样本输入步骤s6中选择的模型中计算得到推荐的诊疗科室标签,进而得到推荐的诊疗科室名称;
本发明的方法能够针对一段患者症状描述文本,推荐与之契合的医院诊疗科室,可用于智能导诊系统中,提高导诊效率,该方法首先从文本中提取关键词,然后获取关键词的向量空间表示,再将这些词向量输入多层卷积神经网络并输出文本特征,最后将文本特征输入softmax分类器并输出推断概率最大的诊疗科室标签,且上述词向量空间、卷积神经网络的参数是通过收集的训练数据进行机器学习得到的。
进一步地,所述步骤s3具体包含以下步骤:
s3.1设定矩阵尺寸为[1,d],其中,d为正整数;优选d为大于等于5的正整数;
s3.2对每条文本进行分词,得到k个词,如果k>d,则截取k个词中前d个词构成分词列表,否则,则在k个词后填充(d-k)个<ukn>构成分词列表;
s3.3针对分词列表中的每个词从所述词典中查询得到该词对应的索引值,所述索引值为非负整数,并将分词列表映射成相应的数值矩阵,矩阵尺寸即为[1,d]。
进一步地,所述步骤s4中所述词嵌入层通过线性变换实现将输入大小为[1,d]的数值矩阵embed_input映射到大小为[d,embed_size]的数值矩阵embed_output,其中embed_size为正整数。
进一步地,所述卷积层包括三种类型的卷积核,三种类型的卷积核的尺寸大小分别为[3,embed_size]、[4,embed_size]、[5,embed_size],且每种卷积核的数量用filters_num表示。
进一步地,所述卷积层的计算过程如下:
步骤一:设某一卷积核filter的权重参数为矩阵wf、偏置参数为标量bf,wf的尺寸为[filter_size,embed_size],filter_size取值来自于集合[3,4,5]中某一值;
步骤二:卷积核filter沿输入矩阵的第一个维度做窄卷积计算,窗口滑动步幅取1,得到矩阵cf,cf的尺寸为[d-fiter_size+1,1];
步骤三:计算fc(cf+bf),fc为激活函数relu,得到矩阵ca,其尺寸与cf一致;
步骤四:对所有卷积核重复前述计算步骤。
进一步地,所述池化层对每个卷积核的ca取最大值,组合得到的最大值得到特征矩阵fv,fv的尺寸为[filters_num,1]。
进一步地,所述步骤s4中全连接层将完成如下计算:
步骤一:通过线性变换sc=fv·wcf+bcf将特征空间的分布式特征fv映射成样本标签空间的分数向量sc;
其中wcf为全连接权重矩阵,bcf为全连接偏置矩阵,sc的尺寸为[classes_num,1],classes_num表示从样本集中获取的诊疗科室种类数量,wcf的尺寸为[filters_numclasses_num],bcf的尺寸为[classes_num,1];
步骤二:基于softmax函数将sc映射为具有概率意义的矩阵labels_hat,其尺寸为[classes_num,1]。
进一步地,所述步骤s5中训练神经网络模型采用交叉熵作为损失函数,采用随机梯度下降法作为参数优化算法,在全连接层采用dropout方法来防止模型过拟合,优选dropout概率取0.5。
进一步地,所述步骤s7中取labels_hat中最大值所对应的索引值表示模型推荐的诊疗科室标签。
同时,本发明还公开了一种基于卷积神经网络的诊疗科室推荐系统,包括以下单元:
文本分词单元,用于对每条患者症状描述文本进行分词;词典创建单元,用于根据样本集创建词典;
数值化单元,用于根据词典将分词列表转化为数值矩阵;
标签处理单元,用于建立诊疗科室名称文本与其数值标签之间的映射;
样本划分单元,用于将样本集划分为测试集和验证集;
模型创建单元,用于创建卷积神经网络模型结构,由词嵌入层、卷积层、池化层、全连接层组成;
模型训练单元,用于初始化模型参数并基于训练集对模型参数进行迭代优化;
模型选择单元,用于根据验证集数据评估训练后模型的性能,并选择性能最优的模型;
模型推荐单元,用于根据输入文本输出推断概率最大的诊疗科室标签;
其中,所述文本分词单元分别与数值化单元及词典创建单元相连,数值化单元分别与词典创建单、样本划分单元及模型推荐单元相连,样本划分单元分别与标签处理单元、模型训练单元、模型选择单元相连,模型推荐单元分别与模型选择单元、标签处理单元相连,模型训练单元分别与模型创建单元、模型选择单元相连。
本发明与现有技术相比,具有以下的有益效果:
本发明的基于卷积神经网络的诊疗科室推荐方法及系统,通过基于大数据和神经网络的系统在输出准确率(精度)等性能指标方面可以超越现有的专家系统,其构建时不需要专业领域人员编写规则库,仅需利用计算机从大数据中自行学习输入到输出的映射,使得系统构建更加简便,同时用户使用时只需一次性输入患者症状描述,便可给出推荐结果,实现针对一段患者症状描述文本,推荐与之契合的医院诊疗科室,可用于智能导诊系统中,提高导诊效率。
附图说明
图1是本发明的基于卷积神经网络的诊疗科室推荐方法的流程示意图。
图2是本发明的基于卷积神经网络的诊疗科室推荐系统的示意图。
具体实施方式
下面结合本发明的实施例对本发明作进一步的阐述和说明。
实施例:
实施例一:
如图1所示,一种基于卷积神经网络的诊疗科室推荐方法,其具体步骤流程为:
第一步,创建样本集:从互联网上收集大量患者症状描述文本及其对应的就诊科室名称文本,构成样本集,本实施例中样本数量为500万条,共包含的诊疗科室名称数量为67个,并从中随机抽取5%的样本构成验证集,剩下部分构成训练集。
第二步,创建词典:对上述样本集中的所有文本进行分词后得到一个词汇集合,选取其中出现次数大于4的词构成词典,同时向词典中添加一个特殊词<ukn>,用来表示词典未包括的所有词汇,本实施例中,词典尺寸大小为48600。
第三步,数值矩阵化样本:基于上述词典,将样本集中每一条文本转化成尺寸相同的数值矩阵,具体步骤为:
(1)设定矩阵尺寸为[1,d],本实施例中d取5;
(2)对每条文本进行分词,得到k个词,如果k>d,则截取其前d个词构成分词列表,反之,则在其后填充(d-k)个<ukn>构成分词列表;
(3)针对分词列表中的每个词从上述词典中查询得到该词对应的索引值(索引值为非负整数),如此将分词列表映射成相应的数值矩阵,矩阵尺寸即为[1,d]。
第四步,构建神经网络模型:该模型包括依次连接的词嵌入层、卷积层、池化层、全连接层。
其中,所述词嵌入层通过线性变换实现将输入大小为[1,d]的数值矩阵embed_input映射到大小为[d,embed_size]的数值矩阵embed_output,此处embed_size优选取值为256。
同时,本实施例中,所述卷积层包括三种类型的卷积核,它们的尺寸大小分别为[3,embed_size]、[4,embed_size]、[5,embed_size],且每种卷积核的数量为filters_num,此处filters_num优选取值为128,具体的,卷积层的计算过程如下:
(1)设某一卷积核filter的权重参数为矩阵wf、偏置参数为标量bf,wf的尺寸为[filter_size,embed_size],filter_size取值来自于集合[3,4,5]中某一值;
(2)卷积核filter沿输入矩阵的第一个维度做窄卷积计算,窗口滑动步幅取1,得到矩阵cf,cf的尺寸为[d-fiter_size+1,1];
(3)计算fc(cf+bf),fc为激活函数relu,得到矩阵ca,其尺寸与cf一致;
(4)对所有128个卷积核重复前述计算步骤。
具体的,本实施例中,所述池化层对每个卷积核的ca取最大值,并组合这些最大值得到特征矩阵fv,fv的尺寸为[filters_num,1]。
同时,所述全连接层完成如下计算:
(1)通过线性变换sc=fv·wcf+bcf将特征空间的分布式特征fv映射成样本标签空间的分数向量sc,
其中,wcf为全连接权重矩阵,bcf为全连接偏置矩阵,sc的尺寸为[classes_num,1],classes_num表示从样本集中获取的诊疗科室种类数量即前述67,wcf的尺寸为[filters_num,classes_num],bcf的尺寸为[classes_num,1];
(2)基于softmax函数将sc映射为具有概率意义的矩阵labels_hat,其尺寸为[classes_num,1]。
第五步,训练神经网络模型:对步骤四中的模型参数初始化后,基于训练集数据迭代优化模型参数,得到一个训练后的模型,训练结束条件为每个样本平均参与迭代的次数大于等于200。
改变参数初始化,如此训练5次,得到5个训练后的模型。另外,训练神经网络模型采用交叉熵作为损失函数,采用随机梯度下降法作为参数优化算法,在全连接层采用dropout方法来防止模型过拟合,dropout概率取0.5。
第六步,模型选择:利用验证集评估上述5个模型的性能,选择其中预测精度最高的一个模型用于诊疗科室推荐。
第七步,模型推荐:利用步骤三中方法将任意患者症状描述文本转化为数值矩阵,然后将该矩阵输入步骤六中选择的模型中计算得到推荐的诊疗科室标签,进而得到推荐的诊疗科室名称。其中,具体取labels_hat中最大值所对应的索引值为模型推荐的诊疗科室标签。
实施例二
如图2所示,一种基于卷积神经网络的诊疗科室推荐系统,包括以下单元,其中,图2中虚线框内表示推荐时涉及到的处理单元,其他部分表示训练时涉及到的处理单元,且为了清楚示意,图中个别处理单元存在重复出现的情况:
文本分词单元,用于对每条患者症状描述文本进行分词;
词典创建单元,用于根据样本集创建词典;
数值化单元,用于根据词典将分词列表转化为数值矩阵;
标签处理单元,用于建立诊疗科室名称文本与其数值标签之间的映射;
样本划分单元,用于将样本集划分为测试集和验证集;
模型创建单元,用于创建卷积神经网络模型结构,由词嵌入层、卷积层、池化层、全连接层组成;
模型训练单元,用于初始化模型参数并基于训练集对模型参数进行迭代优化;
模型选择单元,用于根据验证集数据评估训练后模型的性能,并选择性能最优的模型;
模型推荐单元,用于根据输入文本输出推断概率最大的诊疗科室标签;
其中,所述文本分词单元分别与数值化单元及词典创建单元相连,数值化单元分别与词典创建单、样本划分单元及模型推荐单元相连,样本划分单元分别与标签处理单元、模型训练单元、模型选择单元相连,模型推荐单元分别与模型选择单元、标签处理单元相连,模型训练单元分别与模型创建单元、模型选择单元相连。
进行系统训练时,首先从互联网上收集大量患者症状描述文本及其对应的就诊科室名称文本,构成样本集,本实施例中样本数量为500万条,共包含的诊疗科室名称数量为67个,由样本划分单元从样本集中随机抽取5%的样本构成验证集,剩下部分构成训练集。
然后由文本分词单元对上述样本集中的所有患者症状描述文本进行分词得到一个词汇集合,再由词典创建单元选取其中出现次数大于4的词构成词典,并向词典中添加一个特殊词<ukn>,用来表示词典未包括的所有词汇,本实施例中,词典尺寸大小为48600。
然后再由数值化单元基于上述词典,将样本集中每一条文本转化成尺寸相同的数值矩阵,具体步骤为:
(1)设定矩阵尺寸为[1,d],本实施例中d取5;
(2)对每条文本进行分词,得到k个词,如果k>d,则截取其前d个词构成分词列表,反之,则在其后填充(d-k)个<ukn>构成分词列表;
(3)针对分词列表中的每个词从上述词典中查询得到该词对应的索引值(索引值为非负整数),如此将分词列表映射成相应的数值矩阵,矩阵尺寸即为[1,d]。
然后再由模型创建单元构建神经网络模型,该模型包括依次连接的词嵌入层、卷积层、池化层、全连接层。
其中,所述词嵌入层通过线性变换实现将输入大小为[1,d]的数值矩阵embed_input映射到大小为[d,embed_size]的数值矩阵embed_output,此处embed_size优选取值为256。
同时,本实施例中,所述卷积层包括三种类型的卷积核,它们的尺寸大小分别为[3,embed_size]、[4,embed_size]、[5,embed_size],且每种卷积核的数量为filters_num,此处filters_num优选取值为128,
具体的,卷积层的计算过程如下:
(1)设某一卷积核filter的权重参数为矩阵wf、偏置参数为标量bf,wf的尺寸为[filter_size,embed_size],filter_size取值来自于集合[3,4,5]中某一值;
(2)卷积核filter沿输入矩阵的第一个维度做窄卷积计算,窗口滑动步幅取1,得到矩阵cf,cf的尺寸为[d-fiter_size+1,1];
(3)计算fc(cf+bf),fc为激活函数relu,得到矩阵ca,其尺寸与cf一致;
(4)对所有128个卷积核重复前述计算步骤。
具体的,本实施例中,所述池化层对每个卷积核的ca取最大值,并组合这些最大值得到特征矩阵fv,fv的尺寸为[filters_num,1]。
同时,所述全连接层完成如下计算:
(1)通过线性变换sc=fv·wcf+bcf将特征空间的分布式特征fv映射成样本标签空间的分数向量sc,
其中,wcf为全连接权重矩阵,bcf为全连接偏置矩阵,sc的尺寸为[classes_num,1],classes_num表示从样本集中获取的诊疗科室种类数量即前述67,wcf的尺寸为[filters_num,classes_num],bcf的尺寸为[classes_num,1];
(2)基于softmax函数将sc映射为具有概率意义的矩阵labels_hat,其尺寸为[classes_num,1]。
然后由模型训练单元对步骤四中的模型参数初始化后,再基于训练集数据迭代优化模型参数,得到一个训练后的模型,训练结束条件为每个样本平均参与迭代的次数大于等于200。改变参数初始化,如此训练5次,得到5个训练后的模型。另外,训练神经网络模型采用交叉熵作为损失函数,采用随机梯度下降法作为参数优化算法,在全连接层采用dropout方法来防止模型过拟合,dropout概率取0.5。
然后由模型选择单元利用验证集评估上述5个模型的性能,选择其中预测精度最高的一个模型用于诊疗科室推荐。
推荐时,由数值化单元利用对应的方法将输入的任意患者症状描述文本转化为数值矩阵,然后由模型推荐单元根据输入文本输出推断概率最大的诊疗科室标签,进而得到推荐的诊疗科室名称,最后由标签处理单元建立诊疗科室名称文本与其数值标签之间的映射并最终得到推荐科室文本。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。