引用本文: 郝洁, 彭庆龙, 丛山, 李姣, 孙海霞. 基于提示学习的医学量表问题文本多分类研究. 中国循证医学杂志, 2024, 24(1): 76-82. doi: 10.7507/1672-2531.202307139 复制
量表是服务于科学测量的一种工具[1],其突出功能是将抽象的概念转化为可观察的具体定量问题,便于评估对象理解与使用。在医学领域,量表常被用于疾病筛查、诊断、康复评估等科学研究与医疗服务实践活动中[2,3],如用于肺癌症状筛查的量表(M.D. Anderson symptom inventory-lung cancer,MDASI-LC)[4]。量表开发过程复杂[1],寻求和复用现存量表往往是用户的优先选择。在此过程中,用户对量表的检索需求不仅仅是整个量表文档,还包括量表中所包含的测量概念,以及测量概念对应的测量问题条目等。目前医学量表数据库,如MDCalc[5],多以整个量表文档为最小检索单位,无法满足对测量问题条目的语义检索。测量概念及其对应的问题条目检索主要由人工逐篇浏览,极大耗费了用户的时间和精力。对不同测量对象和目标,量表的结构也有所不同,其中问题条目是量表的最小构成元素,若干问题条目组成一个领域,对应更高层次的抽象概念。因此,基于功能范畴和领域概念对量表中问题条目进行精准分类,有助于解决这一问题。
然而,目前尚未见到有关医学量表问题条目分类研究的公开报道。现有医学文本分类研究主要集中在粗粒度的科技论文、电子病历,细粒度的疾病、药物、基因等分类任务上[6-8]。此外,医学量表问题条目文本字符往往较短,属于短文本分类,而目前广泛应用于短文本分类研究的深度学习模型[9,10],往往需要海量的数据驱动,才能达到预期的分类效果。但有关医学量表的标注语料库还未引起重视,现有医学文本分类研究语料多以医学科技论文、电子病历、药物说明书等为基础构建而成[6]。基于此现状,探索医学量表问题条目精确分类,需人工标注医学量表问题条目,构建语料库。
考虑到人工成本问题,初步形成小规模语料集,在小样本文本分类的框架下,结合简单通用的文本数据增强(easy data augmentation,EDA)技术[11]和基于预训练语言模型的提示学习(prompt learning)方法[12],可以在相对较低资源下实现医学量表问题条目的精确分类。鉴于此,本文研究首先构建首个小规模医学量表问题条目语料集,标注问题条目的功能范畴和领域概念;然后引入EDA数据增强方法,低成本满足模型对于语料样本量的标注需求;最后应用提示学习的方法,添加特定提示模板,在较少输入样本下保持较优的模型性能,实现医学量表问题条目的精确分类。本文研究进一步拓展了医学文本分类研究范围,为医学量表问题文本分类研究提供了第一手的研究资料;同时,本文所展示的研究思路也可为后续医学量表分类研究起到一定的借鉴作用。
1 相关研究基础
文本分类研究是指实现计算机对载有信息的文本按照预设的分类体系自动映射的研究。根据预设的类别不同,文本分类可以分为二分类和多分类,多分类任务可以通过多个二分类模型完成。根据自然语言处理技术的发展,文本分类研究经历了4种范式[12]。第一范式是指未引入神经网络之前的传统机器学习方法,需要繁杂的人工特征工程,极易导致文本特征数据维度爆炸、模型泛化能力差等问题。引入神经网络标志着文本分类研究进入第二范式。当前文本多分类研究的主流框架是以神经网络为代表的深度学习方法,即第二范式,能够自动学习文本与分类任务相关联的特征,无需人工特征工程的干预,分类效果普遍优于传统的机器学习方法[13]。Facebook基于浅层神经网络开发FastText[14],能够自动计算高维度词向量,处理速度快。Yoon Kim于2014年首次实现了应用卷积神经网络(convolutional neural network,CNN)进行句子分类的TextCNN模型[15]。Liu等[16]基于循环神经网络(recurrent neural network,RNN)的3种不同共享信息机制提出了多任务学习下的文本分类TextRNN模型。对于短文本多分类,结构相对简单的FastText和TextCNN通常作为基线模型。
第二范式虽然简化了文本表示工作,但需要大量的标注语料训练神经网络模型。为了解决标注成本高的问题,通过大规模无标注语料学习通用语言表示的预训练语言模型被提出,标志着第三范式的开始。第三范式即针对特定的下游任务,只需用相对较少的标注语料微调已有的预训练语言模型,不需要大规模的特定语料标注。其中具有代表性的预训练语言模型是2018年谷歌提出的BERT(bidirectional encoder representation from transformers)模型。BERT模型经超大规模语料训练得到,本身已具有较优的文本表示能力,兼顾了上下文、同义词、一词多义等情况[17],极大提升了短文本语义方面的理解。对于医学短文本分类任务,可通过微调现有BERT模型,解决因隐私安全等因素导致的语料相对较少问题[18],并提高分类精度[10,19,20]。
随着第三范式的发展,预训练语言模型的参数规模在急剧增加,导致微调阶段所需的标注语料更多。对于少样本学习,使用第三范式容易出现模型训练过拟合或不稳定等问题。提示学习是最近兴起的第四范式,即预训练、提示再预测。相比于第三范式需根据下游任务微调预训练语言模型,提示学习能够结合模型自身在预训练阶段学习到的先验知识和针对下游任务的模板提示进行学习,充分挖掘模型本身能力,减少训练所需的下游数据,极大提升少样本学习的效率[12]。HealthPrompt在没有任何训练数据的前提下,通过添加提示模板,依然获得了对电子病历文本的较优分类效果[21]。
对于少样本学习,除了在建模方法上采用前沿范式,还可以在文本预处理阶段使用文本数据增强技术,通过利用有限的标注语料,扩增语料训练模型,有效解决因数据稀缺导致的训练模型过拟合现象,提高模型泛化能力[22]。文本数据增强技术一般分为有监督、半监督、无监督方法。针对语料规模较小,普遍应用有监督的数据增强方法,一种是回译,另一种是EDA。回译通过将原有语料翻译为其他语言再翻译回原语言的方法,增加语料[23]。但由于语言本身逻辑顺序等差异,通过回译产生的新语料与原语料差别较大,一般用于机器翻译任务。EDA即基于原有的标注语料,通过同义词替换、随机删除、随机插入、随机交换4种方式产生和原有语料类似的新语料,能够在较少程度改变文本的原义的同时,实现对原语料集的快速扩充[11,24]。有研究表明,原始语料越少,EDA的提升效果越显著[11]。
2 研究方法
2.1 研究流程
本研究流程如图1所示。针对目前有关医学量表的研究语料缺乏现状,首先构建一个人工标注的医学量表问题条目语料集。其中,根据收集到的量表设计问题条目分类体系,进行人工标注,实现对问题条目的语料集标注。然后,在数据预处理阶段,对构建的原始语料集应用EDA技术,快速实现对训练所需语料的扩充。最后依据提示学习方法框架,构造针对量表问题文本分类任务的提示模板,将原始语料转换成模板格式输入预训练掩模语言模型(pre-trained masked language model,Pre-trained MLM)如BERT,通过提示模板让模型缩小预测搜索空间进行完形填空,再将填空的词语映射到分类标签,完成问题条目的文本多分类任务。

2.2 数据集构建
2.2.1 肺癌临床评估量表问题条目采集
以肺癌疾病为例,收集用于肺癌筛查、诊断和康复类临床评估量表21份,包括MDASI-LC、肺癌治疗功能评估量表(functional assessment of cancer therapy-lung,FACT-L)等。临床量表在不同应用场景下会被改编成不同版本,如问题条目数量视角下的完整版和简版。研究剔除因版本所致的重复量表后,最终获得17份临床评估量表。进一步抽取量表题目和量表中包含的文本类问题项目,形成原始语料。
2.2.2 分类标签设计:“功能-领域”
功能,代表医学量表的测量目标;领域,代表医学量表中包括的测量概念。对医学量表的每个问题条目进行“功能-领域”组合标签分类标注,有助于同时从测量目标和测量概念发现和复用现有问题条目。
通常情况下,量表的名称就指明了测量目标,如MDASI-LC的测量目标是对症状痛苦的筛查,其量表全称中有“symptom”这一关键词。领域通常表现为量表中的测量模块;一个测量模块往往包括多个问题条目。如FACT-L的测量领域包括躯体状况、社会/家庭状况、情感状况等6个高层级概念,共设置38个问题条目。通过对收集的17份量表的测量目标及测量模块分析,提炼功能维度标签4个:生活质量评估(quality of life)、症状痛苦评定(symptom)、患病风险评估(risk assessment)、预后预测(prognostic index);领域维度标签5个:躯体状况(physical well-being)、心理状况(psychological well-being)、社会状况(social well-being)、健康风险因素(health risks)、临床检查指标(clinical examination)。
2.2.3 问题条目标注
本研究通过以下步骤对17份量表中的问题条目进行基于“功能-领域”的分类标注:首先,剔除重复的问题条目;其次,由5名标注人员(其中3人具有医学信息学背景、2人具有临床医学背景)背靠背标注全部问题条目,每一个问题条目需要分别标注出功能和领域;然后,对标注结果进行一致性分析,3人及以上标注一致即认为该问题条目标注一致;最后,对不一致的标注结果,5人逐条讨论,直至达成一致。
2.3 数据增强
本研究采用普遍使用的EDA数据增强工具包TextAttack中EmbeddingAugmenter方法[24],实现对原始数据集中划分为训练集的语料各类别一倍的扩充。EmbeddingAugmenter方法是对过滤掉停用词后的单词进行增强,通过确保替换词和原单词的余弦相似度至少为0.8作为约束条件,在词向量空间中用邻近词替换单词的方式来增强文本。
2.4 提示学习方法
本研究应用提示学习方法框架[25],分3个步骤进行训练与预测:① 造提示模板,添加模板输入;② 造答案空间,搜索答案、预测概率;③ 预测答案映射到组合标签。提示学习训练流程见图2。

首先,构建多分类任务的提示模板,将模板添加到原始问题条目输入。本研究定义模板为:The category of <问题条目输入> is <Mask>,其中<Mask>为模型预测的输出,即组合标签。例如原始问题条目为“I feel uncomfortable when I see other patients getting treatments”;添加定义的提示模板后,模型的输入转换为
“The category of <I feel uncomfortable when I see other patients getting treatments> is <Mask>”。
然后,依据组合标签词构建答案空间中对应的答案标签。将输入MLM中,模型在答案空间Z中通过计算P(<Mask>
)搜索答案标签[25]。如果答案标签A的概率大于答案标签B的概率,则模型输出答案标签A作为<Mask>的值,即预测答案
。
最后,标签映射器(verbalizer)将上一步模型搜索得到的答案与原始问题条目的组合标签分类进行映射,得到预测的组合标签。
2.5 分类任务
本研究属于多分类任务,因此选用激活函数LogSoftmax和对应的损失函数交叉熵(CrossEntropy)。与传统BERT微调不同的是,基于提示学习的分类模型并不是将获取到的句向量输入至LogSoftmax层,而是将搜索答案空间得到的预测的<Mask>词向量,输入到verbalizer中进行LogSoftmax[25],其公式为,其中
。
得到词向量的概率分布映射为标签的概率分布,最后对预测的标签与真实的标签计算损失,其计算公式为,其中
表示一个样本的非LogSoftmax预测输出,
表示该样本的标签,
代表标签数量。
2.6 实验设置
首先,将原始问题条目,按照普遍使用的8∶2比例[26]随机分层划分为训练集和测试集。其次,对训练集中的问题条目进行数据增强,用于模型训练。
提示学习方法采用Pytorch深度学习框架,在NVIDIA GeForce 3090ti显卡上进行计算,具体环境配置如表1。在同一随机划分的训练集上,通过多次对参数进行经验微调,选取效果最好的一组参数作为正式使用的参数,最终参数设定见表2。


研究选取了无预训练模型加载的传统短文本分类模型FastText、TextCNN、TextRNN及加载预训练模型bert-base-uncased的BERT、融合对抗学习的GAN-BERT[27]模型,与引入提示学习的方法进行对比实验。其中TextRNN、FastText、TextCNN的参数设定为batch_size=64,num_epochs=50,learning_rate=0.008,decay_rate=0.95。为了保证实验结果的鲁棒性,每个模型重复训练5次,模型性能取均值。
2.7 评价指标
研究选择常用于多分类任务的准确率(accuracy,ACC)和Macro-F1分数作为评价指标。准确率即所有预测正确的正类和负类占总体的比重,其具体计算公式为,其中TP代表预测正确的正类样本数量,TN代表预测正确的负类样本数量,P代表正类样本数量,N代表负类样本数量。
Macro-F1分数是对每一分类进行F1分数(F1-score)的计算再求均值,由于其对每一分类给予相同的权重评估,不易受数据不平衡的影响,其具体计算公式为,其中F1-score根据精确率(precision)和召回率(recall)计算,即
,
,
,FN代表预测错误的负类样本数量,FP代表预测错误的正类样本数量。
3 结果
3.1 数据集统计
研究供纳入347个问题条目进行标注,人工标注一致性为96.3%。最终形成的问题条目语料共涉及9种组合分类标签。问题条目及分类标注结果示例见表3。

对原始训练集(275条)问题条目进行数据增强后,获得550条问题条目。表4列出了应用数据增强前后的训练语料分类标签频数对比。从表4中的原始频数分别可以看出,量表问题条目的分类是极不均衡的,最大的分类标签组合是“quality of life_physical well-being”和“quality of life_social well-being”,频数均为80,即均包含80个问题条目,而“symptom_psychological well-being”标签组合频数仅包含4个问题条目。

3.2 评价结果
表5列出了提示学习方法和5种基线模型在医学量表问题条目数据分类任务中的平均准确率和平均Macro-F1分数。评价结果显示,提示学习方法的分类效果显著优于所有基线模型,达到了准确率0.9083±0.0222(均值±标准差)和Macro-F1分数0.8016±0.0565。基线模型中,没有加载预训练语言模型的TextRNN、FastText、TextCNN分类效果较差,加载了预训练语言模型的BERT分类效果有了显著提升,引入了对抗学习的GAN-BERT略优于微调的BERT模型,其准确率和Macro-F1分数分别达到了0.8453±0.0102和0.7632±0.0121。提示学习方法的分类准确率比最优的基线模型GAN-BERT提高了约6%,Macro-F1分数提高了约4%,验证了引入提示学习,确实可以大幅提升小样本、短文本语料的分类效果。

对于数据增强后的数据集,提示学习方法和5种基线模型的分类效果均比在原始数据集上训练提升了约2%。通过数据增强后的训练语料,提示学习方法最终可达到0.9311±0.0125的准确率和Macro-F1分数为0.9012±0.0158。由此可见,采用简单数据增强的方法扩充语料,可以在一定程度上提升模型的预测准确性。
在对提示学习方法中错误预测的问题条目进一步分析中,我们发现其中大部分错误预测的问题条目来自于分类标注过程中存在争议的问题条目。例如,“I have difficulty with transportation to and from my medical appointments and/or other places”,模型预测的领域层标签属于社会状况,实际标注为躯体状况。然而,该条目的领域层标签标注是经由讨论确定。在第一轮的独立标注中,其中2人预标注为社会状况,其他3人分别预标注为躯体状况、心理状况、健康风险因素。
4 讨论
分类是实现文本数据资源知识组织、检索、发现与问答等智能化知识管理与知识服务的基础任务。为促进医学量表资源的智能化细粒度知识管理与服务,本文针对医学量表中的问题条目文本进行了自动多分类研究。
基于医学量表问题条目分类研究语料缺乏现状,本文首先构建了一个支持医学量表问题条目文本多分类研究的小样本标注数据集和标签体系。小样本标注数据集可直接或经扩展后用于后续医学量表问题条目分类研究。与一般医学文本分类标签命名只单一考虑语义(如“症状”类标签)或语用(如“生活质量评估”类标签)相比,本研究中的“功能-领域”这一组合分类标签命名同时考虑了医学量表问题条目文本的语用和语义特征。“功能”部分侧重于体现语用特征,回答为什么要测量;“领域”部分侧重于体现语义特征,回答为了实现这样的目标需要测量什么。因此,“功能-领域”组合分类标签有助于从宏观的测量目标和微观的测量对象维度揭示、组织和发现现存医学量表问题条目。此外,研究中的“功能”和“领域”两个维度的分类标签系独立构建而成,能够方便后续研究分别从“功能”和“领域”进行标签命名体系扩展或删减;即便是基于本研究已构建的标签,还可组配出更多的分类标签,用于标注更多的语料。
本文提出了一种基于提示学习的量表问题条目文本多分类方法。该方法通过简单增加自定义提示模板,加强BERT模型嵌入表示与组合标签的关联性,将多分类任务转化为较为容易的完形填空任务,从而较好地完成了少样本语料情况下的医学量表问题条目多分类任务。在自建的肺癌临床评估量表问题条目语料上,其分类效果显著优于所有基线模型,再结合EDA技术,可以进一步提高分类精度。研究也发现,部分医学量表问题在语言表述上偏向于大众化、口语化,在使用情境上可用于多个测量目标与概念对象,一定程度上影响着该方法的分类效果。
综上所述,未来医学量表问题条目分类研究工作可围绕如下方面展开:① 构建外部数据集,进一步验证提示学习方法对于医学量表问题条目的分类有效性;② 从预训练模型选择出发,研究不同预训练模型对不同功能量表问题文本多分类任务的适用性;③ 开展基于小样本的医学量表问题文本多标签分类研究;④ 探究应用融合外部医学知识的掩模机制[28,29]来优化量表问题文本分类效果。
量表是服务于科学测量的一种工具[1],其突出功能是将抽象的概念转化为可观察的具体定量问题,便于评估对象理解与使用。在医学领域,量表常被用于疾病筛查、诊断、康复评估等科学研究与医疗服务实践活动中[2,3],如用于肺癌症状筛查的量表(M.D. Anderson symptom inventory-lung cancer,MDASI-LC)[4]。量表开发过程复杂[1],寻求和复用现存量表往往是用户的优先选择。在此过程中,用户对量表的检索需求不仅仅是整个量表文档,还包括量表中所包含的测量概念,以及测量概念对应的测量问题条目等。目前医学量表数据库,如MDCalc[5],多以整个量表文档为最小检索单位,无法满足对测量问题条目的语义检索。测量概念及其对应的问题条目检索主要由人工逐篇浏览,极大耗费了用户的时间和精力。对不同测量对象和目标,量表的结构也有所不同,其中问题条目是量表的最小构成元素,若干问题条目组成一个领域,对应更高层次的抽象概念。因此,基于功能范畴和领域概念对量表中问题条目进行精准分类,有助于解决这一问题。
然而,目前尚未见到有关医学量表问题条目分类研究的公开报道。现有医学文本分类研究主要集中在粗粒度的科技论文、电子病历,细粒度的疾病、药物、基因等分类任务上[6-8]。此外,医学量表问题条目文本字符往往较短,属于短文本分类,而目前广泛应用于短文本分类研究的深度学习模型[9,10],往往需要海量的数据驱动,才能达到预期的分类效果。但有关医学量表的标注语料库还未引起重视,现有医学文本分类研究语料多以医学科技论文、电子病历、药物说明书等为基础构建而成[6]。基于此现状,探索医学量表问题条目精确分类,需人工标注医学量表问题条目,构建语料库。
考虑到人工成本问题,初步形成小规模语料集,在小样本文本分类的框架下,结合简单通用的文本数据增强(easy data augmentation,EDA)技术[11]和基于预训练语言模型的提示学习(prompt learning)方法[12],可以在相对较低资源下实现医学量表问题条目的精确分类。鉴于此,本文研究首先构建首个小规模医学量表问题条目语料集,标注问题条目的功能范畴和领域概念;然后引入EDA数据增强方法,低成本满足模型对于语料样本量的标注需求;最后应用提示学习的方法,添加特定提示模板,在较少输入样本下保持较优的模型性能,实现医学量表问题条目的精确分类。本文研究进一步拓展了医学文本分类研究范围,为医学量表问题文本分类研究提供了第一手的研究资料;同时,本文所展示的研究思路也可为后续医学量表分类研究起到一定的借鉴作用。
1 相关研究基础
文本分类研究是指实现计算机对载有信息的文本按照预设的分类体系自动映射的研究。根据预设的类别不同,文本分类可以分为二分类和多分类,多分类任务可以通过多个二分类模型完成。根据自然语言处理技术的发展,文本分类研究经历了4种范式[12]。第一范式是指未引入神经网络之前的传统机器学习方法,需要繁杂的人工特征工程,极易导致文本特征数据维度爆炸、模型泛化能力差等问题。引入神经网络标志着文本分类研究进入第二范式。当前文本多分类研究的主流框架是以神经网络为代表的深度学习方法,即第二范式,能够自动学习文本与分类任务相关联的特征,无需人工特征工程的干预,分类效果普遍优于传统的机器学习方法[13]。Facebook基于浅层神经网络开发FastText[14],能够自动计算高维度词向量,处理速度快。Yoon Kim于2014年首次实现了应用卷积神经网络(convolutional neural network,CNN)进行句子分类的TextCNN模型[15]。Liu等[16]基于循环神经网络(recurrent neural network,RNN)的3种不同共享信息机制提出了多任务学习下的文本分类TextRNN模型。对于短文本多分类,结构相对简单的FastText和TextCNN通常作为基线模型。
第二范式虽然简化了文本表示工作,但需要大量的标注语料训练神经网络模型。为了解决标注成本高的问题,通过大规模无标注语料学习通用语言表示的预训练语言模型被提出,标志着第三范式的开始。第三范式即针对特定的下游任务,只需用相对较少的标注语料微调已有的预训练语言模型,不需要大规模的特定语料标注。其中具有代表性的预训练语言模型是2018年谷歌提出的BERT(bidirectional encoder representation from transformers)模型。BERT模型经超大规模语料训练得到,本身已具有较优的文本表示能力,兼顾了上下文、同义词、一词多义等情况[17],极大提升了短文本语义方面的理解。对于医学短文本分类任务,可通过微调现有BERT模型,解决因隐私安全等因素导致的语料相对较少问题[18],并提高分类精度[10,19,20]。
随着第三范式的发展,预训练语言模型的参数规模在急剧增加,导致微调阶段所需的标注语料更多。对于少样本学习,使用第三范式容易出现模型训练过拟合或不稳定等问题。提示学习是最近兴起的第四范式,即预训练、提示再预测。相比于第三范式需根据下游任务微调预训练语言模型,提示学习能够结合模型自身在预训练阶段学习到的先验知识和针对下游任务的模板提示进行学习,充分挖掘模型本身能力,减少训练所需的下游数据,极大提升少样本学习的效率[12]。HealthPrompt在没有任何训练数据的前提下,通过添加提示模板,依然获得了对电子病历文本的较优分类效果[21]。
对于少样本学习,除了在建模方法上采用前沿范式,还可以在文本预处理阶段使用文本数据增强技术,通过利用有限的标注语料,扩增语料训练模型,有效解决因数据稀缺导致的训练模型过拟合现象,提高模型泛化能力[22]。文本数据增强技术一般分为有监督、半监督、无监督方法。针对语料规模较小,普遍应用有监督的数据增强方法,一种是回译,另一种是EDA。回译通过将原有语料翻译为其他语言再翻译回原语言的方法,增加语料[23]。但由于语言本身逻辑顺序等差异,通过回译产生的新语料与原语料差别较大,一般用于机器翻译任务。EDA即基于原有的标注语料,通过同义词替换、随机删除、随机插入、随机交换4种方式产生和原有语料类似的新语料,能够在较少程度改变文本的原义的同时,实现对原语料集的快速扩充[11,24]。有研究表明,原始语料越少,EDA的提升效果越显著[11]。
2 研究方法
2.1 研究流程
本研究流程如图1所示。针对目前有关医学量表的研究语料缺乏现状,首先构建一个人工标注的医学量表问题条目语料集。其中,根据收集到的量表设计问题条目分类体系,进行人工标注,实现对问题条目的语料集标注。然后,在数据预处理阶段,对构建的原始语料集应用EDA技术,快速实现对训练所需语料的扩充。最后依据提示学习方法框架,构造针对量表问题文本分类任务的提示模板,将原始语料转换成模板格式输入预训练掩模语言模型(pre-trained masked language model,Pre-trained MLM)如BERT,通过提示模板让模型缩小预测搜索空间进行完形填空,再将填空的词语映射到分类标签,完成问题条目的文本多分类任务。

2.2 数据集构建
2.2.1 肺癌临床评估量表问题条目采集
以肺癌疾病为例,收集用于肺癌筛查、诊断和康复类临床评估量表21份,包括MDASI-LC、肺癌治疗功能评估量表(functional assessment of cancer therapy-lung,FACT-L)等。临床量表在不同应用场景下会被改编成不同版本,如问题条目数量视角下的完整版和简版。研究剔除因版本所致的重复量表后,最终获得17份临床评估量表。进一步抽取量表题目和量表中包含的文本类问题项目,形成原始语料。
2.2.2 分类标签设计:“功能-领域”
功能,代表医学量表的测量目标;领域,代表医学量表中包括的测量概念。对医学量表的每个问题条目进行“功能-领域”组合标签分类标注,有助于同时从测量目标和测量概念发现和复用现有问题条目。
通常情况下,量表的名称就指明了测量目标,如MDASI-LC的测量目标是对症状痛苦的筛查,其量表全称中有“symptom”这一关键词。领域通常表现为量表中的测量模块;一个测量模块往往包括多个问题条目。如FACT-L的测量领域包括躯体状况、社会/家庭状况、情感状况等6个高层级概念,共设置38个问题条目。通过对收集的17份量表的测量目标及测量模块分析,提炼功能维度标签4个:生活质量评估(quality of life)、症状痛苦评定(symptom)、患病风险评估(risk assessment)、预后预测(prognostic index);领域维度标签5个:躯体状况(physical well-being)、心理状况(psychological well-being)、社会状况(social well-being)、健康风险因素(health risks)、临床检查指标(clinical examination)。
2.2.3 问题条目标注
本研究通过以下步骤对17份量表中的问题条目进行基于“功能-领域”的分类标注:首先,剔除重复的问题条目;其次,由5名标注人员(其中3人具有医学信息学背景、2人具有临床医学背景)背靠背标注全部问题条目,每一个问题条目需要分别标注出功能和领域;然后,对标注结果进行一致性分析,3人及以上标注一致即认为该问题条目标注一致;最后,对不一致的标注结果,5人逐条讨论,直至达成一致。
2.3 数据增强
本研究采用普遍使用的EDA数据增强工具包TextAttack中EmbeddingAugmenter方法[24],实现对原始数据集中划分为训练集的语料各类别一倍的扩充。EmbeddingAugmenter方法是对过滤掉停用词后的单词进行增强,通过确保替换词和原单词的余弦相似度至少为0.8作为约束条件,在词向量空间中用邻近词替换单词的方式来增强文本。
2.4 提示学习方法
本研究应用提示学习方法框架[25],分3个步骤进行训练与预测:① 造提示模板,添加模板输入;② 造答案空间,搜索答案、预测概率;③ 预测答案映射到组合标签。提示学习训练流程见图2。

首先,构建多分类任务的提示模板,将模板添加到原始问题条目输入。本研究定义模板为:The category of <问题条目输入> is <Mask>,其中<Mask>为模型预测的输出,即组合标签。例如原始问题条目为“I feel uncomfortable when I see other patients getting treatments”;添加定义的提示模板后,模型的输入转换为
“The category of <I feel uncomfortable when I see other patients getting treatments> is <Mask>”。
然后,依据组合标签词构建答案空间中对应的答案标签。将输入MLM中,模型在答案空间Z中通过计算P(<Mask>
)搜索答案标签[25]。如果答案标签A的概率大于答案标签B的概率,则模型输出答案标签A作为<Mask>的值,即预测答案
。
最后,标签映射器(verbalizer)将上一步模型搜索得到的答案与原始问题条目的组合标签分类进行映射,得到预测的组合标签。
2.5 分类任务
本研究属于多分类任务,因此选用激活函数LogSoftmax和对应的损失函数交叉熵(CrossEntropy)。与传统BERT微调不同的是,基于提示学习的分类模型并不是将获取到的句向量输入至LogSoftmax层,而是将搜索答案空间得到的预测的<Mask>词向量,输入到verbalizer中进行LogSoftmax[25],其公式为,其中
。
得到词向量的概率分布映射为标签的概率分布,最后对预测的标签与真实的标签计算损失,其计算公式为,其中
表示一个样本的非LogSoftmax预测输出,
表示该样本的标签,
代表标签数量。
2.6 实验设置
首先,将原始问题条目,按照普遍使用的8∶2比例[26]随机分层划分为训练集和测试集。其次,对训练集中的问题条目进行数据增强,用于模型训练。
提示学习方法采用Pytorch深度学习框架,在NVIDIA GeForce 3090ti显卡上进行计算,具体环境配置如表1。在同一随机划分的训练集上,通过多次对参数进行经验微调,选取效果最好的一组参数作为正式使用的参数,最终参数设定见表2。


研究选取了无预训练模型加载的传统短文本分类模型FastText、TextCNN、TextRNN及加载预训练模型bert-base-uncased的BERT、融合对抗学习的GAN-BERT[27]模型,与引入提示学习的方法进行对比实验。其中TextRNN、FastText、TextCNN的参数设定为batch_size=64,num_epochs=50,learning_rate=0.008,decay_rate=0.95。为了保证实验结果的鲁棒性,每个模型重复训练5次,模型性能取均值。
2.7 评价指标
研究选择常用于多分类任务的准确率(accuracy,ACC)和Macro-F1分数作为评价指标。准确率即所有预测正确的正类和负类占总体的比重,其具体计算公式为,其中TP代表预测正确的正类样本数量,TN代表预测正确的负类样本数量,P代表正类样本数量,N代表负类样本数量。
Macro-F1分数是对每一分类进行F1分数(F1-score)的计算再求均值,由于其对每一分类给予相同的权重评估,不易受数据不平衡的影响,其具体计算公式为,其中F1-score根据精确率(precision)和召回率(recall)计算,即
,
,
,FN代表预测错误的负类样本数量,FP代表预测错误的正类样本数量。
3 结果
3.1 数据集统计
研究供纳入347个问题条目进行标注,人工标注一致性为96.3%。最终形成的问题条目语料共涉及9种组合分类标签。问题条目及分类标注结果示例见表3。

对原始训练集(275条)问题条目进行数据增强后,获得550条问题条目。表4列出了应用数据增强前后的训练语料分类标签频数对比。从表4中的原始频数分别可以看出,量表问题条目的分类是极不均衡的,最大的分类标签组合是“quality of life_physical well-being”和“quality of life_social well-being”,频数均为80,即均包含80个问题条目,而“symptom_psychological well-being”标签组合频数仅包含4个问题条目。

3.2 评价结果
表5列出了提示学习方法和5种基线模型在医学量表问题条目数据分类任务中的平均准确率和平均Macro-F1分数。评价结果显示,提示学习方法的分类效果显著优于所有基线模型,达到了准确率0.9083±0.0222(均值±标准差)和Macro-F1分数0.8016±0.0565。基线模型中,没有加载预训练语言模型的TextRNN、FastText、TextCNN分类效果较差,加载了预训练语言模型的BERT分类效果有了显著提升,引入了对抗学习的GAN-BERT略优于微调的BERT模型,其准确率和Macro-F1分数分别达到了0.8453±0.0102和0.7632±0.0121。提示学习方法的分类准确率比最优的基线模型GAN-BERT提高了约6%,Macro-F1分数提高了约4%,验证了引入提示学习,确实可以大幅提升小样本、短文本语料的分类效果。

对于数据增强后的数据集,提示学习方法和5种基线模型的分类效果均比在原始数据集上训练提升了约2%。通过数据增强后的训练语料,提示学习方法最终可达到0.9311±0.0125的准确率和Macro-F1分数为0.9012±0.0158。由此可见,采用简单数据增强的方法扩充语料,可以在一定程度上提升模型的预测准确性。
在对提示学习方法中错误预测的问题条目进一步分析中,我们发现其中大部分错误预测的问题条目来自于分类标注过程中存在争议的问题条目。例如,“I have difficulty with transportation to and from my medical appointments and/or other places”,模型预测的领域层标签属于社会状况,实际标注为躯体状况。然而,该条目的领域层标签标注是经由讨论确定。在第一轮的独立标注中,其中2人预标注为社会状况,其他3人分别预标注为躯体状况、心理状况、健康风险因素。
4 讨论
分类是实现文本数据资源知识组织、检索、发现与问答等智能化知识管理与知识服务的基础任务。为促进医学量表资源的智能化细粒度知识管理与服务,本文针对医学量表中的问题条目文本进行了自动多分类研究。
基于医学量表问题条目分类研究语料缺乏现状,本文首先构建了一个支持医学量表问题条目文本多分类研究的小样本标注数据集和标签体系。小样本标注数据集可直接或经扩展后用于后续医学量表问题条目分类研究。与一般医学文本分类标签命名只单一考虑语义(如“症状”类标签)或语用(如“生活质量评估”类标签)相比,本研究中的“功能-领域”这一组合分类标签命名同时考虑了医学量表问题条目文本的语用和语义特征。“功能”部分侧重于体现语用特征,回答为什么要测量;“领域”部分侧重于体现语义特征,回答为了实现这样的目标需要测量什么。因此,“功能-领域”组合分类标签有助于从宏观的测量目标和微观的测量对象维度揭示、组织和发现现存医学量表问题条目。此外,研究中的“功能”和“领域”两个维度的分类标签系独立构建而成,能够方便后续研究分别从“功能”和“领域”进行标签命名体系扩展或删减;即便是基于本研究已构建的标签,还可组配出更多的分类标签,用于标注更多的语料。
本文提出了一种基于提示学习的量表问题条目文本多分类方法。该方法通过简单增加自定义提示模板,加强BERT模型嵌入表示与组合标签的关联性,将多分类任务转化为较为容易的完形填空任务,从而较好地完成了少样本语料情况下的医学量表问题条目多分类任务。在自建的肺癌临床评估量表问题条目语料上,其分类效果显著优于所有基线模型,再结合EDA技术,可以进一步提高分类精度。研究也发现,部分医学量表问题在语言表述上偏向于大众化、口语化,在使用情境上可用于多个测量目标与概念对象,一定程度上影响着该方法的分类效果。
综上所述,未来医学量表问题条目分类研究工作可围绕如下方面展开:① 构建外部数据集,进一步验证提示学习方法对于医学量表问题条目的分类有效性;② 从预训练模型选择出发,研究不同预训练模型对不同功能量表问题文本多分类任务的适用性;③ 开展基于小样本的医学量表问题文本多标签分类研究;④ 探究应用融合外部医学知识的掩模机制[28,29]来优化量表问题文本分类效果。