基于GPT-2模型的中文电子病历实体识别方法
技术领域
本发明涉及中文语言处理和识别技术领域,具体涉及一种基于GPT-2模型的中文电子病历实体识别方法。
背景技术
近年来,在国家政策的支持与驱动下,在互联网、大数据、人工智能等前沿技术的支撑下,智慧医疗进入飞速发展时期。国家新一代人工智能、脑科学与类脑研究重大专项逐步启动实施,智慧医疗科技研究与产业发展步入新的阶段。同时随着经济的发展,人们对自己的健康和社会所能提供的医疗服务越来越关注。目前,有限的医疗资源和医疗水平逐渐无法满足人们看病问诊的需求。例如,针对电子病历中的文本:“患者出现发热及左下腹痛,行CT检查示胆总管结石”。在这句话中,“CT”是医学检查方法,“发热”和“左下腹痛”是患者症状,“胆总管结石”是确诊疾病。这三者在实体识别中被称为命名实体,这三个实体之间的关系是“发热”和“左下腹痛”确定了检查项目为“CT”,“CT”检查证实了“胆总管结石”的发生,也就是“胆总管结石”表现为“发热”和“左下腹痛”并被“CT”这一医学检查方式得到了证实。从电子病历中通过实体识别得到的这些结果,将作为训练集标注各个实体以及实体之间的关系,最终服务于临床决策和智能问诊系统。
发明内容
本发明的目的是:提供一种基于GPT-2模型的中文电子病历实体识别方法,目的在于提高现有实体识别技术的准确率,引入无监督预训练模型。相对于现有技术可以更有效的提取出中文电子病历的特征向量,对于整个识别任务能够灵活的计算每次输入的文本,不受文本形式限制,容易实现,并且开发和运行成本较低,通过一台服务器便可实现大规模中文电子病历实体识别服务,判断的速度和准确率也高。
为了达到上述目的,本发明所采用的技术方案是:
基于GPT-2模型的中文电子病历实体识别方法,其特征在于,利用GPT-2预训练模型提取电子病例的特征向量,再从CRF模型作为出口得到识别概率,最终得到中文电子病例的命名实体,所述方法包括如下步骤:
1)将中文电子病历的数据分为训练集和测试集两个部分,并对两个部分的数据进行统一标注,标注后的数据包含原始中文电子病历和实体标注;
1.1)设定标签的实体类别有:身体部位,症状/体征,检查/检验和疾病/诊断;
1.2)设立多个标注小组,分别对所述训练集和测试集的所有病历依据以上实体类别人工标注得到实验的训练集和测试集,标注结果第一列为实体词,第二列为该词在病历中的开始位置,第三列为该词在病历中的结束位置,最后一列为实体类别;
1.3)中文电子病历的原始数据为x=(x1,x2,x3,...,xn),实体标注为y=(y1,y2,y3,...,yn),其中,x是病历原始文本,y是与病历原始文本相对应并等长的实体类别标签,n为相对应的数据序号;
1.4)输出的标签文本为身体部位,症状/体征,检查/检验和疾病/诊断,标签符号为P,S,T,D的形式,简称PSTD标签;
2)以GPT-2预训练模型为基础,引入CRF模型,建立基于GPT2-CRF的中文电子病历实体识别模型,使用训练集数据训练,得到训练后的中文电子病历实体识别模型;
2.1)下载GPT-2预训练模型,通过GPT-2预训练模型获得文本的输入语义表示同时进行有监督训练,最后将结果输入概率最大标签序列;
2.2)定义语言模型的预测值为p(sn-k,...,sn|s1,s2,...,sn-k-1),其中s代表原始数据的预测结果,k代表原始数据的序号偏移值,n代表预测值在原始数据中的编号;
2.3)通过使用CRF模型方法估计得到识别概率也就是最终的有监督任务运行结果p(output|input),然后对任务p(output|input)建模,其中output是指模型输出,input是指模型输入;
2.4)一般来说,对于同类型的NLP自然语言识别任务的input和output,用向量表示,同时对于本文描述的任务,同样使用input和output来表示;
2.5)根据上述步骤得到带有明确的概率值的预测结论,从而证实以这种数据形式可以有监督的训练一个单一模型;
2.6)从上述步骤得到训练后的中文电子病历实体识别模型;
3)将测试集数据输入中文电子病历实体识别模型中,通过评估分数得到实体识别的最优标注序列;
3.1)将测试集数据输入上述步骤得到的实体识别模型中后,需要进一步通过评估分数公式得到最优序列;
3.2)给定序列x=(x1,x2,x3,...,xn)和对应的标签序列y=(y1,y2,y3,...,yn),定义评估分数为以下公式:
其中W是转换矩阵,Wi,j是标签转移分数,Pi,yi表示该字符的第yi个标签的分数,Pi定义为:
Pi=wsh(t)+bs
其中h(t)是上一层t时刻输入数据x(t)的隐藏状态,参数ws表示权值矩阵,bs表示增量参数;
对CRF的训练采用的是最大条件似然估计,对训练集合{(xi,yi)},其中似然公式为:
其中P表示序列原序列到预测序列对应的概率为:
其中λ代表给定的概率分布,θ表示分布参数;
采用实体识别的通用评价指标:精确率P、召回率R和F值:
其中,Tp为模型正确识别的实体个数,Fp为模型识别到的不相关的实体格个数,Fn是相关实体但是模型没有检测到的个数;
3.3)最终得到中文电子病例的命名实体。
本发明的有益效果是:本发明提供的基于GPT-2模型的中文电子病历实体识别方法,将输入文本转化为命名实体标签,将需要识别的文本输入到训练完成的中文电子病历实体识别模型,模型便会将文本转化为相应的标签文本,然后根据打上的标签在电子病历中勾勒出实体。该方法不受文本形式限制,容易实现,并且开发和运行成本低,可以推动临床看诊和AI导诊系统的开发,可以为知识图谱构建,语义网研究做出贡献。
附图说明
图1为GPT2-CRF模型流程图。
图2为GPT-2模型结构示意图。
图3为CRF线性链式结构示意图。
具体实施方式
下面结合附图和实例对本发明做进一步阐述,但不是对本发明的限定。
本发明提出的基于GPT-2模型的中文电子病历识别方法,是利用GPT-2预训练模型提取电子病例的特征向量,再从CRF模型作为出口得到识别概率,在图1中表示了整个模型的训练流程图,最终得到中文电子病例的命名实体,包括如下步骤:
1)将中文电子病历的数据分为训练集和测试集两个部分,并对两个部分的数据进行统一标注,标注后的数据包含原始中文电子病历和实体标注;
1.1)组织标注了1200份小规模病历语料库。包含了一般项目,出院情况,病史特点和诊疗经过的四个阶段各300份电子病历。涵盖了肿瘤,消化系统疾病,神经系统疾病等30个疾病大类。对于不同的语料之间,重复语句基本不存在。
1.2)设定标签的实体类别有:身体部位,症状/体征,检查/检验和疾病/诊断。
1.3)设立了3个医生小组,第一小组为专家医生共5名,第二小组为中级医生共5名,第三小组为实习医生共5名,分别对这1200份病历依据以上实体类别人工标注得到实验的训练集和测试集。标注结果第一列为实体词,第二列为该词在病历中的开始位置,第三列为该词在病历中的结束位置,最后一列为实体类别。
1.4)中文电子病历的原始数据为x=(x1,x2,x3,...,xn),实体标注为y=(y1,y2,y3,...,yn),x是病历原始文本,y是与病历原始文本相对应并等长的实体类别标签,n为相对应的数据序号。
1.5)输出的标签文本为身体部位,症状/体征,检查/检验和疾病/诊断,标签符号为P,S,T,D的形式,简称PSTD标签。
2)以GPT-2预训练模型为基础,引入CRF模型,建立基于GPT2-CRF的中文电子病历实体识别模型,使用训练集数据训练,得到训练后的中文电子病历实体识别模型,图2为整个预训练模型的模型结构,图3为CRF结构中表明关系的链式结构。
2.1)下载GPT-2预训练模型,通过GPT-2预训练模型获得文本的输入语义表示同时进行有监督训练,最后将结果输入概率最大标签序列。
2.2)定义语言模型的预测为p(sn-k,...,sn|s1,s2,...,sn-k-1),其中s代表原始数据的预测结果,k代表原始数据的序号偏移值,n代表预测值在原始数据中的编号。
2.3)通过使用CRF模型方法估计得到识别概率也就是最终的有监督任务运行结果p(output|input),然后对任务p(output|input)建模,其中output是指模型输出,input是指模型输入。
2.4)一般来说,对于同类型的NLP(自然语言识别)任务的input和output,用向量表示,同时对于本文描述的任务,一样使用input和output做表示。
2.5)根据上述步骤得到带有明确的概率值的预测结论,从而证实以这种数据形式可以有监督的训练一个单一模型;
2.6)从上述步骤得到训练后的中文电子病历实体识别模型。
3)将测试集数据输入中文电子病历实体识别模型中,通过评估分数得到实体识别的最优标注序列。
3.1)将测试集数据输入上述步骤得到的实体识别模型中后,需要进一步通过评估分数公式得到最优序列。
3.2)给定序列x=(x1,x2,x3,...,xn)和对应的标签序列y=(y1,y2,y3,...,yn),定义评估分数为以下公式:
其中W是转换矩阵,Wi,j是标签转移分数,Pi,yi表示该字符的第yi个标签的分数。Pi定义为:
Pi=wsh(t)+bs
其中h(t)是上一层t时刻输入数据x(t)的隐藏状态,参数ws表示权值矩阵,bs表示增量参数;
对CRF的训练采用的是最大条件似然估计,对训练集合{(xi,yi)},其中似然公式为:
其中P表示序列原序列到预测序列对应的概率为:
其中λ代表给定的概率分布,θ表示分布参数;
采用实体识别的通用评价指标:精确率(P)、召回率(R)和F值:
其中,Tp为模型正确识别的实体个数,Fp为模型识别到的不相关的实体格个数,Fn是相关实体但是模型没有检测到的个数。
3.3)最终得到中文电子病例的命名实体。
实施例
对训练集的字符预处理
构建训练集的首要步骤是预处理,将此模型的所有电子病历都进行人工标注和位置识别判断。例如“患者病情尚平稳,诉腹痛腹胀。查体:胃管固定良好通畅,引流淡黄色胃液300ml。发育正常,营养差呈恶液质,神志清楚,语言流利,周身皮肤黏膜无黄染,未见出血点及瘀斑,周身浅表淋巴结未触及肿大。双肺呼吸音清晰,未闻及啰音,心率98次/分,律齐,各瓣膜听诊区未闻及病理性杂音,腹膨隆,腹部可见一长约12cm手术疤痕。左下腹可见造瘘口,造瘘肠管无溃疡及红肿。腹软、可见胃肠型,全腹无压痛反跳痛及肌紧张,未触及异常包块。腹叩呈鼓音,无移动性浊音。肠鸣音活跃,可闻及气过水声。双下肢无水肿。”形成的训练文本,将其按照词和字的分割,并打上对应的标签。
在这个例子中标签是:“腹痛9 10症状和体征”,“腹胀11 12症状和体征”,“查体1415检查和检验”,“胃管17 18身体部位”,“胃液31 32身体部位”,“周身皮肤黏膜62 67身体部位”,“黄染69 70症状和体征”,“出血点74 76身体部位”,“瘀斑78 79症状和体征”,“周身浅表淋巴81 86身体部位”等。
每个标签包括四个部分:标注词,标注词在完整病历中的开始位置,标注词在完整病历中的结束位置,标注标签。
下载GPT-2预训练模型,通过GPT-2预训练模型获得文本的输入语义表示同时进行有监督训练,最后将结果输入概率最大标签序列。
定义语言模型的预测为p(sn-k,...,sn|s1,s2,...,sn-k-1)
通过估计p(output|input)来得到最终的有监督任务运行结果,然后对p(output|input)建模而不是用特定的网络结构去给任务建模,因为这是一个通用模型。
对于NLP任务的input和output,用向量表示,同时对于本文描述的任务,一样使用这两个做表示。
这种模型的一条训练样本可以表示为:(translatetofrench,englishtext,frenchtext),或者表示为(answerthequestion,document,question,answer)。
从而证实以这种数据形式可以有监督的训练一个单一模型。
从上述步骤得到训练后的中文电子病历实体识别模型之后采用上述的P,R和F1公式作为评测标准,根据公式计算出对应数值,表1为不同模型之间的比较,从表中可以看到,本发明所提出的方法,较基础实体标注模型,在P,R,F1分数上,都取得了最好的结果。
表1实施例中对比例提供的不同模型识别中文电子病历实体的性能
最后应当说明的是,以上内容仅用以说明本发明的技术方案,而非对本发明保护范围的限制,本领域的普通技术人员对本发明的技术方案进行的简单修改或者等同替换,均不脱离本发明技术方案的实质和范围。