一种文本相似度与BERT模型融合的手术操作术语归一化方法
2021-05-27杨飞洪孙海霞
杨飞洪,孙海霞,李 姣
(中国医学科学院/北京协和医学院 医学信息研究所,北京 100020)
0 引言
手术操作原始词是指医生书写的手术操作名称。医生个人书写习惯的差异会导致手术操作原始词与编码标准词之间存在细微差异,如使用手术操作的英文缩写等。这些细微差异对手术操作规范和管理不利。国际疾病分类体系(ICD)于1975年开始对手术操作进行编码规范,经过数十年的发展,目前较为成熟的中文手术操作编码方案有:北京协和医院依据ICD-9手术操作编码体系结合临床实践编制的《ICD9-2017协和临床版》,目前在各医院广泛使用的《手术操作分类代码国家临床版1.1》以及正在逐步推行的《手术操作分类代码国家临床版2.0》[1]。各编码体系的核心是手术操作代码和相应的手术操作标准术语,如表1所示。
表1 手术操作编码示例
统一的手术操作编码体系有利于施行医院绩效评估、医保结算以及各级医联体间的患者转诊。因而,手术操作编码体系更新导致的历史文本数据,以及医生的书写习惯造成的手术操作不规范用语,需要利用计算机技术进行文本数据归一化处理。
国外自ShARe/CLEF eHealth 2013发布标注的临床术语归一化语料伊始,SemEval-2014 Task 7和SemEval-2015 Task 14相继发布了英文的临床术语归一化语料。在这些语料上,研究者们纷纷构建了各种临床术语归一化模型,并取得不少研究成果。第五届中国健康信息处理会议(CHIP2019)临床术语归一化任务(简称Task1)[2]开放了手术操作归一化数据集,其中训练集包含手术操作原始词与标准词共计4 000对,验证集1 000对,测试集2 000条(未标注),各数据集术语分布基本一致。Task1数据集标注依据的手术操作编码体系为《ICD9-2017协和临床版》。评测任务具体内容是给定一个手术操作原始词,预测其在编码体系中对应的标准词。Task1采用准确率评估模型效果,如式(1)所示。
准确率=预测准确的手术原始词与标准词数/需要预测的手术原始词总数
(1)
本文首先分析Task1数据集样本的特点,对样本数据进行清洗;其次,调研临床术语归一化的相关技术方法;最后,结合数据集的特点和相关技术方法,构建临床手术操作原始词归一化模型。
1 相关工作
本节从共指消解、临床术语归一化和ShARe/CLEF 2013评测任务三个方面开展文献综述。
1.1 共指消解
从某种角度上看,Task1其实是手术操作术语的共指消解问题,即根据手术操作术语的各类表述寻找共同指代的手术操作编码标准词。
宋洋等人[3]研究了基于机器学习的中文共指消解方法。他们依据国际著名评测ACE(automatic content extraction,自动内容抽取)对共指消解的定义,共指消解即为文本中的表述(mention,或称为指称语),确定其在真实世界中所指向的实体(entity)的过程。总结了有监督的机器学习方法处理共指消解时的三个关键步骤:①表述或实体的检测;②机器学习模型选择;③训练数据的构建。
表述检测(也被称为指称语检测,英文即mention detection),即识别出文本中可能产生共指的全部候选表述(候选表述来自于全部的名词短语集合的某个子集),是共指消解的第一步。表述检测的一般方法包括基于规则的方法[4]、基于学习的方法[5]以及规则和统计相结合的方法[6]。
机器学习模型主要用于针对表述对或表述—实体对的二元分类任务,即判断表述—表述是否等价或者表述—实体是否配对。文本分类是自然语言处理领域的经典问题,可以实现二元分类任务的经典机器学习模型有支持向量机(SVM)[7]、文本卷积神经网络(TextCNN)[8]、双向长短时记忆网络(Bi-LSTM)[9]和BERT[10]等。
机器学习模型训练集的构建,即从训练集中采样用于构建模型学习的数据集。Mccarthy等人[11]将任何两个不在同一实体(或被称为共指链)中的表述构成负例,任何两个位于同一实体中的表述构成正例。该方法产生的训练实例数量巨大,而且负样本数远远大于正样本数,严重影响机器学习算法的效率,因此后来很少被采用。Soon等人[12]将每一个表述mi与其前面最近的一个共指的表述mj(j1.2 临床术语归一化
Xu D等人[13]将术语归一化的方法总结为两个大类,其一是基于分类的方法,其二是基于排序学习的方法。他们认为基于分类的方法有两个缺点,即需要预测的类别空间大和类别间样本不均衡问题。基于排序学习的方法可分为点排序学习、对排序学习和列表排序学习三种不同形式。最终,他们构建了一套基于BERT模型的表述候选生成器+列表排序学习的术语归一化方法,在多个生物医学的英文文本数据集中取得了最先进的结果。
1.3 相关评测任务
ShARe/CLEF 2013评测任务1开放了298份匿名化的临床记录,其中包含出院小结、心电图报告、超声检查报告等。298份临床记录中,199份是训练集,共包含原始词与标准词对4 000余对;99份是测试集,共包含原始词与标准词对3 600余对。
基于ShARe/CLEF 2013评测任务1开放的数据集,Li等人[14]首先采用基于规则的方法生成候选集合,然后利用文本卷积神经网络模型(TextCNN)[8]对候选集合进行排序,取排序最靠前的词为归一化的标准词。该模型在测试集上的准确率为90.3%。Luo等人[15]在总结前人研究的基础上,提出了一种将传统字典查找与双向长短时记忆网络模型(Bi-LSTM)[9]相结合的临床术语归一化方法,达到了90.6%的准确率,相较于单纯的文本相似度方法的88.0%准确率,提升了2.6%。Ji等人[16]微调开源的BERT[10]、BioBERT[17]和ClinicalBERT[18]三个模型,利用这三个模型分别计算原始词与标准词间的相似度评分,在测试集上的准确率达到了91.10%。
2 方法
本节从Task1数据集的样本特点、数据清洗和Task1归一化方案的构建这三个层面展开讨论。
2.1 样本特点
分析Task1训练集样本,发现多个手术操作原始词之间用“+”分隔,多个标准词之间用“##”分隔。每一条样本中,手术操作原始词与标准词之间的关系有5种:1:1关系占总样本95.025%,n:1关系占3.25%,1:n关系占1.65%,n:n关系和m:n关系共占0.075%。Task1手术操作原始词与标准词示例,如表2所示。
表2 Task1临床手术术语原始词及标准词示例
2.2 数据清洗
除了手术操作原始词与标准词之间的关系,我们还观察到部分手术原始词中包含标准词的手术代码,如手术原始词“腮腺肿瘤(肿块)切除术+面神经解剖术((26.2910+04.0701))”中的“26.2910”。这些手术代码由医生手工填写,与《ICD9—2017协和临床版》手术操作编码中的手术操作代码并不一致。因此,需要利用正则表达式方法将这些原始词中的手术代码剔除。数据清洗后的手术原始词示例如表3所示。
表3 手术原始词数据清洗示例
Task1验证集样本特点与训练集基本一致,数据清洗采用同样方法。
2.3 手术操作术语归一化方案
观察Task1数据集,可以发现手术操作原始词与标准词之间的文本相似度很高,同时手术操作原始词之间相似性也很高,因此可以依据文本相似度特征排序产生手术操作原始词-标准词对的候选集,也就是共指消解中的表述检测。本文选择BERT作为手术操作原始词-标准词句对的二元分类模型。训练集的构建策略为:将训练集每条样本的手术操作原始词与标准词作为正例,将与该手术原始词文本相似度相近而标准词不同的前5个手术操作原始词与该样本的标准词组成负例。正负样本比例为1∶5,训练集采样示例如表4所示。
表4 二元分类模型采样示例
Task1手术原始词归一化的整个流程如图1所示,可简要概括为:首先依据训练集和手术操作编码表建立标准词-手术操作原始词的映射表,依据映射表进行正负采样用于训练BERT二分类模型;预测时,计算验证集或测试集中的手术操作原始词与映射表中手术操作原始词的文本相似度,依据文本相似度排序取前5个映射样本。然后,利用BERT模型判断前5个映射对中待预测的手术操作原始词与前5个映射对的手术操作标准词是否等价。若等价,则对应的标准词作为最终答案返回;不等价,则取排序最靠前的手术操作标准词返回。
图1 Task1手术原始词归一化的流程
其中,文本相似度的计算,采用最长公共子序列算法,也就是两段文本中相同的连续字符串长度占比越大,两文本相似度越高。该算法在Python的difflib库中提供了最佳实现。
训练时,将手术操作原始词和标准词作为句对,和等价标签1或不等价标签0一起输入BERT模型进行训练。预测时,将手术操作原始词和候选标准词作为句对,输入BERT模型,预测各句对的标签:为1等价,为0不等价。同时,BERT模型可输出相应标签的概率值,返回目标标准词前,可计算预测标签为0的概率值与标签为1的概率值的差值,将该差值与设定的BERT模型参与度阈值(α)做比较,差值大于α值时才会依据BERT模型的结果进行处理,否则返回相似度最高的标准词。
α阈值决定了BERT模型在预测过程中的参与度。如α=0时,表明完全信任BERT模型对手术操作原始词和候选标准词的预测结果;α=0.5时,则表明只有当BERT模型预测为0的概率与预测为1的概率之差高于0.5时,才继续判断下一个候选句对的标签值,也就是说BERT模型在整个标准词的预测中,参与度仅有一半;α=1,则表明完全不信任BERT模型的预测结果,仅使用文本相似度的排序结果返回。标准词预测过程的算法描述,如表5所示。
表5 标准词预测过程算法表述
续表
3 结果
从Task1的训练集中采样了手术操作原始词和标准词的句对正负例样本共计69 300余条,采样的正负例样本如表4所示。BERT模型的超参数:最大序列长度(max_sequence_len)为128,批训练子集的大小(train_batch_size)为128,训练周期(epoches)为3。BERT二元分类模型在采样的验证集上准确率达到了98.01%。
预测时,按照BERT模型对手术原始词表述与标准词的候选词对筛选的贡献程度,分为BERT模型完全参与筛选(α=0),BERT模型部分参与筛选(α=0.5)和BERT模型完全不参与筛选(α=1,也就是直接取与待预测手术原始词相似度最高的手术原始词对应的标准词返回)。三组模型在Task1验证集上的准确率如表6所示,可知BERT模型的部分参与筛选可得到最高的准确率。
表6 三种筛选策略在验证集上的准确率
按照BERT模型部分参与表述对筛选的预测策略,最终在Task1测试集上的准确率为88.51%。
4 消融实验及对比实验
相关研究[13]表明,文本检索方法也可以用于获取给定手术原始词的候选标准词。根据文献调研,本文选择Whoosh[19]作为文本检索工具,用于替代最大序列长度算法,实验对比如表7所示。Whoosh-based的方法均没有基于文本相似度的方法准确率高。
表7 不同方案的归一化准确率(α=0.5)
同时,本文也在相同实验环境下实现了基于其他深度学习模型的二分类方法,如LSTM和Text-CNN。实验表明,LSTM和TextCNN的表现不如BERT模型。
此外,对本文建构的文本相似度+BERT模型方法进行消融实验。实验表明,“最大序列长度算法+BERT”方法的验证集准确率为88.35%,相比仅使用“最大序列长度算法”提升了10.28%。
CHIP2020发布了新型的临床术语归一化任务,相较于CHIP2019的手术术语归一化任务,CHIP2020包含了更多的临床术语类型,训练集有8 000个临床术语+标准词的词对。验证集及测试集还未公开。本文为验证方法的可扩展性,将CHIP2020的训练集以8∶2的比例切分为新的训练集与测试集后,本文所述方法的效率表现如表8所示。实验表明,基于文本相似度的方法[也就是,BERT模型完全不参与(α=1)]的准确率为25.69%,这说明该数据集中临床原始词与标准词之间的文本相似度较低,然而本文提出的“文本相似度+BERT模型”方法准确率为31.88%,依然可以提升6.19%。
表8 三种筛选策略在CHIP2020中的准确率
5 讨论
深度学习模型在手术原始词候选词对筛选中的参与度阈值的设置,需要进一步探讨。我们尝试将BERT模型的参与度阈值设为α=0.8,验证集上的准确率为86.80%。可见参与度阈值的设置对模型准确率有直接影响。
手术原始词的表述检测方案需要进一步研究。本文选择文本相似度作为手术原始词表述检测,导致预测结果中出现文本重心偏移的情况出现,如验证集中手术原始词“腹膜外子宫下段剖宫产术”的正确标准词为“腹膜外剖宫产”,而模型预测结果为“低位子宫下段剖宫产”。添加规则的表述检测方法也许能够避免类似情况的出现,进而提高模型预测准确率。
从预测结果文件选取代表性的正确与错误样本各3例,进行模型预测结果分析如表9所示。观察正确样例可知:①手术原始词与标准词的文本相似度越高,越容易被正确预测,如原始词“右尺神经松解术”和标准词“尺神经松解术”;②待测手术原始词与训练集中的手术原始词相似度越高,越容易被正确预测,如待测手术原始词“右肺上叶后段切除术”,虽然该词与标准词“肺节段切除术”相似度不高,但是与该标准词的映射原始词“右肺下叶背段切除术”有较高的相似度;③针对手术原始词的拆分处理可以较好预测n:n的数据类型,如手术原始词“T12椎体活检+椎体成形术”经“+”拆分后,可以被模型正确预测为标准词“椎骨活组织检查##经皮椎骨成形术”。观察错误样例可知:①模型对于原始词:标准词关系为1:n或m:n的样本预测不全;②模型没有考虑原始词经拆分后发生上下丢失的情况,如原始词“腹腔镜右侧多囊肾去顶减压+被膜剥脱术”被拆分为“腹腔镜右侧多囊肾去顶减压”和“被膜剥脱术”,导致“被膜剥脱术”上下文缺失,从而被错误预测为“筋膜剥脱术”。
表9 正确与错误样例
综上所述,未来可对本文所提架构模型进行如下三个方面的改进:①有针对性地采用表述候选方法,本文所提文本相似度方法在CHIP2019的手术术语归一化数据集中效果优异,然而用于CHIP2020的临床术语归一化任务时表现不佳,这表明候选表述的提取方法需要因地制宜;②应对原始词与标准词关系为1:n或m:n时,可以考虑利用深度学习模型先进行原始词与标准词的关系预测;③原始词的候选表述召回率越高越好,召回率越高说明标准词出现在候选表述中的概率越大,深度学习模型可以发现标准词的概率也越高。
6 结论
本文首先探究了CHIP临床术语归一化任务(Task1)训练集及验证集的样本特点并进行了数据清洗工作;其次,将Task1视作共指消解任务,从文本共指消解角度讨论了基于学习模型的共指消解的关键步骤;最后,依据共指消解的三个关键步骤,结合Task1样本数据的特点,构建了基于相似度的手术操作原始词排序+BERT二元分类的预测模型,该模型在Task1验证集上获得了最高88.35%的准确率,在测试集上获得了88.51%的准确率。
此外,本文讨论了可以改进模型准确率的三个思考方向,即二元分类模型的选择、学习模型参与度阈值的设置以及手术原始词表述检测方案的制定。这三个方向对模型准确率的提升是否有帮助,值得后续进一步研究。