基于XLNet-BiLSTM 的中文电子病历命名实体识别方法

2021-12-01 05:26沈宙锋苏前敏郭晶磊
智能计算机与应用 2021年8期
关键词:病历命名向量

沈宙锋,苏前敏,郭晶磊

(1 上海工程技术大学 电子电气工程学院,上海 201620;2 上海中医药大学 基础医学院,上海 201203)

0 引言

电子病历(EMR,Electronic Medical Record)是计算机信息系统存储、管理和传输的医疗记录,包含医务人员在为患者诊疗过程中记录的关于患者病史、临床表现、治疗方法等数字化信息[1]。由于电子病历大多是半结构化和非结构化的状态,对其进行分析处理和数据挖掘受到严重制约。命名实体识别(named entity recognition,NER)是发现和识别自然文本中的专有名词和有意义的词语,并将其归类到预定义的类别中,是自然语言处理(natural language processing,NLP)任务中的一项重要分支[2]。运用命名实体识别技术对电子病历文本进行分析研究,目的是自动地识别并且分类电子病历中的医疗命名实体。

传统的电子病历命名实体识别研究主要分为基于规则和基于机器学习两种方法,基于规则的方法主要依靠领域专家构建的领域词典进行识别,对于词典中没有出现的实体通过手工编辑的规则来识别医疗命名实体[3]。由于词典构建和规则制定对领域专家的依赖性,基于机器学习电子病历命名实体识别的方法被广泛运用。近年来深度学习在语音识别、图像识别和视频分析等多个领域取得了重大进展,大量研究人员将深度学习运用到电子病历实体识别领域,通过在大规模的标注数据中训练与学习,可以更好地抽取上下文语义特征进行表示[4]。

基于深度神经网络的命名实体识别方法,都需要通过词嵌入方法将文本信息转换成序列化向量,目前比较流行的词嵌入方法是2013 年由Mikolov 等提出的Word2Vec,将传统的词的one-hot 表示转换为低纬、稠密的向量,每个词都由数十或数百个维度的实值向量表示[5]。但是Word2vec 训练的词向量是静态的,即同样的字在不同的语句中向量表示都是不变的,也就无法获取相同词汇的多种含义,且不能在训练过程随上下文来消除词义的歧义[6]。电子病历中通常存在一词多义现象,如“疾”这个字在不同的词语中意义不同,既可以是名词疾病,也可以是形容词剧烈;近年来,针对以上问题,学术界提出了许多与上下文有关的词嵌入表示方法,比如ELMO(embeddings from language models)方法和OpenAI-GPT(generative pre-training)方法[7]。但是,上述两种语言模型的语言表示都是单向的,无法同时获取前后两个方向电子病历文本的语义信息。

为了解决上述问题,本研究拟采用双向自回归预训练语言模型XLNet 引入电子病历NER 任务中,提出了XLNet-BiLSTM-MHA-CRF 命名实体识别模型,并利用该模型对医疗电子病历中预定义的疾病、症状、治疗、检查、身体部位5 类实体进行命名实体识别。实验证明,使用预训练语言模型构建词嵌入,并在BiLSTM-CRF 中加入多头注意力机制,多角度的提取文本特征,有效提高了命名实体识别的效果。本文所述算法在ccks2017 命名实体识别任务中取得F1 值为91.74%。

1 XLNet-BiLSTM-Attention-CRF 命名实体识别模型

XLNet-BiLSTM-MHA-CRF 命名实体识别模型的整体结构如图1 所示。模型第一层为XLNet 词嵌入层,通过XLNet 预训练语言模型,运用低维的字向量对病历中的每一个字进行表示,得到序列化文本输入;第二层是BiLSTM 层,利用双向长短时记忆神经网络自动提取句子的前向特征和后向特征进行拼接输入下一层;第三层是MHA 层,通过计算多角度的注意力概率获得句子的长距离依赖特征,得到新的特征向量;第四层是CRF 层,通过计算对输入的文本特征进行序列标注,输出最优标签。

1.1 XLNet 预训练语言模型

XLNet 模型是CMU 与谷歌团队在2019 年提出的一个基于Bert 优缺点的广义自回归预训练方法,在传统的自回归语言模型上实现了双向预测[8]。通过在transformer 模块内部使用attention mask 方法得到输入文本不同的排列组合,让模型充分提取上下文信息进行训练,克服了Bert 模型在Mask 机制下的有效信息缺失。XLNet 的掩码机制示例如图2所示,当模型输入句子为[糖,尿,病,患,者],随机生成的一组序列为[病,糖,患,者,尿],那么在计算重排列后的“糖”字来说就可以利用到“病”字的信息,所以在第一行只保留了第三个位置的信息(用实心表示),其他的位置的信息被遮掉(用空心表示)。再比如重排后的“尿”字位于最后一个位置,其余四字的信息都可以利用,即第二行除第二个位置外全部以实心表示。

图2 XLNet 模型掩码机制示例图Fig.2 XLNet model mask mechanism example diagram

现有的预训练语言模型大多数采用transformer架构,但是在捕捉长距离依赖关系上还存在不足[9]。为了解决这样的问题,XLNet 采用引入循环机制(RNN)和相对位置编码的transformer-xl 架构。通过RNN 提取上一片段隐状态长距离依赖信息,存储在片段之间的memory 单元,供下一片段的预测使用,充分捕捉长距离文本特征。片段之间的信息传递方式如图3 所示,虚线框中表示前一片段提取的记忆信息,通过memory 单元传递给下一片段,实现了信息的传递。

图3 XLNet 循环机制片段信息传递图Fig.3 XLNet cycle mechanism fragment information transfer diagram

在位置编码方面,采用相对位置编码替代绝对位置编码,解决词的多义性问题,增强文本特征提取的完整性,加入相对位置编码后的self-attention 公式(1)如下:

其中,Exi,Exj分别表示i,j的文本向量;W代表权重矩阵;Ri-j代表i,j的相对位置;uT,vT是需要学习的参数;Wk,E,Wk,R分别为学习到基于内容的key向量和基于位置的key向量。

基于transformer-xl 的XLNet 预训练语言模型,通过attention mask、循环机制和相对位置的编码,克服了自回归语言模型单项传递信息的不足,充分利用上下文的语义信息提取潜在的内部关系,训练出特征更加完整的词向量表示。

1.2 双向长短时记忆网络(BiLSTM)模型

针对传统的循环神经网络(RNN)在处理序列标注问题时出现梯度消失和梯度爆炸的现象,Hochreiter 和Schmidhuber 在1997 年提出长短时记忆网络(long short term memory,LSTM)[10],该网络是在RNN 的基础上的改进,其单元结构如图4 所示。通过设置遗忘门、输入门和输出门3 种门限机制看,选择性的处理信息的遗忘和传递,以此来捕获文本序列长距离依赖信息,有效解决了梯度消失的问题[11]。

图4 LSTM 单元结构图Fig.4 LSTM unit structure diagram

LSTM 网络一个单元的隐藏层运算过程如式(2)~式(7)所示:

其中,ft、it、ot和Ct分别表示t时刻的遗忘门、输入门、输出门和记忆细胞;σ是sigmoid激活函数,tanh是双曲正切激活函数;W、b分别表示连接两层的权重矩阵和偏置向量;xt为输入向量,ht-1为t-1时刻的输出;ht则为t时刻的输出;表示中间状态。

由于LSTM 只能处理当前单元之前的信息而无法获得之后的信息,于是提出双向长短时记忆网络,就是采用两层LSTM,分别获取文本序列的前向信息和后向信息进行拼接得到最终的隐藏层特征表示,充分捕捉上下文语义信息,有效提高命名实体识别的效果。

1.3 多头注意力(MHA)模型

2017 年谷歌机器翻译团队将多个自注意力进行结合创造性提出多头注意力模型(multi-head attention model)[12],具体结构模型如图5 所示。将文本序列X =(X1,X2…,Xn)输入BiLSTM 层,输出的矩阵Y =(Y1,Y2,…,Yn)作为Q、K、V 的输入,放缩点积注意力(scaled dot-product attention)单元共有h层,每一层的注意力计算如式(8)所示;将h个单头注意力输出进行拼接,同时做一个线性变换如式(9),得到的MHA为第t个字的h头注意力权重输出。多头注意力模型在NER 任务中可以充分捕捉句子的长时序依赖关系,获取全局特征。

图5 多头注意力模型Fig.5 The model of Multi-head attention

1.4 条件随机场(CRF)模型

Lafferty 在2001 年提出线性条件随机场(CRF)模型,计算给定随机变量序列X =(X1,X2…,Xn)的条件下,随机变量序列Y =(Y1,Y2,…Yn)的条件概率分布P(Y |X)[13]。模型假设随机变量序列满足马尔可夫性,式(10):

式中,X表示输入观测序列,Y表示对应的状态序列。

在电子病历命名实体识别任务中,每个字的标签与其相邻的标签都存在制约关系,例如O 标签后面不会是I 标签,I-DIS 不会跟B-BOD 后面。CRF能够根据前一层网络的输出结果,结合上下文语义标签信息得到每个字对应的标签序列出现的最优概率。

设MHA 模型的输出序列为X,其中一个预测序列为Y,则可以得出评估分数S(X,Y),式(11):

式中:Myi,yi+1表示从yi标签到yi+1标签的转移概率;Pi,yi表示第i个字被标记为yi的概率;n为序列长度。

最后采用极大似然法求解最大后验概率P(y |x),获得模型的损失函数值,式(12):

2 实验及结果分析

2.1 试验数据与标注策略

本次实验选取的是ccks-2017 任务二中400 份医疗标注数据作为数据集,并按照7 ∶2 ∶1 的方式分为训练集、测试集、预测集。该数据集共包括39 539个实体,分为症状、疾病、治疗、检查、身体部位5 类,共7 183句话。本文采用BIOE 的标注方式,即B 代表实体首字;I 代表实体中间部分;E 代表实体尾字;O 代表该字不属于规定的实体类别。各类别实体符号及数量见表1。

表1 医疗实体标注符号Tab.1 Medical entity notation

2.2 评价指标

实体识别和关系抽取实验通常采用准确率、召回率和F1 值指标评价模型的优劣:

其中:TP表示测试集中的正例被正确预测为正例的个数;FP表示测试集中的负例被误分类为正例的个数;FN表示测试集中的正例被误分类为负例的个数。

2.3 实验环境与参数设置

本文实验的命名实体识别模型基于TensorFlow框架,具体实验环境设置见表2。

表2 实验环境Tab.2 Experimental environment

实验参数具体设置:BiLSTM 模型的隐藏层大小为128,网络层数为1,选取Relu 作为模型的激活函数。在训练阶段将Dropout 的比例设置为0.1,批次大小设置为16,最大序列长度为128,学习率设置为1e-5,丢失率为0.1,使用Adam 优化器进行训练。

2.4 实验结果分析

为了验证本文提出XLNet-BiLSTM-MHA-CRF模型的性能,将其和以下3 组模型进行对比:

(1)BiLSTM-CRF 模型;

(2)Bert-BiLSTM-CRF 模型;

(3)XLNet-BiLSTM-CRF 模型。

不同模型的实验对比结果见表3,可以看出XLNet-BiLSTM-MHA-CRF 模型的精确率、召回率和F1 值在症状、疾病、治疗、检查、身体部位5 类医疗实体上都是最高的,相比于BiLSTM 基线模型分别提高了3.46%、1.14%、2.31%。

表3 各模型实验对比结果Tab.3 The results of each model experiment were compared

在所有模型中,症状、检查和身体部位3 个医疗实体的F1 值普遍较高,而疾病和治疗的实体识别F1 值恰恰相反。通过分析发现这两个类别的训练数据量明显过少,导致在模型训练过程中出现严重的过拟合现象;另外,疾病实体和治疗实体多为长词结构,例如“左眼眶软组织裂伤”、“左桡骨远端骨折切开复位内固定术”等,而症状、检查和身体部位的实体结构简单且训练数据量大,模型可以充分学习该类实体的文本特征。因此,在后期对电子病历的实体识别中可以通过增加语料库来提高模型的精度,同时可以进一步研究长词实体的结构,挖掘更深层次的语义信息,例如引入词典信息来增加语义特征,提高模型的泛化能力。

各模型实验结果对比如图6 所示。明显可以看出,基于预训练语言模型XLNet 和Bert 的模型的表现均比BiLSTM-CRF 模型的效果要好,主要是因为后者使用的是传统的Word2vec 获取的词向量,无法解决一词多义和同一词的问题,同时也证明了预训练语言模型构造的动态词向量可以提高文本内在语义信息的表达能力;通过对比发现XLNet-BiLSTMCRF 模型比基于Bert 的模型表现高0.5%~2%,主要是因为XLNet 通过attention mask 和transformerxl 模块弥补了Bert 的不足,导致识别效果的提升。本文提出的模型相比XLNet-BiLSTM-CRF 模型在精确率、召回率和F1 上面均有小幅提升,说明加入多头注意力机制可以使文本信息表示更加完整。

图6 各模型实验结果对比图Fig.6 Comparison of experimental results of each model

3 结束语

本文提出XLNet-BiLSTM-MHA-CRF 的医疗电子病历命名实体识别模型,使用预训练语言模型向量,在大规模语料中训练得到的动态词替代传统的静态词向量,对电子病历进行序列化表示,有效解决一词多义等问题,让上下文的语义表示更加准确;使用广义自回归预测模型XLNet 可以有效弥补Bert模型的不足;加入MHA 机制可以捕获电子病历文本中的长距离依赖特征。在ccks2017任务二数据集中实验结果表明,基于XLNet-BiLSTM-MHACRF 模型F1 值为91.64%,相较于其他模型达到较好的识别效果,能够较好地完成医疗电子病历的命名实体识别任务,对医学领域的实体识别研究具有一定参考价值。由于本实验数据仅有400 份电子病历数据,实体种类较少且实体数量不平衡,因此后期需要获取更多的电子病历数据来丰富模型的识别种类,为挖掘中文电子病历中隐藏的医疗信息做准备。

猜你喜欢
病历命名向量
我国第三艘航空母舰下水命名“福建舰”
向量的分解
电子病历评级的分析与总结
中国地名命名考
从盐渎到盐城——盐城命名记
“病例”和“病历”
有一种男人以“暖”命名
临床表现为心悸的预激综合征B型心电图1例
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线