技术领域
[0001] 本申请涉及自然语言处理领域,具体而言,涉及一种基于自然语言处理的中医医案的命名实体识别方法。
相关背景技术
[0002] 命名实体识别是一种自然语言处理技术,用于从文本中识别和分类实体,目标是将实体从文本中提取出来,并根据预定义的类别对其进行标注。
[0003] 中医医案中记录了丰富的临床经验和知识,通过命名实体识别可以将文本系统化和结构化,便于后续的研究和分析;通过识别和分析医案中的实体(如症状、诊断、治疗方
法、药物等),可以为临床医生提供决策支持,提升诊疗效果;有利于中医数字化。然而,在传
统中医领域,中医医案以中文文字形式真实记录患者和医生的就诊过程,这些记录通常包
含现代汉语、古典汉语和口语的混合语言,导致中医医案的文本复杂,描述差异也较大,文
本中有关联的信息距离更远。
[0004] 名称为“一种中医药专利文献命名实体自动识别的”,公开号为“CN110826333A”的专利申请公开了先对定界模块和分类模块进行训练,然后使用训练好的定界模块和分类模
块对中医药专利文献进行命名实体的自动识别的方法,其中,仅采用BiLSTM模型处理句子
信息,上下文信息获取能力较差。名称为“基于局部文本信息的命名实体识别方法”,公开号
为“CN117933259A”的专利申请公布的方案中,使用Bert+BiLSTM+多头注意力机制+
Softmax,Softmax对标签分类和预测是独立进行的,忽略了标签之间的顺序和依赖性,不适
用于中医医案的命名实体识别。现有的机器学习和深度学习方法的命名实体识别方法泛化
能力较差,很难准确识别出中医医案当中的实体信息,在识别中医医案文本时的准确率较
低。
具体实施方式
[0026] 为了使本发明的实施过程更加清楚,下面将会结合附图进行详细说明。
[0027] 本发明提供了一种基于自然语言处理的中医医案的命名实体识别方法,如图1所示,本申请方法包括如下步骤:
[0028] S1,获取医案数据,预处理后得到标准数据集;
[0029] 本申请中的数据可以来自古籍医书,也可以来自中医师临床医案的自建中医数据集。首先,对医案文本进行数据清洗,利用代码编写算法进行清洗,去除重复的文本记录、去
除不需要部分,剩下需要的文本数据,能提高数据集质量,去除无关的文本信息从而提升模
型的学习效率。再对处理后的数据中的实体进行标记。具体地,提取医案文本中的“主诉”、
“病史”、“诊断结果”。
[0030] 使用Doccano对文本进行实体标签标记,对文本数据赋予标签,症状实体标记为“symptom”,疾病实体标记为“disease”,药物实体标记为“medicine”等等;例如文本“2天前全身出现恶寒发热,体温持续39.5℃,口渴尿赤,前医诊为外感风热证,服银翘散2剂后体温
虽减,但转为午后发热较甚、声音嘶哑,吞咽饮食困难,遂求治于邹师。”中的“恶寒发热”、
“口渴尿赤”、“发热”、“声音嘶哑”、“吞咽饮食困难”标记为“symptom”,“外感风热证”标记为“disease”,“银翘散”标记为“medicine”。本实施例中,标记在专业中医师的指导下,对文本内容手动进行标签标记,标签标记完之后再进行BIO标注。
[0031] 为了让模型在训练时能够学习到文本中的实体,对标记后的文本进行BIO标注,得到标准数据集。具体地,B代表实体开始,I代表实体剩余部分,O代表非实体部分;例如,文本
“口渴尿赤,前医诊为外感风热证”标记为【“B”、“I”、“I”、“I”、“O”、“O”、“O”、“O”、“O”、“B”、“I”、“I”、“I”、“I”】。BIO标注完的数据集示例如下:文本“哮喘发作已有数天。”标记为【“B‑disease”、“I‑disease”、“O”、“O”、“O”、“O”、“O”、“O”、“O”】;文本“两旬来咳逆上气。”标记为【“O”、“O”、“O”、“B‑symptom”、“I‑symptom”、“I‑symptom”、“I‑symptom”】。根据学习到的上下文信息,在测试集中对模型的准确率进行测试,同时,测试集中的数据也是完成BIO标注
的,方便模型能够判断根据训练集学习到的能力在测试集中的适用情况。同时,与开源数据
中的标记规则一致,仅需要按照上述规则进行标注,划分为训练集、测试集,方便共同进行
特征学习。因为中医相关数据集缺乏,没有高质量的数据集可以训练模型,所以自建高质量
中医数据集从而提高模型精度,开源数据集分别是来自通用医疗领域和常用领域,用来检
验模型的泛化能力。标记是为了把文本中的实体划分出来,标注是为了将划分出来的实体
进行标注让模型能够学习到实体的信息。
[0032] 数据来源还包括开源数据集CCKS2019发布的中文电子病历命名实体识别评测数据集和CLUENER2020细粒度命名实体识别数据集来验证模型方法在其他领域上命名实体识
别的泛化能力。
[0033] S2,构建命名实体识别模型;
[0034] 本申请命名实体识别模型包括嵌入层、编码层、解码层,涉及到BERT模型、BiLSTM模型、多头注意力机制和CRF。如图2所示,BERT模型的输出与BiLSTM模型的输入和多头注意
力机制的输出连接,BiLSTM模型的输出与多头注意力机制的输入连接,融合后的信息通过
CRF模型进行预测,最后输出。将步骤S1获得的文本输入文本通过BERT模型进行编码和初步
文本序列获取后,传输到BiLSTM模型进行进一步的文本间依赖信息获取,再利用多头注意
力机制更全面、更细致地理解文本中的依赖关系。再将第一步BERT模型的初步输出序列信
息与多头注意力机制层的输出序列信息进行融合,最后将融合后的序列信息通过CRF模型
完成对序列信息的预测,即根据序列信息对应判断属于什么实体。模型处理文本后的序列
信息都是以向量的形式存在,融合是将不同的信息向量进行拼接,实现融合。
[0035] 具体地,将步骤S1处理后的数据输入上述命名实体识别模型;即先输入BERT模型。嵌入层采用BERT模型中的Transformer Encoder结构获取文本的字符级别嵌入信息、词级
嵌入信息、段嵌入信息、相对位置编码信息与实体类型信息五种序列信息。BERT模型将每一
个文本的位置都进行了考虑,因此更加关注全局尺度的信息。具体地,在BERT模型中,每个
词都会被转化成768维的向量表示;为了区分每个词所属的句子对中的句子,段嵌入层设置
两种向量表示,前一向量把“0”赋给第一个句子中的各个词,后一个向量是把“1”赋给第二
个句子中的各个词。如果输入中只有一个句子,那么段嵌入信息将全为“0”。Transformers
对于输入文本序列的顺序性无法进行编码,所以通过给每个词加上位置信息,具体的位置
(i)
信息Pt 计算如下:
[0036] Pt(i)=f(t)(i)=sin(Wk×t),i=2k
[0037] Pt(i)=f(t)(i)=cos(Wk×t),i=2k+1
[0038]
[0039] 其中,位置编码向量都由一系列的正弦和余弦值构成,通过上述公式计算得到,并被添加到词嵌入中,偶数位置采用正弦函数表示,奇数位置采用余弦函数表示,t为词位置
索引,k为维度索引,d为词嵌入向量的维度。
[0040] 再通过BiLSTM模型获取上述实体序列信息间的长期依赖关系,BiLSTM模型在处理医案中可能出现的特别有用。由于中医医案可能包含大量的描述性文字,BiLSTM能够确保
模型不会丢失重要的上下文线索,对于长距离实体效果较好;但BiLSTM受限于序列的长度,
对于非常长的序列无法很好地保持远距离的依赖关系。此处长期指的是长距离的文本信
息,例如,以“2天前全身出现恶寒发热,体温持续39.5℃,口渴尿赤,前医诊为外感风热证,
服银翘散2剂后体温虽减,但转为午后发热较甚、声音嘶哑,吞咽饮食困难,遂求治于邹师。”
这段文本为例。前向LSTM它按顺序从左到右读取文本,即从“2天前”开始直到“邹师”。前向
LSTM会保存每个词汇前面的信息,并将这些信息与当前词汇相结合,产生一个包含前面词
汇信息的隐藏状态。后向LSTM从“邹师”开始向回读取,直至“2天前”。它捕获的是每个词汇
后面的信息,这样当前词汇的隐藏状态就包含了后续词汇的影响。拼接后形成一个更全面
的词汇表示,有利于更全面地获取信息,从而提升识别准确率。前向LSTM会考虑到“2天前全
身出现”,这意味着这种症状是在最近几天内出现的。后向LSTM会考虑到“体温持续39.5
℃”,暗示着恶寒发热可能伴随着高烧。
[0041] 也就是,BERT模型与Bi‑LSTM模型对文本的上下文信息关注尺度不同,BERT模型关注的是全局依赖性,即使文本在序列中相隔很远,依然能关注到这些文本的依赖关系,例
如,在处理这段文本时,BERT模型不仅能理解“恶寒发热”与“体温持续39.5℃”之间的直接
联系,还能够识别“恶寒发热”与“求治于邹师”之间的间接联系,即病人最初的症状如何最
终导致他寻求邹师的帮助;距离较长的上下文之间的依赖关系和跨句信息被考虑,提升了
命名实体识别准确率。
[0042] BiLSTM模型关注了词汇间的直接顺序和局部上下文,比如,在处理“2天前全身出现恶寒发热”时,它会关注“2天前”与“恶寒发热”的直接顺序关系,以及“恶寒”与“发热”之间的关联,但可能不会轻易捕捉到“恶寒发热”与“求治于邹师”之间跨越整段文本的联系。
这是因为BiLSTM模型主要依赖于其内部状态来传递信息,长距离的信息传递效率较低。通
过BERT模型处理后的文本序列信息再通过BiLSTM模型能够增强依赖的相关性,但是也会有
部分关键信息的丢失。因此,在中医医案这种语境更复杂的文本中,有关联的文本信息相距
较远,通过BERT模型处理后的序列信息再通过BiLSTM模型获取上下文前后相关信息,对于
模型来说无法准确理解,因此,将更加关注全局信息的BERT模型输出的序列与经过BiLSTM‑
多头注意力机制处理后的序列进行融合,能更好的理解文本当中的信息,这对于文本复杂、
文本中有关联的信息距离较远的中医文本具有重要意义,关注了不同尺度的信息,使得距
离较远的信息之间的关联被关注到,从而提升了识别的准确率。
[0043] BiLSTM模型处理后的序列信息输入到多头注意力机制当中,从而让模型灵活地关注输入序列的不同部分,聚焦于文本中对命名实体识别最关键的部分,例如,在中医医案当
中,能够关注到症状和病症之间关键信息的关联,一个头可能关注症状的发展,如“恶寒发
热”到“午后发热较甚”,另一个头可能关注时间线索,如“2天前”到“服银翘散2剂后”,而第
三个头可能关注患者就医行为的变化,如从“前医”到“邹师”。这种多视角的注意力机制使
模型能够更全面、更细致地理解文本中的各种依赖关系。
[0044] 最后将BERT模型的直接输出与经过BiLSTM模型和多头注意力机制处理后的输出再次进行拼接融合,这样,保留了BERT模型对于文本的全局依赖性信息,也通过BiLSTM模型
和多头注意力机制增强了相邻信息间的序列信息关联,再通过解码层中的CRF完成对实体
信息的预测,具体地,在CRF模型中,给定一个观察序列X=(x1,x2,...,xn)和一个标签序列Y
=(y1,y2,...,,yn),CRF的目标即是找到使条件概率P(Y∣X)最大的Y序列。融合之后使得模
型在理解中医文本时更加全面,预测结果更准确。
[0045] 在中医医案当中,语境复杂,包括文言文以及口语文本,文本描述差异较大,文本语境信息更为复杂,文本中有关联的信息距离更远。例如,“整个人都没劲,吃什么都没胃
口,经常觉得头晕眼花。”和“病者神疲乏力,食不香甜,时感头晕目眩;腰周围疼痛,发板,足
跟痛,呈游走性,纳可,二便正常,眠差”。而本申请考虑到BERT模型与BiLSTM模型对文本的
上下文信息关注尺度不同,通过将BERT模型输出的文本序列信息与经过BiLSTM模型、多头
注意力机制处理后的文本序列信息进行融合,这样的处理能提升模型处理中医文本的能
力。
[0046] S3,对命名实体识别模型进行训练和测试;
[0047] 通过建立的标准数据集和开源数据集对模型进行训练,开源数据集采用的CCKS2017和CCKS2019两个通用医疗数据集,和CLUENER2020通用领域数据集,采用这几个数
据集是为了验证模型的泛化性能。由于开源数据集中缺乏高质量的中医领域数据集,申请
人通过收集古籍医典和中医师的临床坐诊记录建立中医数据集。因此,利用开源和自建两
类数据集,对模型进行训练。
[0048] 将数据集以7:3‑8:2的比例划分为训练集和测试集。训练集和测试集的数据格式一样,训练的过程是将训练集数据和对应的标签输入命名实体识别模型,使模型学习到训
练集中的实体信息划分能力。从而让模型根据训练集中的学习到的信息,在测试集中进行
验证,虽然测试集的数据格式跟训练集一致,但是测试集中的标记和标注结果是为了让模
型对照是否对实体进行正确预测,最后再采取一定的评价指标对模型在测试集中测试的结
果进行评价。具体指标如下:
[0049]
[0050] 在公式中,correct_entities表示正确标识的实体的数量,而pre_entities表示模型识别的实体的总数,true_entities表示真实实体的总数。
[0051] 在CCKS2019上与BERT‑BiLSTM‑CRF模型(现有模型)的precision为82.67%、recall为84.01%、f1为83.34%相比,该模型分别提高了1.99%、1.85%、1.91%,达到了
84.66%、85.86%、85.25%。在CLUENER上与BERT‑BiLSTM‑CRF模型的precision为79.99%、
recall为81.18%、f1为80.58%相比,该模型分别提高了2.42%、0.97%、1.7%,达到了
82.41%、82.15%、82.28%。在自建的中医医案数据集上,与BERT‑BiLSTM‑CRF模型的
precision为89.37%、recall为87.03%、f1为88.19%相比,该模型分别提高了0.43%、
1.15%、0.79%,达到89.8%、88.17%、88.98%。可见,本申请方法提升了中医医案命名实
体的识别准确率,识别效果较好。
[0052] S4,将待识别文本输入训练后的命名实体识别模型,命名实体识别模型输出预测结果。
[0053] 将待识别文本输入上述模型,可以是非结构化中医医案文本输入到模型当中,在训练过程中,模型已经学习到了文本实体与标签之间的关系。训练好的命名实体识别模型
将自动识别出医案文本中所含有的这三类实体,模型输出文本实体对应的实体类别标签。
如将医案文本“病者神疲乏力,食不香甜,时感头晕目眩”输入到模型中后,模型将“神疲乏
力”、“食不香甜”、“头晕目眩”识别为症状,并自动对文本进行标记。
[0054] 本申请中的命名实体识别模型对大量的非结构化文本未标记的数据进行实体识别,致力于将中医医案中的非结构化的数据转化成结构化的数据,构建中医领域相关知识
图谱,推进中医领域的标准化建立。
[0055] 以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、
等同替换、改进等,均应包含在本发明的保护范围之内。