多特征融合的中文电子病历命名实体识别
2023-12-11李新福
孙 振,李新福
河北大学 网络空间安全与计算机学院,河北 保定 071000
电子病历作为医院诊疗工作的重要辅助材料,记录病人在医院诊断治疗的全过程。其中,不仅涵盖病人的诊疗记录、检查结果、医嘱、手术、护理等静态的病历信息,还包含为病人提供的服务信息。从电子病历中抽取医疗相关的实体,是现代医疗工作开展的重要一环,可应用于临床决策、辅助诊疗、医疗知识挖掘和医疗知识图谱的构建等场景。因此,准确快速地提取医疗实体,将非结构化的电子病历文本,转变为可供计算机识别的结构化文本,对医院的医疗信息智能化管理具有非常重要的意义。
命名实体识别(named entity recognition,NER)作为自然语言处理(natural language processing,NLP)的一项基本任务,在文本处理中受到广泛关注。命名实体识别主要通过对句子进行分词,划分出实体边界,进而从非结构化的文本中抽取不同类别的实体,因此命名实体识别实体边界的划分和准确分词密切相关[1]。医疗领域常见的命名实体主要有手术、药物、疾病、症状、检查、身体部位等。但是在中文电子病历文本中,医疗领域的词汇具有一定的专业性,分词工具容易将医学术语的实体边界混淆,中文汉字的字形信息尚未被充分利用。例如“左肾下囊肿”一词准确的实体标签为“疾病”,分词工具将其划分为“左肾下”和“囊肿”两个实体,分别标记为“身体部位”和“症状”,从而产生错误的识别结果。
中国知识图谱与语义计算大会(China Conference on Knowledge Graph and Semantic Computing,CCKS)已经连续多年开展了基于中文电子病历命名实体识别的任务评测,针对性地给出一定数量的标记数据,引领了国内中文电子病历命名实体识别数据标注规范的统一,同时为相关研究人员提供了重要的数据集。但目前中文电子病历命名实体识别数据集仍然存在实体标签分布不均衡的问题。
针对这些问题,本文结合汉字的部首和四角信息,提出了多特征融合的中文电子病历命名实体识别方法,主要的贡献可以总结如下:
(1)针对中文电子病历命名实体识别文本专业词汇较多带来的词汇边界模糊问题,使用基于字的中文电子病历命名实体识别模型,将字、部首和四角向量融合,学习汉字最基本的字形结构信息,获得中文电子病历文本专业词汇重要的释义表示。
(2)针对中文电子病历命名实体识别数据集实体标签分布不均衡的问题,提出了实体标签标记模块,用二分类器过滤非实体区域,加强模型对少数实体类型的学习。
(3)采用Mogrifier GRU 提取融合的向量表示,在GRU 的基础上进行隐藏层和输入层之间的交互,丰富字形特征在文本的表征能力,获得深层次的文本特征。
1 相关工作
中文电子病历命名实体识别最早的定义源于I2B2 2010评测任务,该任务分类依据统一医学语言系统的标准将医疗命名实体划分为医疗问题、检查、症状三种类型。目前中文命名实体识别任务通常被当作序列标注任务,常用的方法主要分为三种:
(1)基于规则和词典的方法。基于规则和词典的方法依赖于人工建立大规模的规则和词典。Kraus 等人[2]通过大规模的正则表达式构建医疗规则,用于识别临床病历中的药品、剂量等命名实体。该方法依赖于专业领域研究人员的经验,难以匹配所有领域的实体类型,且不能在领域之间迁移。
(2)基于统计机器学习的方法。常用的统计机器学习方法有:最大熵模型、支持向量机、隐马尔可夫模型、条件随机场(conditional random field,CRF)[3]等,基于统计机器学习的方法不需要拥有专业知识的专家来挑选和设计规则词典,就可以挑选出有效反映该类实体特性的特征集合。Yang 等人[4]基于CRF 模型融合中文汉字特征和医疗规则特征,用于识别身体部位、症状、药物、手术等命名实体。统计机器学习方法依赖于大规模特征工程构建的特征集合,特征工程同样需要人为创建,对特征选取和数据集的要求较高。
(3)基于深度学习的方法。深度神经网络利用端到端的模型结构,相比于传统的统计机器学习方法减少了人工特征选择带来的困难,对文本数据的提取更加充分,有利于提高实体识别的效果。Collobert 等人[5]提出基于卷积神经网络(convolutional neural network,CNN)的命名实体识别方法,在性能上优于所有的统计机器学习方法。Huang 等人[6]将长短期记忆网络(long short-term memory,LSTM)应用到命名实体识别中,通过门控单元解决了序列任务中CNN不能处理长距离上下文信息的问题,缓解了传统循环神经网络(recurrent neural network,RNN)出现的梯度消失问题,获取更多的文本依赖关系。随后有研究人员将LSTM 和CRF[7-9]结合应用到电子病历命名实体识别任务中,识别医学语料命名实体。由于中文电子病历语料库中含有大量非结构化的词汇,需要从语料库的上下文提取文本依赖关系,因此充分结合时序特征的BiLSTM-CRF模型成为中文电子病历命名实体识别最为常见的模型。但是这些模型受限于训练语料的质量和规模[10],识别效果仍然有所欠缺,可解释性也不强。门控循环单元(gated recurrent unit,GRU)由Cho 等人[11]提出,和LSTM 同属于RNN 的变体,和LSTM相比结构更为简单,有效减小了参数量,在训练时间上更具优势。因此本文采用GRU作为基础模型。
在中文命名实体识别任务中,由于缺乏词汇边界,研究人员经常将字作为最小的处理单元。有研究表明[12]基于字的命名实体识别研究方法,通过对字符分割可以规避分词错误带来的问题,在效果上优于基于词汇的命名实体识别研究方法。考虑到单个字的语义表征能力较弱,很多研究人员在基于字的命名实体识别方法中采用词汇增强方法,融合其他文本信息以增强上下文语义表示[13]。Zhang等人[14]在获取字信息的基础上改进LSTM结构融入词汇信息,将潜在的词汇信息整合到基于字符的模型中。Ma 等人[15]利用词典匹配字符得到BMES 标注的词汇信息,并将其融入到对应的字信息中。Xu等人[16]的研究表明以汉字为基础的部首信息同样可以增强命名实体的语义表示。受到这些方法的启发,本文将词汇增强方法引入到中文电子病历命名实体识别中。
上述命名实体识别模型中,没有考虑到中文电子病历文本中专业词汇丰富,实体类别分布不平衡给命名实体识别带来的影响,因此,中文电子病历命名实体识别的研究还不够深入。本文结合词汇增强方法的优势,将字形信息引入到模型中,增强模型对中文电子病历专业术语的语义表征能力;采用实体标记策略对向量进行标签标记,加强对不同实体类型的建模;通过GRU之前的信息交互,获得更丰富的特征表示。
2 模型架构
本文提出多特征融合的中文电子病历命名实体识别模型,主要包括三个部分。第一部分为嵌入层,分别提取文本的字、部首和四角向量,通过实体标记策略标记向量的实体类型,然后将三种向量拼接为融合向量;第二部分为特征提取层,利用Mogrifier GRU对融合向量进行特征提取,增强上下文之间的信息交互;第三部分为CRF层,通过状态转移矩阵建立约束,得到标签序列预测结果。整体的模型架构如图1所示。
图1 模型架构Fig.1 Model framework
2.1 嵌入层
当命名实体识别被当作序列标注任务时,需要获取文本的向量表示。在此阶段文本序列可以被编码为X={X1,X2,…,Xn}。模型的字向量由ALBERT 提取;部首和四角向量通过字形转换函数获取,并使用CNN 对部首和四角向量进行特征提取,经过向量标记处理后将三种向量拼接得到嵌入层的向量表示。
2.1.1 字向量
ALBERT(a lite bidirectional encoder representations from transformers)[17]是在BERT[18]基础上开发的一种轻量级预训练模型,通过参数因式分解、跨层参数共享和句子间顺序预测使ALBERT拥有和BERT接近的性能,有效减少了参数量,可以避免模型过拟合。模型架构如图2所示。
图2 ALBERT模型Fig.2 ALBERT model
图2中,Ei、Ti分别代表文本数据中第i个字的文本序列对应的向量表示和经过Transformer编码后得到的字向量,Trm代表ALBERT内部的双向Transformer模块,共12 层。设输入语句S=c1c2…ct,其中ci∈C,i=1,2,…,t。通过ALBERT 得到与S对应的字向量X=[xc1;xc2;…;xct]。
2.1.2 部首向量
中文电子病历数据和中文通用领域的数据不同,文本数据具有很强的专业性。汉字是一种象形文字,在医疗文本中,疾病实体汉字都有“疒”部首,代表身体部位的实体汉字大部分都有“月”部首,常见的药品名大多和“钅”部首相关,相似的部首往往表达出相近的语义关系。因此,本文在嵌入层加入部首向量挖掘医疗文本的语义关系。
在给定的文本序列S=c1c2...ct中,对于每个汉字ci,都可以获取该字的部首向量表示Radical(ci)={ri,1,ri,2,…,ri,k},设部首向量查找转换函数为eradical,则通过查找转换函数进行嵌入表示可以得到对应的部首向量矩阵Wi,如式(1)所示:
2.1.3 四角向量
部首在组成汉字时,在汉字中的位置不同,可能出现完全不同的语义,而部首向量不能捕捉到这种位置关系。并且具有相同部首的汉字编码可能会干扰语义信息提取效果,部首向量对文本向量表示的补充不足以充分表达汉字语义和内在的文本关系。
四角编码是一种普遍的汉字检索方法,按照田字格结构对汉字进行编码,这种编码方式可以表征出汉字组成结构的位置关系。加入四角向量可以在部首向量的基础上补充汉字的构造特征,获取高质量的文本语义表示。
在给定的文本序列S=c1c2…ct中,对于每个汉字ci,都可以获取该字的四角向量表示Fc(ci)={fi,1,fi,2,…,fi,k}。设四角向量查找转换函数为efc,则通过查找转换函数进行嵌入表示可以得到对应的四角向量矩阵Wf,如式(2)所示:
2.1.4 对向量进行实体标记
在本文使用的中文电子病历数据集中,样本分布不平衡,非实体类型占据92%以上,且各实体类别之间存在较大差距。在文献[19]的启发下,本文对文本语料中几种向量进行标签标记处理。即通过两个单独的二分类器来分别检测每个命名实体对应字符串的开始和结束位置。对向量进行实体标记的过程如图3所示。
1047 大动脉粥样硬化与心源性栓塞急性缺血性脑卒中特征差异对比研究 田 冰,王铁功,杨鹏飞,尹 伟,许 兵,陈录广,刘 崎,刘建民,陆建平
图3 向量实体标记Fig.3 Vector entity tag
利用二分类器标记的方式,可以在电子病历样本中,对向量进行标签标记,加强模型对不同类型实体的建模,缓解实体分布不平衡带来的影响。这种匹配策略可以保持实体跨度的完整性,在非实体类型过多的条件下提高模型对不同实体类型的识别准确率。
对应的二分类器表示如式(3)、(4)所示:
其中,W、b表示可学习的参数,σ表示激活函数sigmoid,X表示输入向量,经过计算后得到输入的第i个向量标识为对象的开始和结束位置的概率pi。如果概率超过某个阈值,则对应的部位将被分配标签1,否则将被分配0。
实体标签的最大似然函数如式(5)所示:
用于确定给定向量表示x的实体s范围。
2.1.5 向量融合
将汉字按照不同的编码方式拆分,这些结构在汉字局部呈现一定的关联性。使用CNN可以关注汉字的局部特征,对向量进行进一步的特征提取,捕获汉字中潜在的语义信息。
其中,w表示卷积核的权重参数,f表示激活函数ReLU,b表示偏置,yi表示经过卷积操作后得到的第i个特征。再经过最大池化后,即可得到文本的字形向量表示。CNN进行特征提取的过程如图4所示。
图4 CNN提取字形向量Fig.4 CNN extracts glyph vector
在分别得到字、部首和四角向量后,模型对这三种向量表示进行拼接得到向量x,如式(7)所示:
其中,xc表示字向量,xr表示部首向量,xfc表示四角向量。
2.2 特征提取层
传统的GRU能在一定程度上缓解梯度消失和长距离依赖的问题,从而捕捉句子中潜在的语义信息。
GRU的计算过程如式(8)~(11)所示:
其中,Zt表示当前的更新门控,rt表示重置门控,ht-1表示上一时刻传递的隐藏层状态,σ(·)表示Sigmoid 激活函数,ht表示当前时刻的输出。Xt表示t时刻下的输入向量,Wz、Wr、皆为权重系数,⊙表示矩阵乘法。
虽然GRU在编码阶段可以考虑上下文相关的词汇信息,但在GRU 计算中当前时刻的输入和上一时刻传递过来的隐藏状态是相互独立的,它们只在GRU 的门控内部交互,而没有在信息传递到门控单元之前进行交互。在此阶段缺乏交互,可能会导致上下文信息的丢失。
因此,模型借鉴文献[20]的思想,在不改变GRU 本身结构的基础上,采用Mogrifier GRU实现当前时刻输入和上一时刻隐藏状态的交互。在字形向量表征电子病历文本的基础上,通过输入层和隐藏层信息交互的方式,强化模型对汉字字形隐含语义关系的理解,更加准确地捕获电子病历专业术语的上下文信息。设输入和隐藏状态的交互轮次为r,每次交互前的输入和隐藏层状态都是经过上次交互得到。在r=5的情况下,Mogrifier GRU的示意图如图5所示。
图5 Mogrifier GRUFig.5 Mogrifier GRU
可以表示为:
这里x-1=x,,交互轮数r设定为超参数,当r=0 时,即为未做交互的传统GRU。将xi和按照指定的轮次进行交互,增强模型对上下文语义信息的提取能力。r为奇数次交互时更新xi,r为偶数次交互时更新,经过多轮xi和的交互后,将所得的矩阵作为GRU的输入,进一步提取特征编码。
考虑到长距离依赖对文本标签决策产生的影响,模型采用双向的Mogrifier GRU提取输入序列的特征,分别在正向和反向输入文本序列,通过计算得到两个不同方向的隐藏层向量,然后将两部分向量进行拼接得到对应的输出:
2.3 CRF层
为避免“B-药物”后出现“I-解剖部位”的情况,需要使用CRF 建立相应的标签约束。CRF 是一种判别式概率模型,对于一组给定的输入序列X={x1,x2,…,xn},对应的预测标签序列Y={y1,y2,…,yn},对应的概率分数函数如式(18)所示:
其中,C代表转移分数矩阵,Cij表示从标签i转移到标签j的概率,Pi,yi表示第i个词语被标记为正确序列yi的概率,S(x,y)表示输入序列X被标记为正确标签序列Y的概率分数。预测序列Y对应的概率如式(19)所示:
YX表示所有可能的标注序列。然后通过维特比算法解码,求得Y中得分最高的标签序列,如式(20)所示:
3 实验结果及分析
3.1 数据集
本文在CCKS2019和MSRA数据集上进行实验,来验证模型在中文电子病历命名实体识别任务上的有效性。CCKS2019 数据集共包括6 种实体类型,分别是疾病和诊断、手术、药物、解剖部位、影像检查和实验室检验,共有1 379 条数据。MSRA 数据集共包含3 种实体类型,分别是LOC、ORG、PER,共有48 442 条数据。具体的各实体类型如表1和表2所示。
表1 CCKS2019数据集Table 1 CCKS2019 dataset
表2 MSRA数据集Table 2 MSRA dataset
3.2 评价指标
评价指标采用命名实体识别任务中最为常见的评价体系:精确率(precision,P)、召回率(recall,R)和F1值(F1-score)。
其中,TP就是把正类预测为正类,FP就是把负类预测为正类,FN就是把原来的正类预测为负类。F1-score同时兼顾了分类模型的精确率和召回率,可以看作是精确率和召回率的一种加权平均。
3.3 实验环境和超参数设置
表3和表4列出了本次实验的具体配置和参数。模型基于Tensorflow框架,服务器具体配置:CPU为Intel®主频2.5 Hz,GPU 为显存8 GB 大小的GeForce RTX 2080,内存32 GB。采用交叉验证的方法对实验进行微调。将输入文本最大长度设置为128。
表3 实验配置Table 3 Experimental configuration
表4 实验参数设置Table 4 Experimental parameters setting
为了验证GRU输入与隐藏层之间的交互轮次r对中文电子病历命名实体识别效果的影响,选择不同的r进行实验。将r作为基础参数分别设置为4~7,其他参数不变,得出的实验结果如图6所示。
图6 不同交互轮次下F1值Fig.6 F1 value under different interaction rounds
从实验结果可以看出,F1的变化与交互轮次r之间存在一定关系。在交互轮次较少时,F1 逐渐增大,当r取5时,F1达到最大,证明GRU输入层与隐藏层之间的交互使得模型加强了模型对上下文信息的提取,相比普通GRU能够更好地挖掘电子病历文本特征的前后依赖关系。但当F1取6、7时,F1降低,过多的r会加强模型对文本中非关键词语的关注,影响GRU 对时间序列数据的提取效果。
3.4 实验结果与分析
3.4.1 对比实验
为验证模型的有效性,本文在CCKS2019数据集上与其他先进方法进行对比,并给出了总体的F1值,结果如表5所示。对比方法简介如下。
表5 对比实验结果Table 5 Comparative experimental results单位:%
(1)BiLSTM[6]:序列标注任务的通用模型。
(2)BERT-base[18]:谷歌发布的预训练模型。
(3)MacBERT-base[21]:使用相似词汇替换任务改进BERT模型。
(4)FLAT[22]:在Transformer 的基础上,采用特殊的位置编码表征输入结构。
(5)DUTIR[23]:提出基于部首的ELMo 预训练模型,并使用CNN 提取部首向量,在BiLSTM-CRF 的基础上使用多任务训练方式,取得CCKS2019 竞赛第三名的成绩。
(6)FBBC[24]:在修正的数据集上,使用BERT预训练模型提取字向量,并使用BiLSTM-CRF 进行编码解码,取得CCKS2019竞赛第一名的成绩。
(7)MECT[25]:通过交叉变换网络融合部首、字和词向量。
从实验结果可以发现,本文模型在同一数据集上的实验结果相比其他模型有着明显提升。BiLSTM 为常见的序列标注模型,适合大部分命名实体识别任务,因此取得较好的效果。BERT、MacBERT预训练模型在编码中考虑了对一词多义问题的处理,使用注意力机制提取句子中的语义信息,关注文本语义间的联系,因此在效果上优于BiLSTM模型。FLAT模型引入相对位置编码,更加关注文本内部的词汇联系,在效果上优于预训练模型。DUTIR使用ELMo预训练模型提取部首向量,关注电子病历文本结构的特点,使得向量能够表征医疗专业词汇的含义。但编码方式存在局限性,BiLSTM缺乏隐藏层和输入层的交互,导致对部首信息的利用不够充分。FBBC 综合BERT 模型和BiLSTM-CRF 的优点,通过大规模的预训练模型和序列建模方法来识别实体类型,但缺乏针对电子病历文本特点的学习,在识别效果上仍有所欠缺。MECT模型引入部首向量,使用交叉变换网络提取特征,有效提高了命名实体识别效果,验证了部首信息对中文电子病历命名实体识别的有效性。
本文模型使用ALBERT 在使用ALBERT 提取字向量的基础上加入部首和四角向量,关注电子病历文本的字形结构特点,同时使用标签标记方法解决了中文电子病历数据集样本分布不平衡的问题,在特征提取前进行输入层和隐藏层的交互,学习电子病历文本中潜在的语义关系,因此效果比上述方法更好。
3.4.2 消融实验
为探究模型中各个模块给中文电子病历命名实体识别效果带来的改进,设置6 个模型进行消融实验,各模型在CCKS2019数据集的实验结果如表6所示。
表6 消融实验结果Table 6 Ablation results 单位:%
model1:普通的ALBERT-BiGRU-CRF模型;
model2:在model1的基础上加入部首向量;
model3:在model2的基础上加入四角向量;
model4:在model3 的基础上对嵌入层的向量进行实体标签标记;
model5:在model4 的基础上使用CNN 对部首和四角向量进行特征提取;
model6:在model5 的基础上对GRU 加入隐藏层和输入层之间的交互,即为本文提出的模型。
从实验结果可以看出,model1 仅仅采用ALBERT预训练模型的方法效果较差。通用领域的预训练模型在数据量较小、专业术语较多的医疗数据集上对文本信息的获取有所不足。model2、model3在加入部首和四角向量后,F1值提升了1.20和0.33个百分点,证明这类字形向量对电子病历专业词汇提取语义关系有帮助。model4 在model3 的基础上使用CNN 对部首和四角向量进行特征提取,相比于未经过字形向量处理,F1值提升了0.32 个百分点,证明了在电子病历文本中使用CNN 可以有效提取特征表示,获取相对丰富的字形信息。model5通过二分类器处理实体标签,相比于未经过处理model4 的F1 值提升了0.72 个百分点,证明对于实体类型分布不均衡的样本而言,标签分类策略可以有效减少样本分布不平衡对模型的影响。model6 在引入GRU 的输入层、隐藏层状态交互之后,相比于GRU 未做交互model5 的F1 值提升了0.89 个百分点,表明增加两者之间的交互有利于提高模型对电子病历文本上下文信息的理解能力,弥补GRU 在编码阶段缺乏交互导致语义信息丢失,提高中文电子病历命名实体识别的性能。
3.4.3 通用领域数据集对比实验分析
为验证模型在中文命名实体识别通用领域的效果,将模型在MSRA数据集上进行对比实验,并进行相应分析,实验结果如表7所示。
表7 MSRA数据集上的实验效果对比Table 7 Comparison of experimental results on MSRA dataset 单位:%
(1)Lattice-LSTM[14]:通过匹配字典的方式找到文本潜在的词汇信息,并将词汇信息融合到基于字的LSTM网络中。
(2)WC-LSTM[26]:提出新的向量编码方式,通过四种不同的方法将固定长度的单词信息融入到每个字中。
(3)CGN[27]:提取文本的字、词义和边界信息,并利用图注意力网络提取三种不同的特征向量。
(4)LR-CNN[28]:针对Lattice-LSTM不能并行运算的缺陷,采用CNN对字特征进行编码,通过不同的感受野提取特征,并使用反馈机制来调整词汇信息的权重。
(5)SoftLexicon(LSTM)+bichar[15]:使用词加权统计数据集中词语出现的频率,将字匹配到的词典和字信息融合。
以上均为命名实体识别中常见的词汇增强方法,其中Lattice-LSTM、WC-LSTM、CGN、LR-CNN 为动态框架,是在几种传统神经网络模型的基础上修改网络架构,融入全新的词汇信息形成的。但这几种方法缺乏可迁移性,不能应用到不同的特征提取器中,传统神经网络的编码效果也比较有限。本文模型采用和SoftLexicon 相同的自适应编码方式,在编码阶段除了使用字向量外,还融入了部首和四角向量,体现了电子病历数据的专业性,在文本语义表示上更加丰富,同时在编码层将输入和隐藏状态交互加强了模型对文本信息内部的上下文语义提取能力。在F1值上分别比其他几种方法高出2.26、2.08、1.97、1.73、1.38个百分点,精确率和召回率均达到最高值,证明模型可以捕获句子中潜在的语义关系,有效识别MSRA 数据集中的各类命名实体,验证了模型的通用性。
综合以上结果表明,CNN 作为特征提取器提取部首和四角向量,和ALBERT 提取的字向量融合,可以有效提取文本局部信息,避免有效信息的丢失;通过实体标签标记策略,可以加强模型对实体类型的建模,减少负样本过多带来的影响;在GRU 的基础上输入层和隐藏层交互的方法可以提取到文本的深层语义信息,加强文本内部词汇之间的联系,进一步提升了中文电子病历命名实体识别的实验效果。
4 结束语
本文提出一种Mogrifier GRU 和多特征融合的中文电子病历命名实体识别研究方法,旨在挖掘文本深层次的语义关系,用于识别医学领域的命名实体。首先通过ALBERT 提取字向量,CNN 提取部首、四角向量,从不同方向挖掘文本潜在的信息;然后使用二分类器对向量进行实体标签标记,减少负样本计算,再将经过标记处理后的三种向量拼接;最后在GRU的基础上,将输入部分和隐藏层交互,增强模型上下文信息的提取能力,使用CRF解码,建立标签之间的约束。在CCKS2019数据集上进行实验,证明了模型在中文电子病历命名实体识别的效果。在中文通用领域数据集上的实验进一步验证了模型的适用性。但模型使用的预训练模型是在通用领域上训练完成的,对专业领域的数据集识别效果仍然有所欠缺。下一步工作是将预训练模型在医疗文本数据上训练,进一步提高模型在中文电子病历命名实体识别任务的性能。