高佳奕,杨涛,董海艳,史话跃,胡孔法
1.南京中医药大学人工智能与信息技术学院,江苏 南京 210023; 2.南京中医药大学中医学院,江苏 南京 210023
中医医案是中医临床诊疗的记录,是中医师辨证论治、察明证素的基础,是中医文化的重要传承纽带。个体化的专家表达与非结构化的中医症状,使得从复杂医案中抽取有效信息具有挑战性。中医临床信息抽取是从海量临床数据中抽取关键信息的过程[1],涉及症状、诊断、治法、方药等信息,其中又以症状抽取最为复杂。有效的信息抽取是挖掘中医辨证规律、探寻疾病机理的重要基础。近年来,随着对词嵌入模式的改进,神经网络在信息抽取领域取得较大进展,在部分任务中的表现超过传统的统计学习方法。Huang等[2]提出双向长短时记忆网络与条件随机场(long short term memory network-conditional random fields,LSTM-CRF)混合模型,减少模型对词嵌入的依赖,极大提高了模型的稳健性。李明浩等[3]针对中医医案临床症状术语构建LSTM-CRF模型,根据常见症状的组成要素制定额外的字符级别特征,识别的F1值最高达78%。上述研究为中医临床文本医案自动化分析和处理,尤其是症状识别和抽取带来了新的契机。鉴于此,本研究尝试将LSTM-CRF模型应用于中医医案的命名实体抽取,设计多种症状命名实体抽取模型,并在中医肺癌数据集上进行实验,分析比较各方法的优劣,为实现中医临床信息的自动化抽取提供方法学参考。
数据来自国医大师周仲瑛工作室,为1986年7月10日-2014年12月3日周仲瑛教授治疗肺癌的医案。
纳入标准:①医案明确记载诊断为肺癌;②患者就诊时主诉以肺癌为主;③数据完整,至少包含临床表现、病机分析和治法、用药内容。
排除标准:①非原发性肺癌,如复发癌或转移性肿瘤;②医案记录存在明确错误或缺失。
根据筛选标准筛选到1000份高质量医案,围绕病史进行症状命名实体识别。考虑到中医医案中的描述包括“咳嗽”等症状特征、“胸、背”等部位特征、“稍有”等程度特征,医者据此进行辨证论治,本研究根据如上的实体特征,将单条医案划分为症状(名)、(症状)程度、(症状发生)部位3类不同标签,与疾病无关的信息划分为非命名实体组成部分。标签具体特征见表1。
表1 医案标签对应部分特征
症状词、程度词、部位词依次记为ZZ、CD、BW,非命名实体组成部分记为O。利用BIO三元集的标注方法进行标注,具体方法见表2。如某份原始病案可标注为“近O来O左B-BW胸I-BW胁I-BW肋I-BW隐B-ZZ痛I-ZZ,咳B-ZZ嗽I-ZZ深O呼O吸O有O影O响O,行O走O讲O话O气B-ZZ短I-ZZ,疲B-ZZ劳I-ZZ乏I-ZZ力I-ZZ,咳B-ZZ嗽I-ZZ不B-CD多I-CD,烦B-ZZ躁I-ZZ,咽B-BW后I-BW壁I-BW有O痰B-ZZ黏I-ZZ不I-ZZ爽I-ZZ。”
表2 命名实体标注方法
本研究利用爬虫获取中国知识资源总库(CNKI)与中医主题相关的100条文本摘要,结合已标注的1000份中医临床肺癌医案,利用Python中Gensim库,通过基于Skip-Gram方法的Word2Vec模型生成维度为100的字向量集,以此作为预训练的字嵌入。为验证生成字嵌入的可靠性,本文以“咳”字为例,选取与之相关度较高的字向量,结果见图1。可以看出词嵌入结果符合先验知识。
图1 “咳”字的字嵌入相关性分析
长短时记忆网络(long short term memory network,LSTM)模型通过门限机制(即输入门、输出门和遗忘门)对输入序列进行有效的过滤和保存[4-5],实现对特定实体的长期记忆,解决了传统识别任务中的梯度消失和梯度爆炸现象。因此,本研究采用LSTM层作为特征提取层,抽取出中医医案实体的抽象特征。条件随机场(conditional random fields,CRF)是用来标注和划分序列结构数据的概率化结构模型[6],可以在句子级别上实现个体标签的预测,有效避免标注的句子存在非法语义。考虑到各个标签表现出较强的语法约束,如病位的起始词后不应接程度的中间词,本研究选择CRF层作为输出标注层,根据LSTM层输出学习医案的语法规则,在可行的标注路径中找到最优路径,进而实现相应实体的合理标注。LSTM-CRF模型结构图见图2。
图2 LSTM-CRF模型结构图
模型具体实现步骤:①根据中医医案的术语特点,结合中医医案与CNKI中医词条相关的文本摘要,获得维度为100的字向量表示。②构建LSTM层,结合预训练的字向量,抽取出中医医案的上下文抽象特征,计算序列与标签的概率分布矩阵。③应用CRF层学习序列与标签、标签与标签之间的潜在关系,在句子级别上排除不符合语法规则的标注序列。④通过多分类评价指标对模型结果进行评价。LSTM层的实现步骤如下。
输入:预训练的字嵌入。
输出:输入序列与对应标签的概率分布矩阵P。
步骤1:根据输入序列x中的字符,将预训练生成的对应字向量送入LSTM(前向)的输入层中。
步骤2:更新当前LSTM网络中所在单元的状态。
步骤3:将序列输入LSTM(后向)中,重复上述过程。将2次遍历的隐藏层序列拼接得到与上下文相关的字向量表示。
有学者通过改变LSTM的内部结构,设计出带有peephole connection机制[7]与门控循环单元(gated recurrent unit,GRU)[8]的LSTM变体,极大简化其复杂的门限机制。本研究参照上述建模步骤,选取传统的循环神经网络(recurrent neural network,RNN)模型作为基线实验,LSTM、GRU、双向LSTM(BiLSTM)与带有Peephole机制的BiLSTM(BiLSTM with Peephole)作为对比实验,比较分析不同模型的实体识别效果。
基于Tensorflow框架构建中医医案的LSTM-CRF模型,部分参数设置:全局学习率(learning_rate)为0.001,最大训练轮数(max_epoch)为100,训练语料的句子最大长度(max_length)不超过100个字符,选择优化器为Adam。为防止梯度爆炸和过度拟合现象,设置梯度截断参数(gradient clip)为5,随机失活参数(dropout)为0.5。以上参数设置均为实验过程中调参的最优结果。此外,为提高LSTM-CRF模型的泛化能力,避免序列的输入顺序对参数学习造成影响,每轮训练前预先对输入数据进行Shuffle。
本研究使用准确率(precision,P)、召回率(recall,R)和F1-测度值(F1-measure,F1)3个指标,评估LSTM-CRF模型在中医医案信息抽取任务中的性能。将真实类别与计算机预测类别相互组合,分别记为真正例(true positive,TP)、假正例(false positive,FP)、真反例(true negative,TN)与假反例(false negative,FN),则P=TP/(TP+FP)×100%,R=TP/(TP+FN)×100%,F1=2×P×R/(P+R)。
将1000份肺癌医案划分为训练集800份和测试集200份,采用经典的留出法进行模型评估。设置随机种子为1~10,取10次测试结果的平均值作为最终评估值。实验结果排除非命名实体组成部分,分别观察LSTM及其变体对症状、程度、部位实体的识别情况(各变体均默认后接CRF层进行序列标注)。结果显示,各变体均对症状词的识别精度最高,对部位词的识别精度最低。与RNN相比,带有Peephole机制的BiLSTM识别效果最好,F1值最高达84.23%,3类标签F1值分别高于基线模型RNN 6.76%、10.89%、14.94%,见表3。
同时,与传统的CRF相比,BiLSTM-CRF模型对程度和部位的识别能力均有提升,分别为5.71%和2.45%,但对症状的识别能力低于CRF(见表4)。
进一步探究嵌入粒度对实验结果的影响,将预训练的词嵌入(WE)作为基线,结果未经过预训练、直接根据输入语料随机初始化字嵌入(RE)识别效果略优,采用预训练的字嵌入(CE)识别效果最好,3类标签分别高于基线0.42%、1.35%、1.98%,见表5。
表3 中医医案症状命名实体在不同模型中的识别结果比较(±s)
表3 中医医案症状命名实体在不同模型中的识别结果比较(±s)
注:*该行最大值
标签 指标 RNN LSTM GRU BiLSTM BiLSTM with Peephole ZZ P 0.786 5±0.106 2 0.798 0±0.029 8 0.805 7±0.025 3 0.838 5±0.029 3 0.844 6±0.022 7 R 0.791 7±0.021 6 0.792 0±0.018 9 0.796 6±0.024 6 0.840 1±0.030 9 0.840 2±0.019 2 F1 0.789 0±0.023 4 0.794 9±0.022 4 0.801 1±0.024 1 0.839 1±0.027 5 0.842 3±0.019 4* CD P 0.774 8±0.043 8 0.784 1±0.021 2 0.789 1±0.048 1 0.816 2±0.062 7 0.813 5±0.028 0 R 0.713 8±0.050 9 0.738 7±0.059 3 0.749 0±0.045 7 0.822 8±0.028 1 0.833 4±0.045 6 F1 0.742 0±0.042 4 0.759 8±0.037 9 0.768 0±0.038 9 0.818 7±0.042 2 0.822 8±0.032 7* BW P 0.719 9±0.028 7 0.723 3±0.101 6 0.715 6±0.078 1 0.739 5±0.091 9 0.766 3±0.082 7 R 0.588 6±0.021 6 0.623 4±0.109 5 0.605 9±0.088 3 0.714 4±0.092 4 0.720 6±0.078 7 F1 0.644 2±0.023 4 0.661 3±0.080 6 0.651 9±0.067 2 0.720 9±0.070 7 0.740 5±0.068 2*
表4 CRF与BiLSTM-CRF识别效果(R)比较(±s)
表4 CRF与BiLSTM-CRF识别效果(R)比较(±s)
模型 ZZ CD BW CRF 0.871 2±0.014 5 0.788 4±0.032 5 0.703 4±0.049 1 BiLSTM-CRF 0.840 2±0.019 2 0.833 4±0.045 6 0.720 6±0.078 7
表5 中医医案症状命名实体在不同嵌入粒度下的识别结果比较(±s)
表5 中医医案症状命名实体在不同嵌入粒度下的识别结果比较(±s)
注:*该行最大值
标签 指标 WE RE CE ZZ P 0.835 6±0.028 5 0.837 6±0.023 7 0.844 6±0.022 7 R 0.842 1±0.023 3 0.841 9±0.021 8 0.840 2±0.019 2 F1 0.838 7±0.024 9 0.839 6±0.019 6 0.842 3±0.019 4*CD P 0.836 5±0.047 1 0.829 0±0.047 8 0.813 5±0.028 0 R 0.792 9±0.053 6 0.810 5±0.043 3 0.833 4±0.045 6 F1 0.811 8±0.046 3 0.818 3±0.032 1 0.822 8±0.032 7*BW P 0.786 8±0.080 4 0.774 0±0.080 2 0.766 3±0.082 7 R 0.696 2±0.084 1 0.709 7±0.071 6 0.720 6±0.078 7 F1 0.726 1±0.067 9 0.737 8±0.063 9 0.740 5±0.068 2*
本研究应用LSTM-CRF模型进行中医临床症状命名实体识别,对肺癌中医临床数据进行实验。从整体结果分析,模型对症状词的识别效果最好,其评价指标P、R、F1值分别为0.844 6±0.022 7、0.840 2±0.019 2、0.842 3±0.019 4;对部位词的识别效果最差,P、R、F1值分别为0.766 3±0.082 7、0.720 6±0.078 7、0.740 5±0.068 2。考虑为部位词的样本数较少(共2501处)而症状词的样本数较多(共计184 649处),训练过程中网络学习到部位词的类别特征不明显,影响了识别精度。
从LSTM及其各变体的识别结果分析,LSTM利用门限机制和内部的细胞状态较好地实现了对信息的更新与长时积累,使3个标签的F1值均优于传统的RNN;GRU得益于其较为简单的门控机制与较少的训练参数,整体识别效果略高于LSTM;BiLSTM在LSTM的基础上对输入序列进行了额外的反向学习,使其对输入序列的部分语法规则(如“I-CD”标签前不可能出现“B-ZZ”标签等)学习更加准确,加强了对上下文所携带信息的记忆,症状、程度、部位3类标签的F1值分别高于LSTM 5.78%、7.53%、8.61%;带有Peephole机制的BiLSTM识别效果最好,3类标签的F1值分别高于LSTM 5.96%、8.29%、11.98%。
对BiLSTM-CRF与CRF的识别效果进行比较分析,发现BiLSTM有效提高了CRF在程度词与部位词识别上的召回能力。由于部位词与程度词的标签数目较少,且在实际标注过程中二者常分散存在于症状词中,常与症状词相混淆,人工编写的特征模板难以识别,同时,部位词和程度词的表述相对灵活,重现性差,如形容程度较轻有“偶”“稍”“稍有”“少”“微微有”“不多”“有时”等多种表达方式,部位常与多个方位词连用,如“右胁”“胸胁”“胁部”等,CRF的特征模板具有一定局限性,只能在有限窗口内进行提取,无法根据具体语义进行灵活识别,而BiLSTM摒弃传统特征模板,对学习内容具有长时记忆,加强了各窗口之间联系。针对症状词,CRF的识别效果略优于BiLSTM,这是由于中医病案中症状名多为双字或四字成词,如“咳嗽”“咯痰”“疲劳乏力”,且样本数较多,特征明显,独立性强,不太依赖长远信息,用人工标注的模板即可学习到这些特征,BiLSTM额外的复杂性给症状词识别带来干扰。
对不同的嵌入粒度进行深入探究,发现随机初始化字嵌入方法的识别效果略优于预训练后的词嵌入方法。考虑为中医医案多为白话夹杂部分文言的叙述方式,现有的词嵌入生成工具对未能识别的词按字切分,如“纳可”被切分为“纳可”,中医术语常存在一字多义情况,如“二便”往往被切分为“二便”,导致生成的词向量语义与医案中词语的实际语义差别较大,使按字嵌入的效果优于按词嵌入,与文献[3]研究结果一致。预训练的字嵌入方法识别效果最好,这是因为随机初始化方式仅局限于字在当前训练集中的上下文信息,而预训练方式包含字在全局范围内的上下文信息,有效提高了模型的语义信息量。
中医医案是古今医家通过不断实践总结的宝贵经验,在传承及指导临床等方面具有举足轻重作用。本研究构建了基于LSTM-CRF的中医医案症状命名实体抽取模型,并就不同变体算法与嵌入粒度等进行了测评,结果显示基于字嵌入并带有Peephole机制的双向LSTM识别效果较好。但本研究采用的数据集样本量较小,数据集标签类别分布不均衡,症状术语未进行统一规范,存在实体间相互包含与混淆等问题。今后研究将进一步增加样本量,设计更为精细的标签模式,从而提高模型的识别效果。