基于Bert 的中医方剂文本命名实体识别
2023-03-24徐丽娜钟昕妤陈月月帅亚琦
徐丽娜,李 燕,钟昕妤,陈月月,帅亚琦
(甘肃中医药大学信息工程学院,甘肃 兰州 730000)
中医方剂(traditional Chinese medicine prescriptions)是千百年来名医大家临床实践总结得出的成果,是集中医、方法、方剂、中药四大理论为一体的综合体系,不仅可以运用中医的主要手段即辩证论治的理论用于指导临床防治疾病,也是药性理论的具体表现[1]。因中医方剂有其独到的组合方式,蕴含着丰富的信息,但事实上这些复杂的方剂变换中就已包含了大量规律,故提取中医药信息便成为了促进中医药信息化结构化的重要手段方法[2]。中医药文本数据挖掘从最初的在海量历史数据中进行简单查询,发展成为不仅从大量数据中获取知识,还能够揭示事物的内在发展规律,预测事物发展趋势的潜在关联或模型的一项技术[3]。利用数据挖掘可以分析和讨论中医治疗的疗效和基本理论、中医辨证论治的各种方法以及方剂的分类理论,从而了解中医的用药规律[4]。命名实体识别作为文本数据挖掘中重要的一环,其主要任务为在非结构化数据中提取出一组相关性较高的名词。目前文献研究集中于中医医案及电子病历,或是单一研究药品命名实体识别,对中医方剂文本领域关注度较少,尤其在中医方剂领域中基于种类多样且复杂的实体类型,使得此方法在实际应用中进展较慢。而将命名实体识别技术运用在中药学中,从海量的中医方剂文本数据中识别出不同类型的且较为准确的实体信息将是中医药学者未来的重点研究方向。本文主要基于Bert的中医方剂文本命名实体识别的数据获取与标注、实验模型与框架、实验结果进行分析。
1 数据获取与标注
1.1 数据获取 从以PDF 格式存放的《中医方剂大词典》[5]中获取数据,整理分散在各个文献中的所有方剂,包括各种适应证、试验用例及实验研究资料等。通过文本识别技术,将《中医方剂大词典》进行文本识别,并转换成TXT 等命名实体识别模型可输入的格式。
1.2 数据标注 从获取到的数据中进行筛选,基于内容完整的方剂数据,选择在主治中明确提到“心悸”“心痛”“怔忡”等关键词的方剂,删除主治功效中虽含有关键字,但不是主要症状的方剂,最后得到治疗心血管疾病的方剂567 首。并遵照中医药学语言系统(TCMLS)中的标准,选择方剂(prescription)、药物(medicine)、疾病(disease)、功效(efficacy)、炮制方法(processing method)五类实体进行研究,命名实体定义及标注规则见表1。
表1 命名实体定义表
中医方剂数据语料标注采用方法为“BIO+命名实体”的序列标注方法,序列标注是指对序列中的每个字符分配一个特定的标签,当给定一个序列时,对序列中的每个元素进行标注。通常一个序列即为一个句子,而一个元素即为句子中的一个单词。序列标注中最常用的方法是BIO 标注法,B 标记为实体的开始,I 标记为实体的中间部分,O 标记为非实体字符的部分[6]。命名实体标注信息见表2。
表2 命名实体标注信息表
为了保持标注的一致性,由一人单独完成标注任务,根据选取好的语料对句子进行切分,使用BIO标注方法对筛选完成的567 首方剂数据进行人工标注,并将现有数据划分为70%的训练集和30%的测试集,随后即可进行后续研究,中医方剂数据标注示例见表3。
表3 中医方剂标注示例
2 实验模型与框架
近年来随着中医文本数据量的增多,对于从大量数据中挖掘有用知识的技术也在快速发展,命名实体识别任务作为重要的一环,模型的质量将影响整个识别任务的准确性。预训练模型因其可获得高质量的词向量被广泛关注,将预训练模型运用到中医方剂文本识别任务中,从一定程度上可以减轻临床人员录入数据的负担,还能够有效提高识别准确率,为挖掘更多中医方剂的知识奠定基础,更能促进中医药相关事业的发展及传承[7]。
本文模型框架由Bert 模块、BiLSTM 模块和CRF 模块组合构建而成,模型结构见图1。Bert-BiLSTM-CRF 模型命名实体识别的主要步骤如下:首先,将已标注完成的中医方剂文本标记词,如“心血康饮”通过Bert 预训练模型并接受其相对应的词向量,然后将预处理完成的词向量输入到BiLSTM模块中,更好地完成对文本上下文语义信息的捕获,最后使用CRF 模块解码BiLSTM 模块中输出得到的预测标签排序,然后依次检索和排序各类中医方剂文本实体,从而完成整个实体识别步骤。
图1 Bert-BiLSTM-CRF 模型框架图
2.1 Bert 模块 Bert 预处理模型源于谷歌的一个开源项目word2vec[8]。本文的Bert 预训练模型使用12层的Transformer 架构,由编码器与解码器组成,它们使用分层堆叠来实现自然语言处理中的最佳特征提取器,在训练时,只有Transformer 的编码器被使用,且每层编码器由自注意力机制与前馈神经网络构成,通过从输入的中医方剂长文本信息中提取特征,最终实现文本表示。
2.2 BiLSTM 模块 BiLSTM 模块包括前向长短时记忆神经网络(LSTM)和后向长短时记忆神经网络(LSTM)[9],本文所使用的LSTM 结构首先通过遗忘和记忆状态门中的新信息,因为其可以传递对后续计算有价值的信息,舍弃无价值信息,再在每一步输出隐藏层的状态,其中遗忘、记忆和输出由遗忘门、记忆门和通过前一时刻隐藏层的状态和当前输入计算的输出控制[10],基本单元结构见图2。双向长短时记忆神经网络模型(BiLSTM)可克服传统循环神经网络的梯度消失问题,允许网络选择性地保留以前的信息,且双向传输模型在传播过程中利用时间来处理前后文的信息,最终输出结果也为事前向传播和后向传播相结合而成的[11]。在传统中医方剂文本中,很多情况是多个词构成一个实体,即长序列实体,利用双向长短期记忆神经网络,可以快速获取长距离所属特征,有效优化模型对长序列实体的识别性能。
图2 LSTM 基本单元结构图
2.3 CRF 模块 虽然BiLSTM 模块已经学习了输入序列的上下文信息,但其默认序列标签的状态间是相互独立不影响的,这将会出现实体标签不一致问题,所以关键步骤仍然是在获取标签数据集后处理标签之间的关系[12]。本实验解决方案是添加CRF 模块,这是一个条件概率模型,该模型会考虑标签之间的顺序,可以处理标签之间的相互约束,有效解决标签顺序不一致的问题,从而提高中医方剂文本模型实体识别的准确率。
3 实验结果
3.1 实验设计 本实验是在Windows 系统下使用Python3.9 为主要编程语言,在Pytorch1.6.0、Pytorchcrf2.10.0 以及Transformers0.7.2 的实验环境下进行。其中,将实验分为2 个环节,第1 个环节使其他条件不变,分别训练BiLSTM-CRF 和Bert-BiLSTM-CRF这2 种模型,来对比2 种模型的性能;第2 个环节使其他条件不变,在模型训练过程中主要改变模型学习率的大小,并最终主要通过F 值来评判模型训练效果。
3.2 模型性能 采用目前常用来衡量命名实体识别模型性能的3 个评分指标进行分析,分别为准确率(P)、召回率(R)以及F值[13],指标的数学定义如公式(1)~(3)所示;
上述公式中,α 是识别正确的实体数目,A 是实体总数目,B 是被识别出的实体数目。P 是指在所有预测结果中与实际结果一致的实体数目占总实体数目的百分比,R 是指被正确识别的实体数目占总实体数目的百分比,F 值是准确率与召回率的综合值,用来对模型进行总体评估[14]。
在实验过程中,因Bert 模型要求样本长度低于512,最初将句子切分长度设置为256,但参数设置太低可使模型识别率不理想,且分析数据发现文本长度大多集中在200~600,因此将最大句子长度参数更换为512,发现训练结果得到明显提升;对于Bert 层学习率,由于预训练模型的参数在训练过程中已经更新若干次,所以在调整参数过程中为了保持模型的高泛化率,将预训练模型Bert 层的参数设置为(2e-5),并在训练过程中将CRF 层学习率从(2e-3)调整为(1e-3),取得了较好的效果;Batch-Size 选择设置为16,Dropout 设置一般取值0.5,Epoch 设置为30,通过实验结果证明获得了较优的模型识别效果,见表4、图3。
表4 模型总评对比表(%)
图3 模型总评对比图
通过图3 模型总评对比图可以看出,相比BiLSTM-CRF 模型,加入Bert 后,模型命名实体识别准确率整体升高6%左右,性能明显增强。使模型性能增强的方式较多,如调整模型参数或改进算法等。本实验通过调整模型参数,不断进行模型训练及测试,将Bert 层训练级别设置为较低,CRF 层训练级别设置较高,以此获得了更好地框架识别效果。并且本身BiLSTM-CRF 模型由于CRF 模块的加入,利用CRF 模块的特性得到全局最优标签序列,在此基础上再次引入Bert 模型进行预处理,充分提取字符级、词级和句子间的关联关系,使得预训练时得到的词向量能够更好地表达所需要的语义信息,从而提升模型的命名实体识别性能。Bert-BiLSTM-CRF 模型与BiLSTM-CRF 模型对方剂、药物、疾病、功效和炮制方法五类实体识别的F 值对比统计图见图4。
图4 模型实体识别F 值对比图
从图4 模型实体识别F 值对比图可以看出,Bert-BiLSTM-CRF 模型相较于BiLSTM-CRF 模型,对于5 类实体整体识别准确率都有所增长,其中药物、方剂、疾病、炮制方法的识别准确率较高,对于功效识别准确率较低,原因可能是本实验心血管疾病中医方剂数据来源于《中医方剂大词典》及相关数据库补充资源,这些数据中对于一首方剂的描述主要包括其方剂名称、药物组成、主治何种疾病以及如何炮制使用,在文本中数量较多且方剂名称大部分以丸、汤、方结尾,实体特征较明显,所以识别率较高;而方剂数据集中对于功效的描述较为稀缺,在文本数量中占据较少,且对于功效术语的规范化存在不足,容易出现用词繁复的情况,如“发汗解肌”“发汗解表”都可表述发散风寒药的功效,这种同近义词使得模型实体识别难度较大,从而导致模型识别率降低。由此可见,实体特征、实体数据量大小以及数据规范性对于模型的识别精度都存在一定程度的影响,未来可以通过扩展中医方剂文本数据量,规范化使用中医术语来提高模型整体识别精确率以及模型有效性。
4 讨论
中医药丰富的治疗手段以及灵活的方法作为中医药传统特色优势之一,在提高人们健康及生活质量方面都做出了卓越贡献。而中医方剂是中医最常用的药物治疗手段之一,通过与现代技术相结合来适应当代社会的发展需求,可使用计算机处理及分析方剂文本数据,但其需将医学数据做结构化处理,而命名实体识别技术则是结构化表示的基础。
国内对医学命名实体识别的研究最早认为是分类问题,经典的隐马尔可夫以及条件随机场等模型被广泛研究[15,16]。随着各个领域的快速发展,深度学习方法的优势逐渐显现出来,通过自动提取特征标签,在命名实体识别领域得到了较好的效果[17]。在国际领域,基于循环神经网络(RNN)与长短期记忆网络-条件随机场(LSTM-CRF)模型都具有较高的代表性。并且随着深度学习领域的发展,自注意力机制(Attention)和Transformer 模型等在自然语言处理领域的优异表现,不断有更多优秀的改进模型在各个领域被提出[18,19]。
Bert 预训练模型是使用大规模未标注数据集训练Bert 来提取文本特征,再使用BiLSTM-CRF 模型进行标注。即使Bert 在各个领域已得到广泛应用,但在中医药方剂领域的研究仍然匮乏,针对于此,本实验提出基于深度学习的Bert 预训练模型,结合BiLSTM-CRF 模型运用于中医方剂的命名实体识别任务中,对模型进行改进优化,并与BiLSTM-CRF模型进行对比,发现将Bert 预训练框架与BiLSTMCRF 模型进行结合,运用到中医方剂文本识别任务中,中医方剂各类实体识别的准确率得到提升,充分发挥了模型在构建字符向量时充分考虑到字符间的关联关系,解决以往模型常见的边界模糊、歧义性等问题,且得益于Bert-BiLSTM-CRF 模型设计与优化训练,模型识别性能也得到了有效提升。
总之,命名实体识别作为自然语言处理技术中最重要的一环,在各个领域已有卓越表现,但在中医领域尚在起步阶段,仍然是未来的研究重点,并且一个性能较高的中医方剂文本命名实体识别模型能够为中医智能化、信息化的发展奠定良好基础,也能够构建更精准的中医药知识网络、中医方剂知识图谱,为实现临床辅助决策、智慧医疗、中医方剂知识推荐等智能服务提供支撑与动力。本研究不足之处在于对部分实体的识别准确率较低,原因可能是实体数据量较少、实体特征不明显等,从而对模型识别准确率造成影响。目前,仍有许多隐藏有意义的药物知识未被发现,在今后的研究中,将增加更多相关数据,或引入专业词典来提高模型的有效性。