如何从巨大的数字化文本信息中提取有效的知识是大数据时代学术界研究的热点内容[1-2]。随着中医数字化进程的不断推进,众多中医古籍资料已完成数字化工作,如何运用大数据方法分析这些文本数据是一个值得探索的问题。
文本分类是自然语言处理领域中的一个重要研究方向,是运用计算机技术对文本数据按照一定的分类体系或标准进行自动分类标记的方法[3-4]。早期的文本分类技术主要适用于英文文本,具有使用价值的中文文本分类方法直到20世纪90年代末期才被提出,随即在中文垃圾邮件分类、情感识别、意图判别等领域成功应用,但针对中医文本数据的分类研究较少[5-8]。本文通过自动提取不同中医学派文献资料的特征,采用LibSVM和LibLinear进行分类预测计算,探索一种基于纯文本的中医学派区分方法。
基于机器学习的文本分类通常包括特征提取、特征降维、分类器训练3个步骤。在中文文本分类研究中,分类器的选择较为重要,常用的分类器模型有贝叶斯[9]、逻辑回归[10]、支持向量机[11]、决策树[12]、神经网络[13]等。近年来,支持向量机在文本分类中的应用取得了较为突出的进展。虽然其在大数据集训练时会消耗大量时间和计算资源,但具有良好的泛化能力,在分类正确率和鲁棒性上占有优势。贝叶斯、逻辑回归、决策树等方法具有模型简单、训练及分类效率高等优点,但分类能力和鲁棒性较弱,如果数据集的内容和分布不符合模型特点,模型的分类性能会显著下降[14]。本文选择Bigram分词为数据预处理方法、TF-IDF为特征提取方法、Chi-square为特征降维方法、LibSVM和LibLinear为分类器。
Bigram是N-Gram算法中的二元分词方法,属于马尔科夫模型的一种。其原理是先根据用户词典对文本简单匹配,找出所有的词典词,然后将文本内容切分为长度为2的字符串序列,每个字符串即为gram,对全部gram的出现频度进行统计,并按照设定的阈值进行过滤,形成关键gram列表,即为该文本的分词结果,具体语言模型如公式(1)所示[15]。
(1)
中文文本处理大多采用Bigram进行分词,因为双字词出现概率较大,亦有采用三元Trigram或更高元方法进行分词。由于高元模型训练需要更庞大的语料,且数据稀疏严重,时间复杂度高,精度提高有限,故本文最终采用Bigram方法。
词频-逆文本频率(Term Frequency-Inverse Document Frequency,TF-IDF)由TF和IDF两部分组成,是常用的文本分类预处理基本步骤。当完成文本分词后,通过TF-IDF算法和降维处理就可以使用各个文本的词特征向量作为文本的特征进行文本分类。TF-IDF的主要思想是如果词w在一篇文档d中出现的频率高,并且在其他文档中很少出现,则认为词w具有很好的区分能力,适合用来区分文档d和其他文档。该算法主要由公式(2)-(4)组成[16]。
tf(w,d)=count(w,d)/size(d)
(2)
(3)
tf-idf=tf(w,d)*idf
(4)
TF-IDF无法计算文本特征在文本数据中的上下文关系,特别是处理一些高频特征时不考虑其在文中的作用,不能全面衡量某些特征的重要性,从而可能造成算法的正确率下降,但其具有处理速度快,算法模型易于实现且普适性较强等优势,运行结果较符合实际情况。
通过Bigram和TF-IDF方法得到的原始特征向量具有极大的维度,需要进行降维处理,否则会带来巨大的计算开销并降低分类器的正确率。文本分类的降维方法主要分为基于特征选择的降维和基于特征提取降维。由于本文使用TF-IDF算法,故首选基于特征选择的降维方法。Chi-square是其中性能较好的算法之一,对于出现次数较少的特征更容易给出高分,尤其在特征数量较大的情况下,该算法的速度和正确率均较互信息法占优[17]。Chi-square最基本的思想是通过观察实际值与理论值的偏差确定理论与实际的符合度,该方法认为最重要的特征向量是在A类(假设)样本集合和非A类样本集合中分布差异最大的,其数学本质即卡方分布[18]。
LibSVM[19]和LibLinear[20]是两个流行的分类器模型,主要用于处理多分类问题和分布估计问题。LibSVM是基于完整的支持向量机模型,通过使用核函数训练的非线性分类器,LibLinear是一种主要针对线性分类场景而设计的可显著提高多分类问题处理效率的大规模数据集线性分类器。理论上,LibSVM具有更强的分类能力,应该能够处理更复杂的问题,具有更高的正确率,但在处理大规模数据的性能上不如LibLinear。虽然LibSVM和LibLinear模型已经得到了诸多应用[21-23],但目前尚未发现在中医药领域的应用,故本文将同时观察两种模型,在中医文本数据分类中的性能。
本文的实验平台计算机配置为I7-6700K处理器,8GB内存配置,Windows 10 x64操作系统,搭建Java Platform Standard Edition 8环境,选用THUCTC_java_v1[24]作为运行环境。
中医学派是由于学说师承不同而形成的群体和派别,是中医发展中极为突出的医学现象,但学派的区分方法目前尚未达成统一意见。
本文的主旨在于探索文本分类方法在中医研究中的可行性。根据前期文献调研的结果暂定以疾病和论述对象作为一种中医学派的区分标准,以其代表性著作为主要研究资料,通过机器学习的文本分类方法加以区分。
根据以上思想,本文将构建一个文本分类模型,将纳入的中医文献分为伤寒、外科、小儿、女科4类。纳入的文献均为纯文本数字化文献,均为已出版的中医原文。具体类别及文献目录如表1、表2所示。
表1 纳入文献及类别
表2 预测文献明细
首先构建中医学派文本分类数据集。该数据集由表1中所列文献的TXT文本文件组成,按照4个类别分别存放在4个不同的文件夹中,并共同放置在训练文件夹下。第二步随机选择数据集中80%的数据作为训练数据带入Bigram算法进行分词,分词结果带入TF-IDF算法提取特征,得到原始特征向量。第三步将原始特征向量降维,并将降维后的特征向量按降维时得到的权重从高到低排序,选取前5 000条特征纳入LibSVM和LibLinear训练分类器。 第四步将剩余20%的数据按照第二、第三步方法进行分词、特征选择和降维,把得到的结果放入训练好的分类器中评估。设定评估正确率(Precision值)大于0.8时达到分类预测要求,若评估结果不理想则不断调整参数进行优化。 第五步将表2中的文本数据依次放入模型中,从而得到相应的预测值。若某一分类的预测值大于0.6,则认定该分类为预测结果;若不能达到0.6,则认定为难以区分。
纳入数据集经过分词和TF-IDF算法计算共提取97 357个特征词,LibSVM训练耗时0.125秒,LibLinear训练耗时0.062秒,模型Precision值、Recall值和F值均达到0.8以上(表3)。
表3 分类器训练结果
经测算,除010号文献的4种分类预测值出现偏差外,LibSVM与LibLinear预测趋势高度一致,能够明显区分伤寒、外科、小儿、女科等不同流派的文本数据(表4)。
表4 基于机器学习的中医学派文本分类结果
研究结果表明,本文使用的方法能够在一定程度上理解中医文献的语义内涵,两种分类器的正确率经训练后均达到90%以上,具有一定的应用价值。LibSVM的正确率略高于LibLinear模型,与理论预计相符。由于本文纳入训练的数据量较少,很难对两种模型的性能进行全面评价。
本次实验测试数据主要选用了《古今图书集成医部全录》中的部分内容,考虑到《古今图书集成》的文献涵盖内容较广且过于片段化,故又单独选取整本《伤寒论》作为对比资料进行预测。根据文献实际内容来看,分类器预测的正确率是可以接受的。编号1的文献为单行本伤寒论,是后代伤寒学派的源头。从预测值可以明显看出,后代伤寒派文献与《伤寒论》相关性极高,具有鲜明的特色;编号2的文献内容主要涵盖了内经相关书目及中医基础理论、中医内科学相关的文献,覆盖面较广,杂糅诸家内容,难以区分流派;编号3的文献内容主要由外科、伤科文献构成,内容较为单一,能够提取出概率高的特征值,故分类结果明确而单一;编号4的文献内容涵盖了历代医家对妇女及孕妇的论著,理法方药俱全,胎产及小儿相关内容间杂其中,故预测值偏低,但仍与其他学派有明显不同;编号5的文献内容主要涉及小儿胎产养护、生理病理特点和小儿各种疾病治疗的内容,特征词较为集中,故预测结果较为明确。
本文将基于机器学习的文本分类技术引入到中医学派研究中,探索了基于古典文献的中医学派分类方法。该方法以计算机自动寻找文献的特征词汇入手,训练并构建的中医学术流派分类器能够明显提升研究效率,具有较高的正确率,可以较为准确地实现分类预测功能,对今后开展中医药大数据研究具有一定的借鉴意义。