周永称1,崔忠芳2,范少萍,安新颖
随着互联网技术的飞速发展以及大数据时代的来临,人们已经进入到一个信息爆炸的年代。在海量的信息资源中,真正有价值的信息反而被掩盖和淹没,人们面临的不再是信息获取问题,而是如何在海量信息资源中快速、准确地获取有价值的信息。文本信息是数量较大也较容易获取的信息类型,尤其在如今的自媒体时代,文本信息的产生方式多样,来源丰富,但巨大的数据量使得人工难以区分与整理。因此如何有效分类和管理文本信息变得至关重要,文本分类技术的重要性也日渐突显。
文本分类的相关研究[1-3]可追溯至20世纪60年代。“词频”概念[4]及概率索引模型[5]等的提出为文本分类的发展奠定了基础,研究者从词频统计、句法分析及语义分析等角度开展文本分类研究[6]。20世纪80年代,主要采用知识工程的方法,根据领域专家提供的专业知识构建类别的推理规则,手工建立分类器进行文本分类。这种方法不仅需要大量的人工参与,分类效果严重依赖类别推理规则的质量,分类效率较低,而且普适性较差,仅适用于特定领域。20世纪90年代开始,随着机器学习技术的快速发展,以传统机器学习方法为基础的文本分类技术也逐渐发展起来[1]。基于机器学习的文本分类技术通过将文本进行特征化表示并使用特征数据集训练分类器来开展文本分类[7]。分类过程中,分类知识或分类规则由分类器自动从数据集中学习,无需人工干预,分类准确性及稳定性大大提升。然而传统的基于机器学习方法的文本分类技术仍存在以下问题:选择特征词时较少考虑词义,文本表示过程中易形成稀疏向量,向量维度过高易形成维度灾难,特征降维方法仍需要人工选择,这些都会对最终的文本分类结果产生影响。
深度学习是机器学习领域近年来发展最热的研究方向之一。2006年深度神经网络的训练问题被解决[8],深度学习迎来快速发展期。由于深度神经网络具备强大的特征选择提取与学习能力,因此研究者开始将深度神经网络模型运用在图像识别、语音识别及自然语言处理领域,尤其是在文本分类上。
随着国家“双一流”建设战略的推进,各医疗卫生机构更加重视自身学科建设,以学科评价排名为亮点的各种医院排行榜越来越受关注,如复旦大学医院管理研究所推出的中国医院及专科声誉排行榜[9],中国医学科学院推出的中国医院科技量值评价研究[10]等。在开展学科评价排名,尤其针对学科的科研能力水平展开评价时,需要将评价数据按照评价体系的学科分类划分到不同的学科类别中,其中就涉及包括SCI论文、临床试验项目、授权专利等在内的生物医学文本数据。针对生物医学文本的学科分类,中国医院科技量值评价研究课题组先后采用词表匹配和基于支持向量机模型的文本分类算法。由于学科差异性,一些学科的研究内容与其他学科交叉较少,容易区分,利用词表和基于支持向量机模型的文本分类算法标引效果较好,如眼科学、骨外科学等。但也有部分学科由于其研究内容与其他学科交叉较多,利用基于字符串匹配的词表匹配法和基于支持向量机模型的文本分类算法分类效果不太理想,仍需采用人工标引方法,通过人工阅读理解文本语义并结合上下文内容确定相关学科,如神经病学、消化病学等。而随着深度学习在文本分类领域的应用研究越来越多,在针对公开的新闻语料或数据集的主题分类研究或者社交软件留言的情感分类研究中,基于深度学习的文本分类方法比传统的浅层机器学习模型具备更好的分类性能。基于此,本文拟利用深度学习相关模型开展生物医学文本的学科分类研究。
本文对传统文本分类方法进行总结分析,针对其中的问题提出基于深度学习模型的生物医学文本学科自动分类方法并开展实证研究,以期提高学科评估中生物医学文本的学科分类效率与质量,推动医院评价和学科评估工作的开展。
传统的文本分类方法指基于浅层机器学习模型的文本分类方法,其流程大致可分为文本预处理、文本表示、特征降维、分类器构建及效果评估几个步骤(图1)。
文本预处理阶段主要包括文本分词、去除停用词等操作,英文文本中还涉及拼写检查、词干提取或词形还原等操作。开展文本分词时,英文文本由于单词之间存在空格,可作为天然的分词符;而中文文本分词可采用基于字符串匹配的方法直接匹配词,也可基于N元模型、隐马尔可夫算法、条件随机场算法等模型或算法根据字符共现频率或概率来衡量字符构成一个词的可能性。基于字符串匹配的方法对于未登录词无法处理,基于机器学习相关模型的分词方法需要人工构建特征,不仅工程量大,而且构建质量也会影响分词效果。
图1 传统文本分类的大致流程
文本表示旨在将经预处理后的文本转化成计算机可识别、能处理的格式。常见的文本表示模型包括布尔模型[11]、向量空间模型[12]、概率模型[13]等,但它们要么不考虑语义关系及文本相关性,要么忽略特征词之间的相关性及位置关系,要么容易形成高维向量和稀疏向量,不仅会造成分类信息的缺失,而且会增加计算开销。
特征降维主要包括特征选择和特征提取。在文本表示阶段利用one-hot模型等表示文本时容易出现高维向量,增加计算复杂度和时间消耗,因此需要生成低维的特征向量,尽量减少分类信息的损失。特征选择指从特征词集合中挑选出最能代表该类的特征构建特征矢量,常用的方法有信息增益[14]、文档频率[15]、卡方统计法[16]、互信息量[17]等;特征提取是指将特征矢量通过线性映射到低维空间中,常用的方法有主成分分析法[18]、独立成分分析法[19]等。特征降维过程需要人工参与,如特征选择过程的基本思想是使用某些评估方法对每个特征词赋予不同的分数,然后人为设定阈值,让分数高于该阈值的特征词组成新的特征集合。人为的参与会对最终的文本分类结果产生影响。
分类器构建阶段常用的分类模型有朴素贝叶斯分类算法[20]、K最近邻算法[21]、决策树[22]、支持向量机(Support Vector Machine,SVM)[23]等,它们在有限的数据集和有限的计算单元的情况下对于复杂函数的拟合有限,对于复杂问题的处理能力被制约[24],并且其分类效果的好坏与特征降维的效果有直接关系。因此应用这些分类模型开展文本分类研究时,还需要在特征选择与特征提取上耗费大量时间和精力。
效果评估则是利用准确率、召回率和F1值等相关指标衡量分类模型在测试集中的分类性能。
深度学习是机器学习发展到一定程度产生的新的分支。2006年深度神经网络的训练难题被解决后,深度学习获得了快速发展。它通过多层表示学习将原始数据逐层转化为抽象的表示,从数据中自动学习特征,利用其强大的运算和学习能力发现高维数据中的复杂结构,进而将提取的特征信息用于分类和预测[25-26]。
传统的文本分类方法存在以下问题:文本表示过程中容易形成高维向量或损失语义,特征降维过程需要人工参与,分类器构建阶段浅层模型对数据的学习能力有限。基于此,本文拟利用词向量的方式进行文本表示,利用深度神经网络模型进行特征的提取、学习与分类。基于深度学习的文本分类流程主要包括文本预处理、文本表示、分类模型构建、效果评估等步骤(图2)。
文本预处理是文本分类的基础,预处理的结果会直接影响分类结果。由于学科评估涉及的生物医学文本多为SCI论文、授权发明专利标题、临床试验项目标题等英文文本,因此在本文的文本预处理阶段,除了文本分词、去除停用词等操作外,还需要进行缩写词的扩展、大小写转换、词干提取及词形还原等操作。目前Python库中封装的相应数据包可以开展相关操作,经过文本预处理后,剩下的文本可以更好地表达文本特征。
图2基于深度学习的文本分类流程
针对传统文本分类方法中文本表示容易出现高维向量、稀疏向量,语义缺失等问题,本文拟采用词向量的方法进行文本表示以解决相关问题。词向量是指用一个定长的稠密向量来表示一个词,向量之间的距离可以反映词与词之间的相似性。随着神经网络的发展,基于神经网络的词嵌入方法被应用于文本表示中,其中应用较为广泛的是Mikolov等人提出的Word2vec模型[27]。该模型主要利用大规模语料,在较短的时间内学到每个词的低维度表达,形成词向量,不仅可以让相似的词在向量上具有更近的距离,而且较低的维度也可减少计算的复杂性。Word2vec模型有两种,分别为Skip-gram模型[28]及Continuous Bag of Words(CBOW)模型[29]。CBOW模型主要利用前后词预测当前词(图3),而Skip-gram模型主要利用当前词预测前后词(图4)。由于词向量具备低维、稠密、向量距离代表语义关系远近等优点,克服了传统文本分类方法中文本表示的高维向量等缺点,因此可以有效提升生物医学文本的学科分类精度。
图3 CBOW模型
图4 Skip-gram模型
针对传统文本分类方法中分类模型学习能力弱、泛化能力不强、需要人工干预特征降维等问题,本文拟利用深度神经网络模型构建分类器。随着深度学习的发展,和在图像识别和语音识别等领域的成功应用,研究者开始尝试将深度学习应用到自然语言处理领域,尤其是文本分类中。在分类模型上,采用深度神经网络模型构建分类器可实现对特征的自动提取与分类,且其强大的学习与计算能力可帮助处理更加复杂的问题。
目前在文本分类模型构建中广泛使用的深度神经网络模型有卷积神经网络模型(Convolutional Neural Networks,CNN)[30]、循环神经网络模型(Recurrent Neural Network,RNN)[31]、长短时记忆神经网络模型(Long Short-term Memory Networks,LSTM)[32]等。
卷积神经网络是一种前馈神经网络,包含输入层、隐层和输出层,是深度学习中较为经典也较有代表性的算法之一。隐层中一般包含卷积层和池化层,其中卷积层的功能是对输入数据进行特征提取,获得特征映射,通过叠加多个卷积层可以提取到数据中的深层特征;池化层负责对特征进行压缩,提取主要特征。输出层则利用Softmax分类器[33]计算文本在各个类别下的概率,给出最终分类结果。卷积神经网络集权值共享和局部感受野于一体,不仅可以在提取特征的同时实现降维和权值的共享,而且能控制模型参数个数进而降低模型复杂度。循环神经网络是以序列数据为输入的递归神经网络,在序列演进方向递归且所有循环单元按链式链接。该网络隐层中的前一时刻状态可向下传递,从而影响并参与下一时刻隐层状态的计算,实现信息的前后关联,解决输入间前后关联的问题。因此,利用循环神经网络模型开展文本分类研究,可提取文本的上下文序列信息。但循环神经网络模型只能对短距离的信息进行记忆,而长短时记忆神经网络在结构上比循环神经网络更优化,它在循环神经网络模型的基础上添加了一个保存长距离信息的单元。这种单元通过利用“输入门”“遗忘门”和“输出门”这3种门控结构来控制信息的保留或丢弃,从而实现对序列数据中长距离依赖信息的学习。
近年来,注意力(Attention)机制也开始成为关注热点。它借鉴人类视觉在扫描全局内容时会将注意力放在重点关注的目标区域,对神经网络模型中间状态的不同输入赋予不同的权重,将对分类有帮助的因素赋予更大的权重来获得更好的分类效果[34]。
基于此,本文拟采用以下4个深度神经网络模型用于学科分类。
CNN模型:CNN模型是较早应用于文本分类中,也是较为经典的深度神经网络模型,为增强模型对特征的提取能力。本文中的CNN模型采用双卷积层,且每个卷积层包括多个卷积核来帮助提取特征。如图5所示,输入层数据先进入C1卷积层,经过卷积操作后输入S2池化层,再将池化层的输出输入C3卷积层进行卷积操作,输出到S4池化层,然后经过全连接层最后输入到分类器中得到分类结果。
LSTM模型:由于本文中需要进行分类的数据是文本数据,前后文之间存在一定的联系,而LSTM模型的独特的记忆单元中包含的门控结构可帮助提取长距离信息,辅助分类。其记忆单元如图6所示,其中ft是遗忘门,它控制着上一时刻的长期记忆状态Ct-1可以保留多少信息到当前时刻的记忆状态Ct;it是输入门,它控制着当前时刻的即时状态c't可以保留多少信息到当前时刻的记忆状态Ct;ot是输出门,它控制着当前时刻的记忆状态Ct可以保留多少信息到当前时刻的输出ht[35]。3个门结构对于信息的输入输出控制均取决于上一个时刻的输出和当前即时的输入,而3个门结构控制着当前时刻的输出。也就是说,当前时刻的输出可以由上一个时刻的输出和当前即时的输入共同决定,有利于文本中上下文序列特征的提取。
LSTM-CNN模型:由于单个模型对于特征的提取各有侧重,因此较多研究者利用混合模型来发挥各个模型的优点,充分提取特征。本文探索利用混合模型提取文本特征并分类,其过程如下:经过文本表示后,词向量先进入LSTM模型以提取文本上下文序列特征,然后输出到CNN模型的卷积层中提取文本的局部特征,经卷积、池化操作后数据输出到全连接层中做拼接,最后利用SoftMax函数进行分类。
图5 本文中CNN模型结构
LSTM-attention模型:由于一条文本数据中各个词对于分类的重要性不一样,因此本文将注意力机制和LSTM模型相结合,其结构如图7所示[36]。
图7 本文中LSTM-attention模型结构
将文本中的单词用词向量表示后输入LSTM模型,提取上下文序列特征,得到隐层的输出(h0,h1,h2......),然后利用注意力机制计算各个输入的注意力概率分布值(α0,α1,α2......),对隐层的不同输出赋予不一样的权重,最后计算出包含文本信息的特征向量[36]。
除了构建以上4个深度神经网络模型外,本文还采用传统文本分类方法中较为经典的SVM模型作为对照组,以验证基于深度学习的文本分类方法是否在生物医学文本的学科分类上有更好的性能。效果评估仍采用准确率、召回率及F1值来评估模型的分类性能。
本文实验在Window 10系统下进行,GPU为GTX 1080Ti,内存大小为32GB,编程语言为Python 3.6,开发工具为Sublime Text 3,深度学习框架为TensorFlow 1.8。数据来源为中国医学科学院在中国医院科技量值评价研究中累积的人工标注的SCI论文,包括神经病学10 471篇、消化病学13 018篇及肿瘤学29 172篇。这3个学科的文本在以往的学科分类中,由于与其他学科的研究内容交叉性较大,利用传统的SVM模型或者词表匹配方法都无法得到一个较高的准确性。每个学科的数据按照训练集、验证集、测试集为6∶2∶2的比例划分,正负数据比例为1∶1。
本文采用CNN、LSTM、LSTM-CNN、LSTM-attention及SVM模型,分别对3个学科的文本进行学科分类,每个学科的文本分类问题均为二分类问题,然后对比各个模型在同一个学科文本上的分类性能。
在利用SVM模型进行文本分类时,同样用基于词向量的方法进行文本表示,以避免因为特征构建方法不一样导致结果无可比性。
针对3个学科的数据集,均采用Python中自带的自然语言处理工具集NLTK模块进行文本的切词、去除停用词、大小写转换等操作后得到的数据集如图8所示(以神经病学数据为例)。其中第1列为标签列,“1”表示该文本属于神经病学科,“0”表示该文本不属于神经病学科;第2列为经过文本预处理的SCI论文标题和摘要内容。
图8 预处理后的文本集
采用Word2vec模型构建词向量进行文本表示。由于Skip-gram模型在针对低频词时比CBOW模型更敏感,因此直接导入Python中的Gensim模块,选择Skip-gram模型训练词向量,设置词向量维度为128,窗口长度为3,训练得到的词向量见图9。
图9 训练完的词向量
以神经病学科的数据集为例,分别在训练集和验证集上训练CNN、LSTM、LSTM-CNN、LSTM-attention模型及SVM模型,调节相关参数。对CNN模型确定了两层卷积层结构。第一个卷积层中,6个不同大小卷积核的卷积结果基于通道数合并后输入第二层卷积层再输入全连接层做交叉熵分类。对LSTM模型采用单层双向的LSTM模型。对LSTM-CNN模型,数据先输入单层双向的LSTM层,然后输入到包含4个卷积核的卷积层中,最后输入全连接层做交叉熵分类。对LSTM-attention模型,数据先输入单层双向的LSTM层,对输出做拼接和随机失活(dropout)处理后再后接一个self-attention结构,对LSTM层的输出向量做加权求和后再输入到全连接层做交叉熵分类。上述4类模型学习率初始化均设为0.005,激活函数选用relu函数,dropout值设为0.8,优化器使用adam。在神经病学科的训练集上4类深度神经网络模型的损失和准确性随迭代次数增加的变化如图10、图11所示。
图10 4个模型在神经病学科训练集上随迭代次数增加损失值的变化趋势
图11 4个模型在神经病学科训练集上随迭代次数增加准确性的变化趋势
随着迭代次数的增加,4类模型的损失值趋向于0,准确性趋向于100%。上述模型训练好后利用测试集测试模型分类性能。
通过在神经病学、消化病学及肿瘤学3个学科的训练集和验证集上训练CNN、LSTM、LSTM-CNN、LSTM-attention及SVM模型,并在相关测试集上进行测试,利用准确率、召回率及F1值评估各个模型的分类性能。其结果如表1所示。
将5个模型在3个学科测试集上的F1值用柱状图作对比,如图12-图14所示。
表1 5类模型在3个学科测试集中的准确率、召回率及F1值对比
图12 5个模型在神经病学测试集上的F1值对比
图13 5个模型在消化病学测试集上的F1值对比
图14 5个模型在肿瘤学测试集上的F1值对比
从上述对比图中可知,基于深度学习的神经网络模型在3个学科文本的学科分类性能上均明显优于传统的SVM模型(神经病学科F1值高约10个百分点,消化病学科F1值高约7个百分点,肿瘤学科F1值高约4个百分点);同一模型在不同学科文本上的分类性能有较大区别,具备学科差异性;双卷积层的卷积神经网络模型在这3个学科文本中具有最好的分类性能;混合深度神经网络模型以及基于Attention机制的神经网络模型相比单个神经网络模型而言,在3个学科文本的学科分类性能上并无明显的优越性。
鉴于深度学习在文本分类中被广泛应用以及课题组针对生物医学文本的浅层分类模型无法满足学科分类需求,本文对10 471篇神经病学SCI论文、13 018篇消化病学SCI论文以及29 172篇肿瘤学SCI论文进行文本预处理、文本表示等步骤分别构建训练集和测试集,对CNN、LSTM、LSTM-CNN、LSTM-attention及SVM模型进行训练及测试。实验结果表明基于深度学习的神经网络模型相比传统的基于统计的SVM模型具有更好的分类性能,可见基于深度学习的文本分类方法在生物医学文本的学科分类上也具备相当好的分类性能。在中国医院科技量值的后续研究及学科评估中,深度学习神经网络模型,尤其是双层卷积神经网络模型为生物医学文本的学科自动分类研究提供了一种解决方法。
此外,在医院评价和学科评估过程中,往往由第三方评估机构主导评价工作。其中一个必不可少的过程是数据匹配与核对,即将第三方评估机构掌握的评价数据与被评估机构自身上报的数据进行匹配,查漏补缺。由于评价数据尤其是科研产出相关数据如SCI论文、授权发明专利等均为文本数据,在匹配过程中会涉及到文本相似度计算的问题。深度学习其强大的特征提取与计算能力也为医院评价和学科评估过程中文本相似度计算提供了一种解决办法。