一种基于bgru-attention-crf的bio-ner智慧医疗分诊系统
技术领域
1.本发明涉及智慧医疗技术领域,具体涉及一种基于bgru-attention-crf的bio-ner智慧医疗分诊系统。
背景技术:
2.根据2022年国家卫生局数据,我国医患的比大约是1∶1500,这远远低于欧美国家的1∶200左右。根据已有数据分析,在患者初次就诊阶段,会因为对自身的病情症状无法匹配正确的科室产生疑惑,从而耽误最佳的治疗时间。随着互联网的发展,越来越多的医院开始采用智慧医疗分诊系统缓解医疗资源的压力。国内的智慧医疗分诊系统主要通过问答系统,缩小疾病范围,最后为患者提供对应的科室。总的来说,智能分诊系统需要多轮输入,部分系统会通过命名实体识别技术(ner)对患者提供的病情资料、电子病历等信息进行关键词识别,最后将识别出的关键词与已有数据库的进行相似度匹配,从而为患者推荐相应的科室。
3.医疗命名实体识别技术(bio-ner)是自然语言处理中的一项基本任务,其主要任务是对于医疗文本数据中的重要医学术语进行数据标注,比如症状、手术和药物等。在医疗分诊系统的实际应用中,患者往往对自己的病情描述不清,使用bio-ner可以提取患者病情的关键信息,有助于进一步的病情判断。
4.目前,针对医疗命名实体识别技术的机器学习方法主要有hmm、crf以及blstm-crf等。其中,隐马尔科夫模型(hmm)为生成式模型,下一状态的预测只依赖于上一状态的概率分布,没有融合前后文信息,条件随机场(crf)可以计算全局最优,但是需要自己定义特征,而且训练代价大、复杂度高。blstm-crf通过blstm训练模型的转移特征融合前后文信息,再通过crf计算最优解,但是blstm计算量大,训练参数多,对于长数据容易发生梯度消失,而且由于信息是时序输入,后面的信息容易覆盖前面的信息。综上,现有的医疗命名实体识别技术识别准确度有待提高。
5.基于此,我们提出一种基于bgru-attention-crf的bio-ner智慧医疗分诊系统。
技术实现要素:
6.本发明的目的在于克服现有技术中存在的上述问题,提供一种基于bgru-attention-crf的bio-ner智慧医疗分诊系统,解决现有智慧医疗分诊系统识别率准确率低等缺陷,有效缓解医疗资源不足的情况。
7.为实现上述技术目的,达到上述技术效果,本发明是通过以下技术方案实现:
8.一种基于bgru-attention-crf的bio-ner智慧医疗分诊系统,包括一种智慧医疗分诊系统和一种基于bgru-attention-crf算法,智慧医疗分诊系统通过云服务器建立;
9.所述智慧医疗分诊系统包括用户模块和远程服务模块,所述远程服务模块包括文本预处理模块,特征识别模块,数据库单元模块以及科室匹配模块,所述基于bgru-attention-crf算法位于特征识别模块中;
10.还包括以下步骤:
11.步骤201:在云端数据库储存收集过往病人的主诉信息和电子病历,进行数据预处理后,人工标注医疗命名识别类型作为原始训练集;
12.步骤202:对数据进行预处理,将原始训练数据按照比例分为训练集、验证集、测试集;
13.步骤203:构建bgru-attention-crf神经网络,用于命名实体识别,利用测试集和验证集对神经网络进行训练;
14.步骤204:将命名实体传入科室匹配模块,与过往病人的主诉信息和电子病历中的关键词进行文本相似度计算,得到推荐科室。
15.优选地,所述用户模块为android应用程序。
16.基于上述技术特征,用于和云端数据库交互数据。
17.优选地,所述步骤203中,bgru神经网络结构采用递归神经网络,属于rnn、lstm的变体;bgru网络是一种基于学习时间序列数据关系的循环结构,和采用一层双向gru网络。
18.基于上述技术特征,采用一层双向gru网络能够更加有效地捕获长文本之间的语义关系1
19.优选地,所述步骤203中,gru的输入序列为{x
t
|x1,x2,...,xn},隐藏层序列中间状态为最终状态为{h
t
|h1,h2,...,hn};gru网络重置门401r
t
、更新门402z
t
,输出序列的计算式子如下:
20.z
t
=σg(wzx
t
+u
zht-1
+bz)
21.r
t
=σg(wrx
t
+u
rht-1
+br)
[0022][0023][0024]
式中,x
t
为输入序列,r
t
为重置门、z
t
为更新门,
‘⊙’
为hadamard点积,为t时刻隐藏层的中间状态,h
t
为t时刻隐藏层的最终状态,h
t-1
为t-1时刻隐藏层的最终状态,bz,br,bh表示偏置项,wz,wr,wh,wo,uz,ur,uh表示可训练矩阵,σg为sigmoid函数。
[0025]
基于上述技术特征,σg为sigmoid函数,表示sigmoid激活函数
[0026]
优选地,所述步骤203中,在bgru网络单元之后增加的dropout层;在dropout层后增加multi-head attention,多头注意力机制不仅可以更好地使得特征向量之间更好地融合,而且可以让模型关注不同子空间的信息;相当于对同一个特征空间采用不同的滤波器从而得到不同信息,输出序列的计算式子如下:
[0027]
q=w
qh[0028]
k=w
kh[0029]
v=wvh
[0030]
headi=attention(qi,ki,vi)
[0031]
multihead(q,k,v)=concat(head1,head2,...,headn)wo[0032]
其中,dk
为q、k特征向量的维度,dk=8,q、k、v均为dropout层输出的矩阵。
[0033]
基于上述技术特征,在bgru网络单元之后增加的dropout层,减少过拟合。
[0034]
优选地,所述步骤203中,采用线性条件随机场和维特比进行编码,得到最终的命名实体,crf适用于序列标注问题,crf的优点在于不仅可以考虑相邻标注之间的关系,而且通过维特比解码可以求出当前输入下相对最优的序列标注;和使用代表输入序列,代表预测的标注,代表序列所有可能的标注的集合,则当已知输入序列的前提下,的标注序列为的条件概率公式为,
[0035][0036]
其中,tk(y
i-1
,yi,x,i)是转移矩阵的特征,来自bgru-attention,λk是转移矩阵系数;s
l
(yi,x,i)是发射矩阵的特征,来自神经网络的参数更新,μ
l
是发射矩阵系数。
[0037]
基于上述技术特征,当tk(y
i-1
,yi,x,i)满足特征条件取值为1,否则取值为0;当s
l
(yi,x,i)满足特征条件取值为1,否则取值为0。
[0038]
优选地,所述步骤203中,在训练过程中,目标函数是使得尽量大,损失函数采用对数模型,将损失函数转化为对数线性模型,损失函数如下式所示,优化器选取sdg优化器,
[0039][0040][0041]
基于上述技术特征,目标函数是使得尽量大,为了使得计算简便。
[0042]
优选地,所述步骤203中,viterbi是一种动态规划算法,可以找到一条相对最优路径,即最可能的标注(命名实体),所得相对最优命名实体如下式所示,
[0043][0044]
基于上述技术特征,在验证过程中,通过viterbi算法利用在训练过程中的转移矩阵和发射矩阵对模型进行解码。
[0045]
综上所述,本发明包括以下至少一种有益效果:
[0046]
第一,本发明用于远程问诊,患者在线上得到科室建议之后,可以远程匹配相应科室的医生,在一定程度上缓解了医疗资源的不足。
[0047]
第二,本发明提出基于bgru-attention-crf算法利用深度学习网络进行文本特征提取,提高了分诊科室建议的准确率。
[0048]
第三,本发明在用户模块增加了语音识别系统,提高了患者的使用感受,特别方便一些不会输入法的老人,使其也能够及时问诊。
[0049]
综上,本技术通过智慧医疗分诊系统通过云服务器建立,病人可以在远程医疗客
户端输入自己的病情资料,智慧医疗分诊系统运用基于bgru-attention-crf算法对目标文本进行命名实体识别,识别后的结果与云端数据库的进行相似度匹配,在云服务器上在线判断结果,为患者提供适合的科室,从而解决现有智慧医疗分诊系统识别率准确率低等缺陷,有效缓解医疗资源不足的情况。
附图说明
[0050]
图1是本发明的结构示意图;
[0051]
图2是本发明的具体实施流程图;
[0052]
图3是本发明基于bgru-attention-crf算法的神经网络结构示意图;
[0053]
图4是本发明构建的gru算法的神经网络结构示意图;
[0054]
附图中,各标号所代表的部件列表如下:
[0055]
1-用户模块,2-远程服务模块,21-文本预处理模块,22-特征识别模块,23-数据库单元模块,24-科室匹配模块。
具体实施方式
[0056]
以下结合附图1-4对本发明作进一步详细说明。
[0057]
本发明提供的一种实施例:一种基于bgru-attention-crf的bio-ner智慧医疗分诊系统,包含一种智慧医疗分诊系统和一种基于bgru-attention-crf算法,智慧医疗分诊系统通过云服务器建立,这样病人可以在远程医疗客户端输入自己的病情资料,智慧医疗分诊系统运用基于bgru-attention-crf算法对目标文本进行命名实体识别,识别后的结果与云端数据库的进行相似度匹配,在云服务器上在线判断结果,为患者提供适合的科室。智慧医疗分诊系统包括用户模块1和远程服务模块2,用户模块1为android应用程序,用于和云端数据库交互数据,和用于对用户对自身病情症状等进行相关文字描述;或者用户通过语音叙述病情后,在app端进行语音识别后将所得文本信息上传至远程服务器模块2。
[0058]
远程服务模块2包括文本预处理模块21,特征识别模块22,数据库单元模块23以及科室匹配模块24。
[0059]
文本预处理模块21,将用户端所获取的病情数据进行停用词、分词处理,转化为稠密向量。具体为主要对输入的描述性语言进行预处理,利用事先建立好的停用词表将病情描述中包含停用词的语言剔除,并且利用jieba库对其进行分词处理,然后利用已经训练好的中文词向量word2vec将输入字词转化为稠密向量进入特征识别模块22。
[0060]
特征识别模块22,基于bgru-attention-crf算法内置其中,内置的基于bgru-attention-crf算法对输入的稠密向量进行词性标注和命名实体识别,获得输出的疾病命名实体,如图3所示。
[0061]
在本具体实施方式中,将命名实体分为以下5种,如下表1所示:
[0062]
表1:医疗命名实体类型及其示例
[0063][0064][0065]
每类标签分别用b、i和o来表示对应字符位于每个实体的位置,b表示每个实体的开头,i表示每个实体的结尾,o表示不属于命名实体,故本发明一共有11种标签,分别为b-药物,i-药物,b-部位,i-症状,b-检查,i-检查,b-疾病,i-疾病,o。例如,“我好像得了心绞痛”这句话正确的命名实体标注应为表2所示:
[0066]
表2
[0067]
输入我好像得了心绞痛命名实体oooob-疾病i-疾病i-疾病
[0068]
数据库模块23:位于云端服务器,用于储存医院收集过往病人的主诉信息和电子病历。
[0069]
科室匹配模块24:位于云端服务器,将特征识别模块22所得的命名实体识别与数据库模块23中各个科室中过往病人的主诉信息和电子病历中的关键词进行文本相似度计算,所得相似度最高的科室,即为推荐科室,从而根据已经有的关键词为患者匹配科室。云端服务器将所得推荐科室发送至用户手机端。
[0070]
如图2所示,一种基于bgru-attention-crf的bio-ner智慧医疗分诊系统,还包括以下步骤:
[0071]
步骤201:在云端数据库储存收集过往病人的主诉信息和电子病历,进行数据预处理后,人工标注医疗命名识别类型作为原始训练集;
[0072]
将过往病人的主诉信息和电子病历作为原始数据,首先将原始数据按照科室类别划分后,进行停用词处理,利用事先建立好的停用词表将病情描述中包含停用词的语言剔除,并且利用jieba库对其进行分词处理。本发明选取约30%的数据作为命名实体的训练数据集,其中,每个科室所含的数据量均等,然后进行人工标注。最后,利用已经训练好的词向量word2vec将输入字词转化为稠密向量。
[0073]
步骤202:对数据进行预处理,将原始训练数据按照比例分为训练集、验证集、测试集;
[0074]
本实例训练数据一共12930例,并且按照约6∶3∶1比例分为训练集、测试集、验证集。其中,将数据集长度s设置为50,超过50就截断数据,少于50就对数据进行补零。本发明使用小批量梯度下降法,将batch size设置为16。其中小批量梯度下降法可以在保证内存的前提下,使得损失函数本身更加平滑,权重参数向极值所在的方向更新,从而使得模型更快的收敛。本技术使用中文词向量库word2vec,向量特征维度为128。故输入数据x的维度为
16
×
50
×
128。
[0075]
步骤203:如图3所示,构建bgru-attention-crf神经网络结构,用于命名实体识别,利用测试集和验证集对神经网络进行训练,使之达到最高精度。
[0076]
bgru(bidirectional gated recurrent unit)神经网络结构采用递归神经网络,属于rnn、lstm的变体。与传统的神经网络相比,bgru在一定程度上缓解了rnn的梯度消失问题,并且在网络结构上优化了lstm,减少了训练的参数和训练的时间。bgru网络是一种基于学习时间序列数据关系的循环结构,通过对rnn、lstm等循环网络结构的优化,lstm主要使用三个门函数来控制跨越时间步的信息流,用来判断前面信息是需要被保留还是被遗忘。然而,与lstm相比,gru仅仅设置重置门和更新门,这使得gru不仅缓解了梯度消失的问题,而且在计算时间方面更简单、更快。本发明采用一层双向gru网络,能够更加有效地捕获长文本之间的语义关系。
[0077]
如图4所示,gru的输入序列为{x
t
|x1,x2,...,xn},隐藏层序列中间状态为最终状态为{h
t
|h1,h2,...,hn}。本发明的gru网络重置门401r
t
、更新门402z
t
,输出序列的计算式子如下:
[0078]zt
=σg(wzx
t
+u
zht-1
+bz)
[0079]rt
=σg(wrx
t
+u
rht-1
+br)
[0080][0081][0082]
式中,x
t
为输入序列,r
t
为重置门、z
t
为更新门,
‘⊙’
为hadamard点积,为t时刻隐藏层的中间状态,h
t
为t时刻隐藏层的最终状态,h
t-1
为t-1时刻隐藏层的最终状态,bz,br,bh表示偏置项,wz,wr,wh,wo,uz,ur,uh表示可训练矩阵,σg为sigmoid函数,表示sigmoid激活函数
[0083]
在bgru网络单元之后增加的dropout层,减少过拟合。如图3所示,在dropout层后增加multi-head attention,多头注意力机制不仅可以更好地使得特征向量之间更好地融合,而且可以让模型关注不同子空间的信息。相当于对同一个特征空间采用不同的滤波器从而得到不同信息,输出序列的计算式子如下:
[0084]
q=w
qh[0085]
k=w
kh[0086]
v=wvh
[0087]
headi=attention(qi,ki,vi)
[0088]
multihead(q,k,v)=concat(head1,head2,...,headn)wo[0089]
其中,其中,dk为q、k特征向量的维度,dk=8,q、k、v均为dropout层输出的矩阵。
[0090]
本发明设置h
t
的维度为64,bgru最终输出h={h
t
|h1,h2,...,hn}来自图3中两层不同方向gru的拼接。在经过dropout层后,按照33%的比例将输出矩阵随机调整至零后输入
multi-head attention层。其中,h的维度为b
×s×
d,其中b为batch size=16,s为句子长度50,特征维度为64。multi-head attention将所得矩阵h分别进行不同的线性变换,得到q、k、v三个矩阵,维度为b
×s×
d。为了通过多种注意力机制学习不同子空间的语义,设置超参数head的数量为8,即将q、k、v在特征维度上平均分割成8份,通过attention计算出每个headi之后,经过拼接和线性变化最终得到crf所需发射矩阵s
l
(yi,x,i)。
[0091]
如图3所示,本发明采用线性条件随机场(crf)和维特比进行编码,得到最终的命名实体,crf适用于序列标注问题,crf的优点在于不仅可以考虑相邻标注之间的关系,而且通过维特比解码可以求出当前输入下相对最优的序列标注。本发明使用代表输入序列,代表预测的标注,代表序列所有可能的标注的集合,则当已知输入序列的前提下,的标注序列为的条件概率公式为,
[0092][0093]
其中,tk(y
i-1
,yi,x,i)是转移矩阵的特征,来自bgru-attention,当满足特征条件取值为1,否则取值为0,λk是转移矩阵系数;s
l
(yi,x,i)是发射矩阵的特征,来自神经网络的参数更新,当满足特征条件取值为1,否则取值为0,μ
l
是发射矩阵系数。
[0094]
本发明在训练过程中,目标函数是使得尽量大,损失函数采用对数模型,将损失函数转化为对数线性模型,损失函数如下式所示,优化器选取sdg优化器,
[0095][0096][0097]
本发明使用线性条件随机场,发射矩阵由multi-head attention层输出的特征矩阵经过全连接层转化通过参数更新学习而成,转移矩阵由神经网络训练产生。本发明在验证过程中,通过viterbi算法利用在训练过程中的转移矩阵和发射矩阵对模型进行解码。viterbi是一种动态规划算法,可以找到一条相对最优路径,即最可能的标注(命名实体)。所得相对最优命名实体如下式所示,
[0098][0099]
步骤204:将命名实体传入科室匹配模块24,与医院数据库中过往病人的主诉信息和电子病历中的关键词进行文本相似度计算,所得相似度最高的科室,即为推荐科室。云端服务器将所得推荐科室发送至用户手机端。
[0100]
在训练过程中,选取epoch=300,实验发现在epoch=235时,模型泛化效果最好,测试集在命名实体识别精度达到93.29%,推荐科室的准确率达到91.83%。
[0101]
将三个不同病人的实施实例输入所得的训练模型,具体如下所示。
[0102]
实施例1
[0103]
患者甲,叙述去年10月因为胸痛背痛查出肺部结节,到现在复查了三次,第一次是县城的医院5mm,两个月后到查是6mm,现在胸部背部还是持续性疼痛。
[0104]
将患者叙述所得输入bgru-attention-crf神经网络后所得命名实体标记结果如
下表所示:
[0105]
命名实体标记类型胸痛背痛症状肺部结节疾病胸部背部部位持续性疼痛症状
[0106]
将训练好的命名实体传入科室匹配模块24,与医院数据库中过往病人的主诉信息和电子病历中的关键词进行文本相似度计算,所得相似度前五的科室,如下表所示:
[0107]
推荐科室推荐指数胸外科0.9183204神经外科0.6792390心血管外科0.5529824骨外科0.5487492创伤骨科0.4928289
[0108]
最终推荐科室为胸外科。
[0109]
实施例2
[0110]
患者乙,叙述1个月前因砸伤致右足疼痛,伴有烧伤,去当地医院就诊住院治疗,摄片提示右足多发骨折,给予石膏外固定治疗,烧伤处给予植皮治疗。2个半月后拆除石膏。目前左足能稍微负重站立但不能正常走路,活动受限,足底出现湿疹。
[0111]
将患者叙述所得输入bgru-attention-crf神经网络后所得命名实体标记结果如下表所示:
[0112]
命名实体标记类型右足疼痛症状烧伤疾病骨折症状石膏药物左足部位湿疹症状
[0113]
将训练好的命名实体传入科室匹配模块24,与医院数据库中过往病人的主诉信息和电子病历中的关键词进行文本相似度计算,所得相似度前五的科室,如下表所示:
[0114]
推荐科室推荐指数创伤骨科0.8938242骨外科0.7894924足踝外科0.5193488足外科0.4592040皮肤科0.2983985
[0115]
最终推荐科室为创伤骨科。
[0116]
实施例3
[0117]
患者丙,叙述1年前无明显诱因出现头痛,头痛呈间歇性发作,表现为后脑部阵发性作痛,严重时需服用止痛药止痛,口干多饮。近两周患者头痛,口干多饮加重。口服瑞舒伐他汀钙片治疗。治疗后症状未见明显改善。
[0118]
将患者叙述所得输入bgru-attention-crf神经网络后所得命名实体标记结果如下表所示:
[0119]
命名实体标记类型头痛症状后脑部位阵发性作痛症状口干多饮症状瑞舒伐他汀钙片药物
[0120]
将训练好的命名实体传入科室匹配模块24,与医院数据库中过往病人的主诉信息和电子病历中的关键词进行文本相似度计算,所得相似度前五的科室,如下表所示:
[0121]
推荐科室推荐指数神经内科0.9203948内分泌科0.5392983血液科0.4892948免疫科0.2984828心血管内科0.1038485
[0122]
最终推荐科室为神经内科。
[0123]
总之,以上所述仅为本发明的较佳实施例,本发明基于bgru-attention-crf的命名实体技术,辅助分诊实现了较高的精准度。凡依本发明申请专利范围所作的均等变化与修饰,皆应属本发明专利的涵盖范围。