基于SoftLexicon的医疗实体识别模型
2021-11-01朱艳辉梁文桐
张 旭,朱艳辉,梁文桐,詹 飞
1 研究背景
近年来,自然语言处理技术(natural language processing,NLP)的应用越来越广泛。医疗行业信息化迅速发展,其中电子病历(electronic medical record,EMR)在临床治疗、疾病预防等方面扮演着重要角色。EMR 是医务人员在病人治疗过程中(该过程包括临床诊断、检查检验、临床治疗等),利用医疗机构信息系统生成患者的数字化信息,并进行存储、管理、传输和医疗记录的再现[1]。对电子病历进行数据处理,构建专业且全面的医疗知识库,更有利于发挥其在“智慧医疗”中的作用。但是,目前电子病历大多处于非结构化状态,因而严重制约了其开发与利用[2]。
命名实体识别(named entity recognition,NER)是自然语言处理技术的一个分支,属于信息抽取的子任务,它将具有特定意义的实体从非结构文本中提取出来,并将其归入预定类别,例如从文本中识别出与人名、地名和机构名相关的实体。NER 本质上可以被看成是一种序列标注问题,在许多下游任务中扮演着重要的角色,包括知识库建设[3]、信息检索[4]和问答系统[5]。
随着医疗AI 技术的发展,信息抽取技术在医疗信息化的进程中扮演着不可或缺的角色,这一定程度上与国内外开展的相关评测任务密不可分,它们推动了大批学者对前沿技术的探索;国外的I2B2 会议催生了一系列优秀的研究成果,HMM(hidden markov model)、CRF(conditional random field)等基于统计的机器学习方法首次被应用于医疗NER 任务中,且有不错的性能表现;国内的全国知识图谱与语义计算大会(China Conference on Knowledge Graph and Semantic Computing,CCKS)自2017年起,已经连续4a 组织中文电子病历命名实体识别相关评测。在CCKS-2017 面向中文电子病历的命名实体识别任务中,参评者均有对Bi-LSTM(bidirectional long shortterm memory)算法模型的实现[6]。Zhang Y.等[7]分别采用CRFs 和BiLSTM-CRF 从电子病历数据集中识别疾病、身体部位和治疗等类型实体,对比发现后者的性能更好。CCKS-2018 评测中,何云琪等[8]通过结合一系列句法和语义特征表示,作为CRF 层的输入进行标签预测;Luo L.等[9]基于多特征(如标点符号、分词和词典等特征)融合,整合多种神经网络模型,完成对电子病历命名实体的识别,且取得不错的效果。潘璀然等[10]通过Lattice-LSTM 网络表示句子中的单词,将字符与词序列的语义信息整合到基于字符的LSTM-CRF 中,在CCKS-2018 任务一上进行实验,其F1值优于之前的最高结果。
但是,以上基于深度神经网络的NER 模型,都存在不同程度的缺陷。首先,与英语NER 相比,中文NER 的一大难点在于中文句子不是自然地被分隔开,传统深度学习NER 模型在中文特征提取过程中,可分为基于词粒度和基于字符粒度两大类,但由于中文电子病历实体的特殊性,即存在跨度较长的实体,因此常用分词工具无法精准识别实体边界,由此产生的分词错误会延续到上层模型的预测;基于字粒度的模型解决了分词错误的问题,但无法利用到句中单词的信息,尤其对于中文,相同字符在不同词中可能有不同的涵义,例如“灯光”和“争光”中的“光”字分别代表了“光线”和“荣誉”的含义;其次,研究者较少关注先验知识对识别效果的辅助作用[11],在Zhang Y.[12]的工作中证明了词典信息对提高NER准确率的重要性,但是现有引入词典的方法无一例外都建立了复杂的模型结构,导致运算效率低下,实用性不高。
综合以上问题,本文利用字符粒度Bi-LSTMCRF 模型的优势,提出一种基于“BMES”标签的词典简化方案,将单词词典整合到字符表示层中,SoftLexicon 方法避免了设计复杂的序列建模结构,通过对字词向量的拼接来完成词典信息引入,无需动态对句子序列进行编码,具体工作将在2.2 节中展开介绍;同时,由于字符与词典的匹配不与LSTM 编码层同步进行,因此很大程度上解决了引入词典带来运算效率低的问题。词典作为一种已有的先验知识,可以为字符信息提供很好的补充,增强神经网络模型对先验知识的学习,以便更完整地获取电子病历文本句中的实体特征,通过实验验证了基于SoftLexicon的中文电子病历实体识别模型无论在准确率还是效率上都有不错的表现。
本文后续结构如下:首先,对SoftLexicon 方法进行概述,并对字符表示层以及序列建模层实现过程展开介绍;然后介绍本文实验的相关工作,包括本文实验所用数据集,以及实验软硬件和参数设置,并对不同模型的对比实验效果进行分析;最后总结现有工作并提出后续工作设想。
2 基于SoftLexicon 的中文电子病历实体识别模型
2.1 中文电子病历实体识别任务
CCKS-2020 面向中文电子病历的医疗实体抽取是CCKS 围绕中文电子病历语义化开展的系列评测的一个延续,本文采用CCKS-2020 评测提供的中文电子病历实体数据集,标注数据包括了医疗实体的名称、起始和结束位置以及预定义类别,其中6 类预定义类别定义如表1 所示。
表1 CCKS-2020 预定义实体类别及定义Table 1 CCKS-2020 predefined entity classes
中文电子病历命名实体识别任务要求在纯文本电子病历文档中,识别并抽取出与符合预定义类别的实体,及其在文本中的位置信息,并将它们以字典的形式表示。
2.2 基于SoftLexicon 的实体识别模型
在进行关键词自动抽取时,以HMM、CRF 为代表的传统机器学习方法依赖人工构建大量特征工程。随着计算机硬件的快速发展,再加上医疗标注语料的逐渐完善,深度神经网络模型表现其优势,它通过模拟人类神经网络,运用多层的网络运算[13],能有效挖掘文本潜在语义信息,对人工难以识别的特征提取效果更好。基于SoftLexicon 的实体识别模型如图1 所示。
图1 SoftLexicon 模型结构图Fig.1 SoftLexicon model structure
图1 中,以输入序列“中国中医药”为例:(此图仅为流程展示,具体词典匹配结果以实验为准),整个神经网络共有4 层结构:输入层构建输入句子的特征向量序列,分别将字符对应的4 个单词集的表示形式组合成一个一维特征集,并将其添加到每个字符的表示形式中,例如图中的“医”字与词典匹配后得到的相关词,进行embedding lookup,经线性变换拼接到其字向量表示上;隐藏层为一个双向的LSTM网络,前向的LSTM 用于获取前文信息,反向传播的LSTM用于获取下文信息,再将双向信息拼接整合;在双向LSTM 层之上,应用CRF(条件随机场)层为字符序列执行标签推断,CRF 能够考虑到标签之间的连续性,获得最优输出序列。
2.2.1 SoftLexicon
单纯基于字符NER 方法的缺点是单词信息未被充分利用。考虑到这一点,Zhang Y.[12]提出了Lattice-LSTM 模型,用于将单词词典合并到基于字符的NER 模型中。Lattice-LSTM 有两个优点,首先它保留了与单个字符有关的所有可能的词典匹配结果,解决了词边界不确定的问题。其次,它可以引入预训练的词向量模型,从而极大地提升了性能。然而,Lattice-LSTM 模型复杂的结构导致其运算速度十分有限。如图2 所示,它在不相邻的字符之间额外增加了一个词级别LSTM通路,对字符组成的词进行编码,再输入到对应字符的Cell 中,由此可能产生单字符对应多输入的情况,因此在模型解码阶段就增加了计算复杂度;同时Lattice-LSTM 在引入词典过程中,依旧存在信息缺失的问题,例如图2“中医药”中的“医”字,它只能获取到“中医”的词信息,而无法获取“医药”和“中医药”对应的词信息。
图2 Lattice-LSTM 模型结构示意图Fig.2 Lattice-LSTM structure
针对上述不足,本文做了以下相关工作。课题组提出在中文电子病历NER 上使用一种轻量级词典匹配方法,首先将输入序列s={c1,c2,…,cn}与词典进行匹配,得到所有相关的词Wi,j(表示s子序列{c1,c2,…,cj}),为了保留分段信息,将每个字符ci的所有匹配单词分类为4 个单词集“BMES”,这4 个集合的构造如下,其中,L表示本文所使用的词典:
图3 所示为“中医药”的Lexicon 匹配示意图。
图3 Lexicon 匹配示意图Fig.3 Lexicon matching
如图3 中所示,以“中医药”为例,字符“医”与预先构造的词典进行单词匹配,得到对应的4 个单词集:B={W2,3(“医药”)},M={W1,3(“中医药”)},E={W1,2(“中医”)},S={(“None”)}(如果没有与之匹配到的词语,就用“None”来表示该集合)。同时本文引入了预先训练好的词向量,单词集中的每个单词都会转化成对应的词向量;然后对四个单词集中的所有单词执行权重归一化,此处使用基于统计的静态加权方法[14],即静态数据中每个词出现的频率,这种频率能一定程度上反映该词的重要程度,静态数据可以来源于医疗领域相关的文章等,其加权方法如式(5):
式中:S为“BMES”单词集;
z(w)为词典中单词w在静态数据统计中出现的频率;
Z为单词集中所有词出现频率之和;
ew为用于embedding lookup 的词向量矩阵。
最后将4 个单词集的表示形式组合成一个一维特征,再拼接到该字符向量的表示上,从而得到最终的输入向量。
式中:xc代表字符c对应的字向量;es(B,M,E,S)代表字符c匹配的单词集加权组合后的词向量。
2.2.2 LSTM 网络
RNN(recurrent neural network)模型由于可以自动保存历史信息并将其应用到当前输出中,易于捕获长距离依赖关系,这些特性十分适合处理时序信息,如序列标注问题[15],但是在上下文距离过长的情况下,容易产生梯度爆炸或梯度消失的问题。由此衍生而来的LSTM,在RNN 模型基础上增加了门控机制和一个用于保存长距离信息的memory cell,本文使用的Bi-LSTM 是在单向LSTM 的基础上,增加一层反方向的LSTM,这样能够有效捕获某一时刻的前后文信息。
LSTM 的门控机制由输入门、遗忘门、输出门3部分组成。以前向LSTM 为例,具体计算公式如下:
式(8)~(10)中:σ为sigmoid 函数;
W和b为训练过程不断更新的参数。
前向LSTM 与反向LSTM 具有相同的定义,但以相反的顺序对序列进行建模。在向前和向后LSTM的第i时刻处的级联隐藏状态形成ci的上下文相关表示。
2.2.3 CRF 模型
一个简单有效的标签模型是使用hi的特性为每个输出yi做出独立的标签决策。但当输出标签之间有很强的依赖性时,独立的分类决定显示出局限性。CRF 是一种基于无向图的判别式概率模型,它是指在给出一组随机输入变量的条件下,推断出另一组输出随机变量的条件概率分布模式[15];对于序列标注任务,CRF 输入序列为一个句子,输出序列是句中每个字符的标签,采用CRF 可以添加对标签序列的预测约束(例如,在B-PER 后面不能接I-LOC),提高NER 的识别准确率。
对于一个给定的输入序列X,预测序列为y,本文定义如式(11)所示的打分函数,它由两部分组成,其中,A是转移概率矩阵,Ayi,yi+1代表从yi标签到yi+1 标签的得分;P是经过BiLSTM 网络输出的字符标签分数矩阵,Pi,yi代表第i个字符作为标签yi的分数。
在训练过程中,对正确标签序列进行最大似然概率估计:
式中:YX是输入序列X中所有可能的标注序列。在解码阶段,利用动态规划算法,找到最高的条件概率标签序列y*,即得分函数取得最大值对应的序列:
3 实验设计与结果分析
3.1 实验数据分析及预处理
本文实验的数据集来自于CCKS-2020 的评测任务,官方提供的已标注训练数据共1 050 条文本,为了更好地掌握数据集以便模型建模,本文对训练数据中各类别的实体数量以及长度进行了统计,具体如表2 所示。
表2 训练语料实体统计结果Table 2 Entity statistics of training corpus
从表2 数据中可以看出,“疾病和诊断”和“解剖部位”两类实体出现最为频繁,其余各类别的实体数量分布在1 000~3 000 个。这是由电子病历的特点所决定的,患者就医都需要进行临床诊断,检查的方式有两种,轻微病症只需药物治疗,特定疾病需手术配合药物治疗,因此药物实体总数与检查实体总数基本持平。同时,手术类实体的平均长度为12.49,且最大实体长度达84,这些表明了电子病历中实体的特殊性,存在许多领域词汇,因此对模型的识别准确率提出较高要求。
对于深度神经网络模型来说,1 050 条训练数据不足以满足模型对数据量的需求,本文分析训练数据后发现,数据均由多个短句组成,导致文本长度过长,且相邻短句之间语义弱关联,因此本文以“。”作为分隔符结合句末分隔,对训练数据进行拆分,最终得到10 305 个句子序列。
同时为了验证模型训练参数效果以及结果预测效果,采用交叉验证法。如表3 所示,本文对训练数据按照6:2:2 的比例,将其划分为训练集、验证集和测试集。
表3 实验数据集划分Table 3 Experimental data division
本文对评测任务两阶段中发布的医疗词典文档进行去重融合,得到一个包含6 类实体、6 293 个医疗实体的词典,将其作为本文实验所需词典。
3.2 实验环境及参数设置
本实验基于TensorFlow 计算框架,使用GPU 加速,具体环境配置如表4 所示。
表4 实验环境配置Table 4 Experimental environment configuration
本文设置字向量维数为200,进行字词融合的词向量维度为50;考虑模型的收敛速度,将学习率设为0.001 5,同时,为了兼顾训练效率和后期稳定性,设置warm up 占整个训练轮次的0.1,0.90 的学习率指数衰减,即迭代1 000 轮次后,学习率变为原来的0.90;隐藏层节点数设为300,为防止过拟合现象,Dropout 调整为0.5,具体见表5。经过多次实验后,验证了所设参数的合理性。
表5 实验超参数设置Table 5 Experimental hyperparameter setting
3.3 评价指标
本实验评价体系包括准确率(P)、召回率(R)和F1值,各指标具体公式如下:
式(14)~(16)中:S为模型输出结果,记为S={S1,S2,…,Sm};
G为人工标注结果,记为G={G1,G2,…,Gn}。
用严格的等价关系确定S∩G为S和G的交集。当且仅当一个实体的内容、所属类别、起始下标和终止下标4 个要素全部一致时,才认为该实体的标注结果是正确的。
3.4 实验设计与结果分析
3.4.1 模型对比实验
为验证基于SoftLexicon 模型在中文电子病历命名实体识别上的表现,课题组设计了如下对比实验方案:
1)BiLSTM-CRF 模型。通过训练语料生成200维的字向量,将待预测字符序列导入BiLSTM-CRF中进行训练,最终得到序列预测标签。实验参数设置同表5。
2)IDCNN-CRF 模型。 基于IDCNN(iterated dilated convolutional neural networks)的特征抽取和CRF 的约束模型。该模型卷积核个数设置为“256,512,512”卷积膨胀率为“1,2,2”,其余实验参数设置同表5。
3)Lattice-LSTM 模型。在BiLSTM-CRF 基础上引入外部词典,为字符向量加入词特征,并利用门结构引导信息的流动。实验参数设置同表5。
4)SoftLecicon 模型。在Lattice-LSTM 基础上通过优化输入表示层编码,将字符的4 类词典集合,结合到字符的表示中。
表6 统计了4 种模型在测试集上的实验表现。
表6 模型对比实验结果Table 6 Model performance experimental results
通过分析发现,与基于BiLSTM-CRF 模型识别的准确率对比,在引入外部词典信息后,实验三、四所用模型在同类别实体上的识别效果表现出色,综合F1值分别提升了4.62%和5.89%。据分析可能是由于电子病历中实体的特殊性,单纯基于字符向量的BiLSTM-CRF 模型不能准确定位实体的边界,导致实体识别会出现缺漏、多余的现象,这体现了引入先验词典资源的必要性。IDCNN-CRF 模型在引入卷积膨胀因子后,可以获取到长距离依赖信息,适合处理长本文句子,SoftLexicon 模型在“疾病和诊断”和“手术”类实体识别上与实验二基本持平甚至有超越。四种模型对“手术”类别实体的识别效果较差,F1值均低于75.00%。分析表2 可知,“手术”类实体总数为1 327 个,数据量不足,导致模型参数训练效果不佳,且平均实体长度为12.49,易产生边界预测错误的现象。此外,4 种模型均存在不同程度的识别错误问题,例如,部分相似度高的实体被错误分类、样本稀疏导致未识别出实体等。
与Lattice-LSTM模型识别效果对比,SoftLexicon 模型在对字符表示层进行调整后,保留了更完整的词典匹配信息,基于SoftLexicon 的识别模型综合F1值达到90.05%,相比Lattice-LSTM 的F1值88.78%,有1.27%的提升;同时,SoftLexicon在各类实体识别效果上,P值和R值比较均衡,体现了模型的稳定性。
3.4.2 模型效率对比实验
为了分析SoftLexicon 模型在引入词典后对运算效率的影响,本文以4 个模型在同一机器上的运行时间作为对比,结果如表7 所示。
表7 模型效率对比实验结果Table 7 Model efficiency experimental comparison
实验效率上,前两个模型均迭代20 个Epoch,实验三和实验四引入词典的方法,为防止过拟合现象,在运行12 个Epoch 后提前终止了迭代;通过分析表格,实验四单个Epoch 的平均运行时长约0.45 h,总运行时间为5.4 h,相比实验三的单个Epoch 所用时长减少0.40 h,总时长缩短约3.2 h。引入外部词典的NER 方法相比实验一、二的方法,不可避免地会增加运算量,但SoftLexicon 方法在计算速度上仍有不错的表现。这可能是由于Lattice-LSTM 在不相邻的字符之间额外增加了一个词级别LSTM 通路,对字符组成的词进行编码,再输入到对应字符的Cell中,因此解码阶段需耗费大量运算时间;而SotfLexicon方法是通过简化词典使用,只需将整合后的字向量输入序列建模层,易于实现。
综上所述,基于SoftLexicon 的方法无论在识别性能还是运行效率上,均有良好的表现,在中文电子病历命名实体任务上具有可行性。
4 结语
为了解决传统中文电子病历NER 方法对字符信息遗漏以及引入外部词典资源的效率问题,本文提出了一种简单有效地整合词典信息到字符表示层中的方法,优化了字符表示层的模型结构,该方法融合了深度学习和基于词典方法两者的优势,将更完整的字符信息输入到序列建模层中,在中文电子病历NER评测任务中,取得了不错的效果。后续工作可从如下3 方面改进:
1)针对中文电子病历中存在实体类别不均衡的现象,采取过采样或欠采样的方法,均衡各类别数量,以提升效果较差的实体识别效果[11];
2)寻找字符信息更简单且准确的特征表示;
3)BERT、ALBERT 等预训练语言模型在NLP多个任务中均取得不错效果,考虑引入合适的预训练语言模型。