1.一种基于神经网络的智能医疗命名实体识别方法,其特征在于,该方法是利用三个卷积神经网络构建并行卷积神经网络,对医疗文本进行编码;再利用两个长短时记忆神经网络构建堆叠循环神经网络,对医疗文本进行编码;再分别将并行卷积神经网络输出的编码与堆叠循环神经网络输出的编码进行联接,得到优化后最终的文本编码向量;最后结合条件随机场模型,高效准确地识别医疗命名实体;具体如下:S1、构建医疗文本数据集;
S2、构建医疗命名实体识别的训练数据集;
S3、构建医疗命名实体识别模型;具体如下:
S301、构建字转换层:自行训练字向量数据或者使用预训练的字向量数据将病历文本的字序列转换为相应的字编号序列;
S302、构建标签转换层:自行定义标签转换表,将命名实体的类别标签O、B‑body、I‑body、B‑chec、I‑chec、B‑cure、I‑cure、B‑dise、I‑dise、B‑symp、I‑symp分别映射为0至10之间的11个数字编号;将病历文本的标签序列转换为相应的标签编号序列;
S303、构建输入层:当对医疗命名实体识别模型进行训练时,输入层中包括两个输入,即:对于每一条数据,对其字序列和标签序列分别使用步骤S301字映射转换层和步骤S302标签转换层处理后,得到字编号序列x=[x1…xi…xn]和标签编号序列y=[y1…yi…yn],可形式化为(x,y);
当使用医疗命名实体识别模型针对字序列进行标签预测时,输入只包含字编号序列;
S304、构建字向量嵌入层:根据步骤S301得到的预训练字向量数据,针对输入的字编号序列数据x=[x1…xi…xn],得到其向量表示x=(x1…xi…xn),其中,xi代表第i个字的字向量;
S305、构建多层联接的神经网络层,具体如下:
S30501、利用并行卷积神经网络对字向量序列进行处理;具体如下:
S3050101、将字向量序列(x1…xi…xn)作为并行卷积神经网络的输入;设置三个卷积神经网络,其维度为32,卷积核大小分别为3、4、5,分别表示为CNN3、CNN4、CNN5;三个卷积网络并行对字向量序列进行编码的过程描述如下:C1=CNN3(x1…xi…xn);
C2=CNN4(x1…xi…xn);
C3=CNN5(x1…xi…xn);
S3050102、将三个卷积网络并行处理后的输出结果进行联接操作,描述为:C4=concatenate(C1,C2,C3);其中,concatenate表示将各字对应的编码输出进行联接处理;
S3050103、再次使用卷积操作对上述联接操作的输出进行维度调整,描述为:C=CNN(C4);其中,CNN表示维度为128、卷积核大小为5的卷积网络,C表示并行卷积神经网络最终输出的编码向量;
S30502、利用堆叠循环神经网络对字向量序列进行处理;具体如下:
S3050201、对字向量序列(x1…xi…xn)使用维度为128的双向长短时记忆网络BiLSTM进行处理,描述为:L1=BiLSTM(x1…xi…xn);
S3050202、将步骤S3050201中维度为128的双向长短时记忆网络BiLSTM的输出结果送入维度为64的双向长短时记忆网络BiLSTM进行进一步地处理,从而得到堆叠循环神经网络最终输出的编码向量,描述为:L=BiLSTM(L1);
S3050203、步骤S3050201中的维度为128的双向长短时记忆网络BiLSTM和步骤S3050202中的维度为64的双向长短时记忆网络BiLSTM均设置dropout为0.5,有效避免过拟合;
S30503、将步骤S30501的并行卷积神经网络的编码输出与步骤S30502的堆叠循环网络的编码输出进行联接,得到多层联接编码初始表示;具体为:将步骤S30501的并行卷积神经网络的编码输出记作C,将步骤S30502的堆叠循环网络的编码输出记作L,则上述过程可描述为:E'=concatenate(C,L);
S30504、将在步骤S30503得到的多层联接编码初始表示,送入TimeDistributed包装器和Dense全连接层进行转换,得到最终的多层联接编码表示;具体为:将步骤S30503的多层联接编码初始表示记为E',则该过程表示为:E=TimeDistributed(Dense(m))(E'),其中,m表示转换以后所得的每个字的向量维度;
S306、构建预测层:将步骤S305所获得的多层联接编码表示送入条件随机场层,以预测各个字的标签,即条件随机场层根据接收的多层联接编码表示,利用维特比算法自行解码,选择合理的概率转移路径,预测输出标签序列,即S4、训练医疗命名实体识别模型:在步骤S2所得训练数据集上对步骤S3构建的医疗命名实体识别模型进行训练;具体如下:S401、构建损失函数,具体如下:
S40101、由步骤S306可知, 为输入文本x=[x1…xi…xn]经过条件随机场处理后得到的标签序列,而标签y=[y1…yi…yn]是真实标签;不同的标签序列对应着不同的标签转移路径;
S40102、在条件随机场选择转移路径时,设定每一个可能的路径有一个分数值Pi,则对于所有n条可能的路径的总分数值为Pt=P1+P2+...+Pn;
S40103、当第i条路径是真实的路径,记为PRealPath,那么PRealPath在所有的路径分数值之和中,应占据最大的比例,故在训练过程中,步骤S3所建立的医疗命名实体识别模型的参数将不断地被更新,以提高真实路径的分值所占的比重;
S40104、选择使用CRF loss function作为模型损失函数,此损失函数的公式为:S402、优化训练模型:经过对多种优化算法进行测试,最终选择使用Adam作为优化算法,超参数均选择Keras中的默认值设置;在训练数据集上,对医疗命名实体识别模型进行优化训练。
2.根据权利要求1所述的基于神经网络的智能医疗命名实体识别方法,其特征在于,所述步骤S1中的构建医疗文本数据集具体如下:S101、获取原始病历数据集,具体如下:
S10101、自行整理标注数据集或者使用医疗命名实体识别评测竞赛的数据集,作为原始病历数据集;
S10102、原始病历数据集对每一条病历均进行人工标注,标出各个医疗命名实体的开始位置、结束位置和命名实体类型标签;
S102、对原始病历数据集进行预处理得到医疗病历文本预处理数据集:根据步骤S101中的人工标注信息,对原始病历数据集进行预处理,为命名实体插入标签,具体为:身份部位名称标为body,疾病名称标为dise,症状名称标为symp,治疗方案名称标为chec,药物名称标为cure;在命名实体与非命名实体之间以及非命名实体字符之间插入空格;
S103、对医疗病历文本预处理数据集进行细化处理,得到医疗病历文本细化处理数据集,具体为:对步骤S102所得的医疗病历文本预处理数据集的每一条记录中的每个字的标签进一步细化标注,标注规则是IOB,即命名实体的首字标为B、中间字标为I、剩余不属于任何命名实体的字标为O;根据命名实体的类型和IOB标注规则,具体为:表示身体部位的两种字分别标为body‑B和body‑I;表示疾病名称的两种字分别标为dise‑B和dise‑I;表示独立症状名称的两种字分别标为symp‑B和symp‑I;表示治疗方案名称的两种字分别标为chec‑B和chec‑I,表示药物名称的两种字分别标为cure‑B和cure‑I;
S104、获取医疗病历文本数据集:对于步骤S103所得的医疗病历文本细化处理数据集中的每一条记录,将每个字与其对应的标签进行组合,字和标签之间用空格分隔,每个字彼此之间以换行标记分隔,得到医疗病历文本数据集。
3.根据权利要求1所述的基于神经网络的智能医疗命名实体识别方法,其特征在于,所述步骤S2中的构建医疗命名实体识别的训练数据集具体如下:S201、对于步骤S1所得的医疗病历文本数据集中的每一条记录,分别采集其字序列和标签序列;
S202、对于长度为n的记录,其字序列以x'=[x'1…x'i…x'n]表示,标签序列以y'=[y'1…y'i…y'n]表示;
S203、将每一条字序列与其对应的标签序列组合在一起,即为一条训练样本,记为(x',y');
S204、所有的训练样本共同构成训练数据集(X',Y')。
4.一种基于神经网络的智能医疗命名实体识别装置,其特征在于,该装置采用如权利要求1‑3中任一项的一种基于神经网络的智能医疗命名实体识别方法,该装置包括,医疗病历文本数据集构建单元,用于获得医疗病历文本数据集;
医疗命名实体识别的训练数据集构建单元,用于构建医疗命名实体识别的训练数据集;
医疗命名实体识别模型构建单元,用于完成医疗命名实体识别模型的搭建;医疗命名实体识别模型构建单元包括,构建字转换层子单元,用于自行训练字向量数据或者使用预训练的字向量数据,将病历文本的字序列转换为相应的字编号序列;
构建标签转换层子单元,用于自行定义标签转换表,将命名实体的类别标签O、B‑body、I‑body、B‑chec、I‑chec、B‑cure、I‑cure、B‑dise、I‑dise、B‑symp、I‑symp分别映射为0至10之间的11个数字编号;将病历文本的标签序列转换为相应的标签编号序列;
构建输入层子单元,用于对每一条数据中字序列和标签序列分别使用字映射转换层和标签转换层处理后,得到字编号序列x=[x1…xi…xn]和标签编号序列y=[y1…yi…yn],形式化为(x,y);
构建字向量嵌入层子单元,用于根据预训练的字向量数据,构建字向量嵌入层;针对输入的字编号序列数据x=[x1…xi…xn],得到其向量表示x=(x1…xi…xn),其中,xi代表第i个字的字向量;
构建多层联接的神经网络层子单元,用于以字向量嵌入层子单元所得的字向量序列作为输入,先分别由并行卷积神经网络和堆叠循环神经网络进行编码处理;再对并行卷积神经网络的输出和堆叠循环神经网络的输出进行联接,从而生成待识别文本的多层联接编码初始表示;最后使用TimeDistributed包装器和Dense全连接层进行转换,得到最终的多层联接编码表示;
构建预测层子单元,用于将构建多层联接的神经网络层子单元所获得的多层联接编码表示,送入条件随机场层,以预测各个字的标签,即 医疗命名实体识别模型训练单元,用于构建模型训练过程中所需要的损失函数,并完成模型的优化训练。
5.根据权利要求4所述的基于神经网络的智能医疗命名实体识别装置,其特征在于,所述医疗病历文本数据集构建单元包括,获取原始的病历数据集子单元,用于自行整理标注数据集或者使用医疗命名实体识别评测竞赛的数据集,作为原始的病历数据集;原始的病历数据集对每一条病历均进行人工标注,具体是标出各个医疗命名实体的开始位置、结束位置和命名实体类型标签;
预处理子单元,用于对原始病历数据集进行预处理,为命名实体插入标签,具体是:身份部位名称标为body,疾病名称标为dise,症状名称标为symp,治疗方案名称标为chec,药物名称标为cure;在命名实体与非命名实体之间以及非命名实体字符之间插入空格;
细化处理子单元,用于对医疗病历文本预处理数据集中的每一条记录进行细化处理,得到医疗病历文本细化处理数据集;对于记录中的每个字的标签进一步细化标注,标注规则是IOB,即命名实体的首字标为B、中间字标为I、其他不属于任何命名实体的字标为O;根据命名实体的类型和IOB标注规则,将表示身体部位的两种字分别标为body‑B、body‑I,表示疾病名称的两种字分别标为dise‑B、dise‑I,表示独立症状名称的两种字分别标为symp‑B、symp‑I,表示治疗方案名称的两种字分别标为chec‑B、chec‑I,表示药物名称的两种字分别标为cure‑B、cure‑I;
生成医疗病历文本数据集子单元,用于对医疗病历文本细化处理数据集中的每一条记录,将每个字与其对应的标签进行组合,字和标签之间用空格分隔,每个字彼此之间以换行标记分隔,得到医疗病历文本数据集;
所述医疗命名实体识别的训练数据集构建单元包括,
字系列和标签系列采集子单元,用于对于医疗病历文本数据集构建单元所得的医疗病历文本数据集中的每一条记录,分别采集其字序列和标签序列;
字系列和标签系列表示单元,用于对于长度为n的记录,其字序列以x'=[x'1…x'i…x'n]表示,标签序列以y'=[y'1…y'i…y'n]表示;
字系列和标签系列组合子单元,用于将每一条字序列与其对应的标签序列组合在一起,即为一条训练样本,记为(x',y');
训练数据集构建子单元,用于将所有的训练样本共同构成训练数据集(X',Y');
所述医疗命名实体识别模型训练单元包括,
损失函数构建子单元,用于构建损失函数,选择使用CRF loss function作为模型损失函数,此损失函数的公式为:模型优化训练子单元,用于在训练数据集上,训练并优化模型中的参数,从而减小模型的预测误差。
6.一种存储介质,其中存储有多条指令,其特征在于,所述指令由处理器加载,执行权利要求1‑3中任一项所述的基于神经网络的智能医疗命名实体识别方法的步骤。
7.一种电子设备,其特征在于,所述电子设备包括:
权利要求6所述的存储介质;以及
处理器,用于执行所述存储介质中的指令。