APP下载

NLP在中医医案症状信息自动化抽取中的应用研究

2021-03-12屈丹丹胡孔法

软件导刊 2021年2期
关键词:医案分词词典

屈丹丹,杨 涛,胡孔法

(南京中医药大学人工智能与信息技术学院,江苏南京 210023)

0 引言

中医医案是中医临床诊断、治疗的实录,其保存了大量疾病诊疗一手资料,是医家临床经验和辨治特点的集中反映,已成为中医学术研究和名老中医经验及学术思想传承的重要资源[1]。因此,充分挖掘与利用医案信息、提炼名老中医诊疗经验,将会给人们的健康带来福祉。然而,中医医案在记录过程中存在主观因素过多、随意性强、结构复杂等问题。大量医案信息不能直接指导临床实践,而是需要提炼、总结与学习,若采用传统人工方式进行整理与总结,耗时耗力。

近年来,随着科学技术的迅猛发展,将人类语言转化为机器语言的自然语言处理技术(Natural Language Pro⁃cessing,NLP)逐渐被人们所熟知,并得到了广泛应用。自然语言处理作为一个多学科交叉研究领域,涉及多种应用技术,包括信息抽取、文本挖掘、机器翻译等[2]。信息抽取(Information Extraction,IE)是一种能从海量数据中准确、快速抽取出人们感兴趣的事实信息,并将其以结构化形式存储起来的技术[3]。在医学领域,国外许多学者将医学术语库和自然语言处理技术相结合对医案进行信息抽取,且取得了不错的成效。但由于中文语言的特殊性,使得中文临床医案信息抽取成为一项具有挑战性的任务。其中,陈德华等[4]主要借助词库,利用文本聚类的方法从病理文本中提取出模板信息用于文本结构化处理,该方法具有较好的结构化处理效果,但其词库构建需要人工进行整理,且兼容性较差;杨兵等[5]针对专业性强、内容丰富的医学领域文本数据提出一种结构化信息抽取方法,主要利用文本聚类和关键词提取生成医学术语库,再根据语法规则抽取关键指标实现医学文本结构化信息的抽取,该方法信息抽取精度较高,但计算时间长,且时效性较差;吴欢等[6]利用基于规则的方法对乳腺癌病理报告进行信息抽取,虽然方法简单、快速、易于实现,但前期需要人工大量进行归纳与总结,且通用性差。

鉴于此,本研究尝试从自然语言处理技术入手,利用Word2vec 方法进行中医医案症状信息的自动化抽取,并将抽取结果与TFIDF 进行对比分析,探讨更适用于中医医案症状信息抽取的研究思路,从而为进一步的中医医案自动化抽取研究提供参考。

1 中医医案信息抽取方法设计

1.1 TFIDF 方法

在医案信息抽取过程中,本研究采用的第一种方法是基于统计的加权技术——术语频率—逆文档频数(Term Frequency-Inverse Document Frequency,TF-IDF)。该方法是一种常用于资讯检索与探测的加权技术,本研究主要利用其评估症状在医案中的重要程度。在研究中,TF 表示某个症状在医案中出现的频率,即:

其中,im,n表示某个症状m 在医案n 中出现次数,本研究规定表示在医案n 中出现的所有症状次数之和。

IDF 是一种度量症状普遍重要性(“权重”)的方法,以逆文本频率指数表示,即:

其中,|D|表示语料库中医案总数,|Dtm|表示包含该症状的医案数,1+|Dtm|表示防止当症状m 在医案集合中不存在而出现分母|Dtm|为0 的情况。根据公式(2)可以看出,某个症状在医案集合中出现的次数越多,该症状的IDF 值反而越小,即表示该症状区分医案的能力越弱。因此,症状在医案集合中出现次数与IDF 值之间是一个反比关系。某个症状的重要性与其出现的词频成正比,与其在医案集中出现的频率成反比,即一个症状在医案中出现频率越高,而医案集中包含该症状的医案数越少,则其得到的TF-IDF值越高,也即表示其越重要。

1.2 Word2vec 方法

Word2vec 模型是本研究用于医案信息抽取的第二种方法。Word2vec 于2013 年由Mikolov 等[7]提出,是一种神经网络概率语言模型,其主要目的是将词语转换为包含语义的词向量,从而达到词与词之间关系、与上下文关系都能以某种程度被表达出来的目的[8]。之后,Mikolov 等又通过对Word2vec 训练出的词向量进行距离计算,可有效发现语料库中相近的词汇[9]。Word2vec 模型一般分为CBOW和Skip-gram 两个基础模型[10],其中CBOW 模型是基于数据上下文内容预测目标词,而Skip-gram 模型思路与之相反。Skip-gram 主要根据指定词预测该指定词的上下文词向量,即发现语料库中局部词汇之间的共现关系,也是本研究需要用到的模型。本研究主要思路是将处理后的数据映射成一个多维实数向量,在新的高维空间中,症状等词汇会以词向量形式存在。相比传统文本表示方式,Word2vec 生成的词向量不仅可以避免“维度灾难”,而且能够将词汇之间的语义关系较好地呈现出来。

K-均值(K-means)算法是一种已知聚类类别数的划分算法,且作为一种无监督学习算法,应用较为广泛。本研究利用Word2vec 中的Skip-gram 模型进行医案症状抽取时过于依靠指定词,无法实现症状信息的自动化抽取,且抽取结果受主观因素影响较大。因此,本研究在此基础上,利用K-means 聚类算法进行医案症状信息抽取研究。但实验过程中发现,在处理高维数据时,聚类很难保证对其有效进行划分。因此,研究借助于一种通用的降维和数据分析工具——主成分分析法(PCA),通过线性变换将高维空间中的样本投影到低维空间中,同时尽可能保留原始数据特征[11]。研究在保留原始数据95%以上信息的情况下,利用PCA 将Word2vec 生成的高维词向量降到4 维,再利用K-means 算法进行划分。实验选取K 个聚类中心,计算各个词汇与聚类中心的距离,通过不断迭代得到最终聚类结果。通过对聚类结果进行purity 评价发现,当K=2 时,purity 值最高,为0.92。最后,实验选择症状明显较多的一组作为医案信息抽取最终结果,实现中医医案症状信息的自动化抽取。

1.3 医案信息抽取方法流程

本研究先从原始数据中抽取出实验所需数据,再对抽取出的医案数据进行预处理,之后进入分词操作阶段。但在研究过程中发现,由于缺乏较完整、系统化的心系医案相关症状术语集,导致现有分词工具分词效果较差,需创建自定义心系医案症状词典。因此,本文的分词和去停用词操作是在构建后的词典基础上进行的。最后利用TFIDF和Word2vec 方法分别对医案症状相关信息进行自动化抽取,并通过精确率、召回率评估两种方法的优劣。医案信息抽取流程如图1 所示。

Fig.1 Medical information extraction process图1 医案信息抽取流程

2 算法实验

2.1 数据来源

本文实验数据来源于某三甲中医医院心内科的438 条临床数据,数据真实可靠。原始数据以Excel 形式存在,主要内容包括:总编号、病历号、来源、姓名、性别、年龄、诊次、就诊日期、病史、方药等内容。由于本次研究主要针对心系医案的症状相关信息进行抽取,而病史中包含了病人大量症状信息,因此病史相关数据是研究中需要重点挖掘的内容。

2.2 数据清洗

数据清理主要通过填写缺失值、光滑噪声数据、识别或删除离群点并解决格式的不一致性,达到格式标准化、清除异常与重复数据、纠正错误的目的[12]。因此,为提高医案信息抽取的准确性,本研究对原始数据中存在的前后词语不一致问题进行预处理,处理结果如表1 所示。

2.3 分词与去停用词

分词操作是医案信息抽取的基础,本研究采用的是Py⁃thon 的jieba 分词。jieba 分词是一种应用较为广泛的概率语言模型分词工具,其主要任务是在切分得到的所有结果中求某个切分方案S,使得P(S)最大。由于本研究是对特定领域进行分词,jieba 的基础库中并没有医学领域专有词汇,因此需要创建自定义词典。创建本研究所需的心系医案数据词典流程描述如下:①读取100 条心系医案数据,jieba 分词并进行去停用词操作;②构建词典:遍历分词结果,构建“字词—频数”词典,按词频降序排列:{‘word’:freq},之后遍历词典,保留词数>1 的词语并进行一定的人工干预,构建自定义词典;③读取100 条医案数据,依据自定义词典进行jieba 分词;④保留分词结果中词频>1 的词语,与自定义词典进行比较,加入未登录新词,更新词典;⑤重复步骤③、④,直到全部医案数据读取完毕。最终分词结果如表2 所示。

Table 1 Data cleaning表1 数据清洗

Table 2 Word segmentation表2 分词结果

去停用词是指在信息检索中,通过对某些字或词的过滤,达到节省存储空间、提高搜索效率的目的,也是本研究分词后需进行的操作。停用词一般为医案中出现频率较高,但与心系医案需抽取的症状没有关联或不影响抽取结果 的 一 些 词,例 如“患 者”“约”“至”“门 诊”“口 服”“我 院”“可以”“但”“仍”“突然”等词语及常用标点符号。本文选取了493 个停用词放于一个停用词表中,并将停用词表存放在以“stopwords.txt”命名的记事本文件中。为提高医案信息抽取精确率、减少噪声数据的干扰,本研究在分词完成后利用Python 的open()函数加载stopwords 文件,以便对分词后的数据进行去停用词操作。

指小腿腓肠肌发生疼痛性挛缩,孕期任何时期均可出现,夜间发作较多。这种情况在怀孕5个月以上孕妇中为多见。系因增大的子宫压迫下肢神经所致,疲倦、寒冷、不合理的体位以及体内钙、磷比例失调致神经系统应激功能过强,均可促使发作。

2.4 评价指标

不管在机器学习(ML)、信息搜索(IR)还是自然语言处理(NLP)等领域,评估是一项不可或缺的操作。本研究规定抽取到的症状为正类,其他为负类,评估设置如表3 所示。

Table 3 Assessment settings表3 评估设置

评价指标包括:精确率(precision)、召回率(recall),计算公式如下:

其中,TP 表示实验抽取与人工标注相同的症状数量,TP+FP 表示抽取总数量,FN 表示未抽取到的症状数量。

3 结果与分析

实验分别选取利用TFIDF 与Word2vec 方法抽取出的前20 条医案症状信息,并按其重要性排序,结果如表4 所示。

Table 4 Top 20 extracted data表4 抽取出的前20 条数据

由表4 可知,TFIDF 根据权重值抽取出的20 条数据包括:胸闷、胸痛、心悸、气喘、头晕等。Word2vec 方法通过计算与聚类中心的距离抽取出的结果包括:心悸、胸痛、心慌、胸闷、气喘等。由此可知,心系医案中病人发病时,往往伴有心悸、胸闷、胸痛、气喘、头晕等症状的发生,其结果与已有文献[13]的研究结果相似。

同时,在实验不断探索的过程中,还发现一个症状的出现往往伴随另一种症状,比如:出现恶心时,往往也伴随着呕吐的发生。由此推论,症状与症状之间可能也存在着一定联系。

Fig.2 Precision P图2 精确率P

Fig.3 Recall R图3 召回率R

通过以上实验发现,由于TFIDF 与Word2vec 方法研究思维模式的不同,抽取效果也呈现出较大差异,其中Word2vec 方法更适用于心系医案症状抽取研究。对比两种症状信息抽取方法的准确率和召回率发现,Word2vec 方法的准确率和召回率均明显高于TFIDF。主要原因在于利用TFIDF 方法进行中医医案症状信息抽取时,只注重了词汇与整个医案的联系,而忽略了词汇与其上下文之间的联系。但在医案信息抽取过程中,上下文之间的联系是不可忽略的因素,因而其抽取结果的精确率和召回率偏低。

由图2 可知,随着抽取个数X 的增大,两种方法的准确率总体呈下降趋势,主要原因在于人工标注是依据词频大小及标注症状是否为医案中的常见症状进行综合考量,具体参照文献[14],而两种方法抽取结果是按其重要性进行降序排列。当X 为25 时,抽取症状与人工标注症状符合程度较高,对应准确率也偏高。当X>65 时,Word2vec 方法抽取结果趋于稳定,保持在80%左右,TFIDF 方法则在X=95时趋于稳定,只有60%左右。

由图3 可知,随着抽取个数X 的不断增加,利用Word2vec 方法抽取的召回率逐渐趋于100%,而采用IFTDF方法的召回率稳定在80%左右。综上所述,基于Word2vec方法的症状抽取结果与人工标注结果更为接近。

4 结语

本研究利用基于统计的TFIDF 和Word2vec 方法分别从医案数据中抽取医案症状信息。实验结果表明:病人发病时,往往伴有心悸、胸闷、胸痛、气喘、头晕等症状的发生,症状与症状之间也存在一定联系。同时,对比TFIDF 与Word2vec 抽取结果发现,利用Word2vec 抽取医案症状信息的效果优于TFIDF 方法。主要原因在于医案信息抽取过程中,症状与其上下文之间的联系是必须考虑的因素,而TFIDF 方法恰恰是在忽略上下文之间联系的基础上进行的,导致最终抽取结果的精确率和召回率偏低[15-17]。

现阶段的研究只是初步探索,今后的研究可在此基础上对医案词典作进一步扩展,使其更精确、应用范围更广。虽然利用Word2vec 方法的抽取效果较佳,但K-means 聚类本身存在时间复杂度高的局限性,因此需要进一步改进算法使其具有更好的扩展性,抽取出更多符合语义及实际情况的症状信息,为今后探索各症状与症状或体征之间的联系打下基础。

猜你喜欢

医案分词词典
分词在英语教学中的妙用
结巴分词在词云中的应用
结巴分词在词云中的应用
医案聊斋续篇 吐泻案
医案聊斋续篇 晨泄案
评《现代汉语词典》(第6版)
词典例证翻译标准探索
新加香薷饮医案6则
古医籍中刺络放血医案浅析
《胡言词典》(合集版)刊行