程东生,范广璐,俞雯静,伍 飞,曾伟波
(1.国家电网公司 国网安徽省电力有限公司, 合肥 230061;2.国网信息通信产业集团有限公司 福建亿榕信息技术有限公司, 福州 350003)
互联网的普及和信息技术的日益发展导致信息的爆炸式增长,其中大部分信息以文档形式存在。这些杂乱无章的文档中往往包含着对人们非常重要的信息,如果能对这些信息进行有效的管理和分类就可满足人们高效获取信息的需求。但是面对海量的文本信息,传统的人工分类方式效率低下,显然已经无法满足实际工作的需要,因此急需开发文本自动分类管理系统。文本分类技术作为自动文本管理系统的关键技术,越来越受到学者的关注。经过多年的研究,在文本分类领域产生了许多优秀的模型和算法。文本分类一般包括预处理、文本表示、分类3个模块,预处理一般包括去除非法字符、词性标注等步骤,其中文本表示和分类模块是研究的重点。
传统的文本分类方法普遍采用向量空间模型(vector space model,VSM)对文本进行向量化表示。VSM是20世纪70年代Salton等学者提出的,该模型曾被用于SMART信息检索系统[1]。VSM由于具有较好的计算性和可操作性,在信息检索领域和文本分类领域都有广泛的应用。VSM模型一般采用TF-IDF、DF等方式进行特征值(权重)的计算。这种权重计算方式在简单的文本分类中取得了不错的效果,但是这种方式存在“词汇鸿沟”,即无法保存词语、语法的信息以及相关的语义信息,这就意味着该方法无法衡量单词之间的语义相关度,同时这种方法还存在特征向量维度过高和数据稀疏的问题,所以VSM模型不适用于复杂的文本分类任务。为了解决“词汇鸿沟”问题,相关学者提出了很多解决方案[2-8]。虽然这些改进的特征提取方式能有效改善传统VSM模型的缺点,但是这些方法都是通过人为添加一些限制条件,在一定程度上限制了特征提取的泛化能力。因此,这些改进的VSM模型无法从本质上解决VSM模型在特征表达上存在的问题。后续有学者提出了词向量模型,该模型可以有效地解决以上问题。其中比较著名的是Word2Vec模型。Word2Vec由Google的Tomas Mikolov团队[8]提出并实现。该算法可以在很短的时间内从大规模的语料库中学习到词向量,在得到词的低维度向量表达后可在一定程度上判断词语间在语义上的相似性。
在分类阶段,Logistic回归、朴素贝叶斯[9-11]、决策树、KNN[12]、支持向量机[13-14]等方法在文本分类领域有着广泛应用,取得了丰硕的研究成果。同时,有学者提出将不同分类模型进行融合的策略[15-16]。总体来说,这些分类模型复杂度低,训练速度相对较快,可解释性较强,但不能实现文本特征的自动提取,分类性能较差。
近年来,深度学习模型在自然语言处理(natural language processing,NLP) 领域有了较大的突破[17-20]。2003年,加拿大蒙特利尔教授Bengio等[17]提出用神经网络来训练语言模型,尝试将词语映射到N维实数向量空间中,从而有效避免了因语料庞大而造成的维度灾难;Weston[18]尝试将深度学习模型应用到自然语言处理任务中的分词、词性标注、命名实体识别和语义角色标注等多个典型问题中,并取得了与其他先进模型相当的水平;在这之后, Andriy Mnih等[19]提出一种层次化的神经网络训练模型,希望通过层次化来降低单个神经网络语言模型的复杂度; Irsoy等[20]将递归神经网络的深度扩展到3层使其成为一个更深层的网络,从而有效提高了网络的表达能力。可以看出,近年来深度学习模型在自然语言处理领域有不小的进步,但是深度学习训练效率非常慢,这导致无法在海量数据中进行有效推广。
综上所述,目前文本分类领域还存在一些难点急需解决,主要包括:① 如何构建一个高效、稳定的语义词典;② 如何打破向量空间模型中词与词之间的独立性;③ 如何使分类精度与海量数据训练速度之间有效平衡。
本文提出了基于极限学习机的中文文本分类方法。该方法包括预处理模块、文本特征提取模块、特征融合模块和基于极限学习机的分类模块。其中文本特征提取模块包含两个子模块:底层特征提取模块和中层特征自主学习模块。底层特征提取模块主要包括语义词典构造和特征表达两个步骤,在语义词典构造步骤中,本文加入词性选择和底层特征选择两个过程,以此构建一个高效、稳定的语义词典。实验结果表明,本方法可有效解决上述问题。
本文所提出的基于ELM的中文文本分类方法总体框架如图1所示。该方法可分为4个连续的模块:预处理模块、文本特征提取模块、特征融合模块和分类模块。文本特征提取模块包括底层特征提取和中层特征提取两个子模块。在分类模块中该方法采用ELM作为基分类器,包括学习和运行两个阶段,两个阶段的第一步都要经过预处理模块。该模块主要功能是对数据进行规范化处理,去除与本任务不相干的信息。模块首先将文本内容统一为UTF-8的编码格式;再采用正则表达式匹配的方式对非法字符进行过滤处理;然后采用ICTCLAS汉语词法分析系统进行分词和词性标注;最后采用百度停用词表对文本中经常出现但其本身对文本分析意义不大的词进行过滤。
在模型学习阶段中,训练样本首先经过预处理模块去除不相干的信息,然后进入底层特征提取子模块。该子模块包括语义词典的构建和形成训练样本的底层特征表达两个过程。本方法不是采用传统的语义词典构造方法,而是提出一套语义词典的通用构建方法,主要包括词性选择和底层文本特征选择两个步骤,可在一定程度解决传统语义词典词性单一且覆盖面不足的问题。底层特征最后采用向量空间模型进行表达,其中向量中每维的特征是归一化后的TF-IDF权重。中层特征提取子模块首先结合上一子模块生成的语义词典和大规模的语料库,采用无监督方式训练Skip-gram模型,接着用训练好的模型产生训练样本词向量。最后采用池化技术形成每个训练文档的中层特征表达。特征融合模块将之前模块计算到的底层特征和中层特征加权串联起来形成融合特征表达;分类模块采用监督式训练方式分别训练3个基于极限学习机的文本分类模型,即对应底层特征文本分类模型、中层特征文本分类模型和融合特征文本分类模型。
在模型测试阶段中,测试样本同样要经过预处理模块去除与本任务不相干的信息。在文本特征提取模块中,本文结合学习阶段生成的语义词典和训练好的Skip-gram模型得到测试样本的底层特征和中层特征表达,然后经过特征融合模块生成融合特征表达。计算好的底层特征、中层特征和融合特征分别送入模型学习阶段中学习好的3个基于极限学习机的文本分类模型中进行分类,最后综合3个分类模型的分类结果得出待判定样本所属的文本类别。
下面详细介绍本方法中涉及到的一些技术,主要包括语义词典构造、底层特征表达、中层特征表达、融合特征表达和基于ELM的分类器。
图1 基于极限学习机的中文文本分类框图
鉴于使用传统语义词典识别效果不佳,本文提出了一套语义词典生成的方法。该语义词典基于输入的语料库训练,训练文本进行文本预处理后首先进行词性选择,选取动词、名词、形容词、副词共同组成,保证了语义词典的稳定。通过底层特征选择的方式对语义词典做进一步的筛选,将最能代表文本类别属性的词选出,保证了语义词典的高效性。需要说明的是,本文提出的语义词典构建过程都在训练阶段完成。
本文方法认为除了形容词,名词、动词和副词都能在一定程度上体现文本的属性类别,因此将这几种词性进行组合对比。经过多组对比后,最后选择了名词、动词、形容词和副词共同作为基准词,认为这样能最大程度地保证语义词典的覆盖面,同时保留了文档的语义信息。相比选择所有词作为特征词的方法,词性选择在一定程度上降低了语义词典的维度。
在进行文本表达的过程中发现,如果选择所有的基准词作为底层特征,依然会得到一个高维度的特征空间,特征的维度达到了几万维。这样高维度的底层特征会给后续文本分析模块带来巨大的负担,不仅高维度的特征带来训练时间的增加,同时许多分类器无法适应如此高维度的特征空间,使分类的性能受到一定的影响。由于真正对文本分类有积极意义的特征只是少数,所以本文在词性选择基础上采取了特征选择过程。特征选择过程使用卡方统计为评估函数,为每个类别下的每个基准词都进行计算得到其对应的CHI值,然后对这个类别下的所有基准词基于CHI值进行降序排序,选择出最大的K个基准词。K的取值根据语料的大小来确定,不同语料的值不同。最后将多个类别下选择的多组K个基准词进行合并,得到最终的特征词用于构建语义词典。通过这两个过程的选择,语义词典的维度也从开始的几万维降低到几千维,在一定程度上缓解了高维度特征带来的训练时间的增加和分类器分类性能下降的情况。
本文采用空间向量模型作为底层特征的文本表达。向量空间模型是一种简便、高效的文本表示模型。向量空间模型的形式化表达如下:
对于给定的文本D=D{t1∶w1,t2∶w2,…,tn∶wn},其中ti表示第i个特征项,wi表示特征项ti所拥有的权重,n为特征项的总数,在本文中指语义词典的维度。
在一篇文档中,选取的不同特征词对一篇文档的类别属性贡献应该是不相同的。例如形容词的类别属性贡献可能比较大,副词可能略小于形容词。为此,本文认为有必要对经过选择的特征词进行加权,对文本类别属性贡献较大的特征词赋予较大的权重,类别属性贡献较小的赋予较小的权重。故本文采用TF-IDF计算每个特征向量中的每个权重。
TF-IDF算法是自然语言处理领域常用的一种特征权重计算方法,相比单独依靠词频统计的方法,它将特征词频和逆文档频率结合起来用于计算某个特征词的权重,TF-IDF对于类别表征能力的评判更加全面。词频(term frequency,TF) 指某个给定的词语在文档中出现的频率。逆文档频率(inverse document frequency,IDF) 是以包含特征词的文档数为参数构造特征权重函数,衡量的是词语的普遍重要性。将TF与IDF结合起来使用可以衡量词语对某个文档的重要性,两者相乘就形成了TF-IDF权重。为了消除不同文本长度对于特征词权重的影响,本文还对TF-IDF值进行了归一化处理。
中层特征的文本表达以词向量为基础,词向量通过神经网络对语料库进行训练,将语料库中的每个词语都映射成一个指定长度的向量。这个向量的维度一般在几十维到几百维,相比于One-hot表示法,该向量的维度有了极大的降低。词向量可以摆脱传统表示法中词语之间独立的情况。本文采用skip-gram模型获取词向量,同一个词在不同的输入语料下学习到的词向量是不同的,skip-gram模型是一个自学习模型,在自主学习过程除了几个参数的选择,人为干预很少。
为了获得文档的整体表达,本文在得到文档词向量的基础上提出了池化(Pooling)表示法。使用池化表示法既保留了特征词之间的语义相似性,又在一定程度上降低了底层特征的向量维度,提高了文本识别精度。图2所示为本文提出的池化方法示意图。中层特征表达的详细步骤流程如下:
1) 假设文本包含x个词语,经过底层特征提取后剩下t个词语(即词典个数为t),则这条文本表示为T=(w1,w2,…,wt),其中每个单词的词向量为v(wi),每个词向量有m维特征;
2) 将文本T中的词向量等分成N份,形成N个词向量组,每个组里面对应有t/N个词向量;
3) 对于每个词向量组进行以下操作:将组内所有词向量进行累加,最终每个词向量组都形成一个特征向量v(z),该特征向量的维度也是m;
4) 将N个词向量组的特征向量串联起来就得到整个文档的特征向量v(z1)‖v(z2)‖…‖v(zN),其中‖表示串联的符号。
图2 池化方法示意图
为了进一步提高特征的表达能力,本文提出了融合特征表达,该方法的主要思路是将之前模块提取到的底层特征和中层特征进行融合,其融合策略是采用权重组合,公式为∂L‖(1-∂)M,其中:L表示底层特征向量;M表示中层特征向量;∂为底层特征的权重,设置为0.2;‖表示串联的符号。该融合特征思路简单,能有效地结合不同尺度下的特征表达。实验结果证明,该融合特征可提高分类精度。
ELM是一种单隐层的前馈神经网络[21]。该网络由输入层、隐藏层、输出层三部分组成,输入层到隐藏层、隐藏层到输出层之间都是全连接。其中输入层x表示样本特征向量,隐含层包括L个隐含神经元,一般情况下L远小于N(样本个数),输出层输出m维的向量(对应于文本类别的个数)。与传统神经网络不同的是,ELM输入层和隐含层之间的权重随机生成,只需考虑隐藏层和输出层之间的连接权重。ELM优化过程不仅要使误差最小,也要使隐藏层输出权值达到最小,这样模型的泛化能力就会最好,优化目标方程如下:
Minimize: ‖Hβ-T‖2and ‖β‖
(1)
其中,
H为针对多个训练样本x=[x1,…,xn,…,xN]的隐藏层输出矩阵。此处的x表示N个训练样本文本表达的集合,H的大小由训练样本的数量N和隐藏节点的数量L决定,通常L远小于N。T是训练样本集形成的标签矩阵,每一行代表一个样本,采用one-hot的形式存储。
β是隐藏层和输出层的连接权重。根据ELM理论可以求出式(1)中β的解析解:
虽然ELM算法与传统的神经网络、SVM相比表现出运行速度快、泛化能力强等特点,但是本文需要解决二元甚至三元的文本类别分析,而在三元文本分析中特征面临着高度线性不可分。因此,本文将核函数引入到ELM算法中进行改进,既Kernel ELM[22]。其主要思想是利用核函数先将这些特征映射到高维特征中,使得各个类别的特征在高维空间中不再那么高度非线性。
核函数定义为
K(xi,yj)=h(xi)·h(yj)
(5)
在ELM中,核技术就是将显式的激活函数G(a,b,x)转换为隐式的映射函数K(xi,yj)。定义内核矩阵求解输出值为
ΩELM=HHT∶ΩELMi, j=
h(xi)·h(yj)=K(xi,yj)
(6)
则Kernel ELM输出可以表示为
从式(7)可以看出,不再需要输入层到隐藏层之间的激活函数集合h(x)的具体值和隐藏层的节点个数L,而只要知道核函数K(xi,yj)的具体形式和输入的样本个数N就可计算出一个文本表达x的表达值。也就是说,从网络模型上看,相比于传统的ELM,Kernel ELM固定了网络结构而不再受隐藏层节点数的干扰,提高了Kernel ELM的稳定性。更为重要的是,引入核函数后的原始特征数据会被映射到高维特征空间中,从而增大了特征间线性分隔的概率,使得分类器易于以擅长的线性算法去检测特征间的非线性关系。
本文选定高斯核函数作为映射函数,即:
K(u,v)=exp(-γ‖u-v‖2)
(8)
其中,γ为高斯核平滑参数。结合式(7)和(8)可知,KernelELM算法的性能依赖于正则化系数C和高斯核平滑参数γ。训练过程的算法示意图见图3。
算法Kernel ELM训练过程输入:训练样本集{(xi, yi)i=1,…,N},核函数K(xi, yj),常数C,高斯核平滑参数γ;输出:(I/C+ΩELM-1T1.根据公式(5)~(6)求出ΩELM;2.根据公式(5)~(7)求出(I/C+ΩELM)-1T;3.保存(I/C+ΩELM)-1T;
为了提高识别精度,本文提出了集成ELM分类模型。该模型主要思路是分别针对不同的特征训练分类器,最后综合3个分类器的输出得到最后的分类结果。图4所示为本文提出的集成分类器方法。
该算法由如下步骤组成:
1) 分别提取文本样本的底层特征、中层特征和融合特征;
2) 将3种特征分别送入训练好的基于底层特征的文本分类模型、训练好的基于中层特征的文本分类模型和训练好的基于融合特征的文本分类模型;
3) 将3个分类模型输出结果向量(其中向量每一维对应其中一类的文本类别,每一维的数值代表文本样本属于该文本类别的概率)相加,得到最终输出向量;
4) 找到最终输出向量中数值最大的量,其所对应的文本类别即需要判定样本的文本类别。
图4 集成分类器方法示意图
为了验证提出的文本分类算法,本文将设计的算法运用于电网档案管理系统中的档案分类任务。实验所需数据集由国网安徽省电力有限公司提供。该数据集提取了2015—2016年国网安徽省电力有限公司各部门归档的文件信息的汇总条目。整个数据集共包括6 713条条目,每一条条目包括序列号、文件名、文件归档部门3个信息。该任务的具体要求是:只需根据文件名完成对文件归档部门的判定。这个任务本质上是一个多类文本分类问题。数据集共涉及22个部门,每个部门对应的文件数如表1所示,可以看出该数据集分布不均衡。其中,基建部收集了845条文件,而运营监测(控)中心只收集了15条文件。为了保证语料库的多样性,本文在训练阶段所用的语料库除了这些档案的文件名之外还有档案对应的文件内容。
表1 各部门档案条数
实验所用的硬件配置为Intel(R) Pentium(R) G2030,CPU频率为3.0 GHz,内存为8 G。在实验过程中,底层特征的所有步骤以及中层特征的学习提取都是通过JAVA语言实现完成,分词以及词性标注处理引用了ICTCLAS的Jna-4.0.0的JAR包。最后的分类模块在Matlab R2012a上实现。对照试验中,SVM算法和基于核的SVM(Kernel_SVM)算法使用台湾林教授提供的SVM软件包[23]。
本文采用分类精度(accuracy)指标来验证提出的基于极限学习机的文本分类方法(本文提出的方法在下文中简称为Kernel_ELM)。使用的评价指标的计算公式为:
分类精度=(被正确分类的样本个数/样本总数)×100%
采用5折交叉验证方式,最后记录5次实验的平均精度和标准差,精度越高,标准差越小,则该算法性能越好。
2.4.1 底层特征维度对模型性能的影响
底层特征采用VSM模型进行表示,所以底层特征维度与语义词典的个数有关。语义词典构建经过词性选择和底层特征选择两个过程,其中涉及的可调参数为底层特征选择过程中的K值。在底层特征选择过程中,使用卡方统计量,为每个类别下的每个词都进行计算得到一个CHI值,然后对这个类别下的所有词基于CHI值进行排序,选择出最大的K个词,K的取值会直接影响底层特征维度和模型的性能。实验分别设置K值为100、150、200、250、300,分类器采用Kernel ELM。为客观反映不同K值下模型的性能,本文分别采用寻优策略得到不同K值下模型的最优结果(即找到不同K值下对应分类器的最优正则系数C和高斯核平滑参数γ)。从表2可以看出,K值为250时模型达到最优,但是K值取200时的结果与K值取250时的差距很微弱。为了平衡精度和时间效率,实验中将每个类的K值设置为200。
表2 不同特征词数下的分类精度
2.4.2 词向量维度对模型性能的影响
中层特征中词向量的维度是非常重要的参数,直接影响中层特征文本表达的维度,因此本节将对词向量的维度m对模型性能的影响进行验证。实验中分别将词向量的维度设置为50、100、200、300,训练模型采用Skip-gram,训练过程中上下文窗口大小选择为5,采用Hierarchical Softmax算法进行采样,采样阈值设置为10-4,这样如果一个词语在训练语料中出现的频率越高,就越会被采样。实验中将池化表示法中的N值统一设置为10。实验结果如表3所示,表明词向量维度越高,效果越好,但是识别精度会随着维度上升增幅逐渐减小。表3显示维度200和维度300之间的精度差距非常微小,但是维度300以下所需的训练时间和测试时间却大大超过维度200下的情况。综合考虑时间效率和精度,本文将中层特征中词向量的维度设置为200。
表3 不同词向量维度下的分类精度
2.4.3融合特征及集成分类器对模型性能的影响
验证本文提出的融合特征和集成分类器策略对模型性能的影响。表4分别是底层特征、中层特征、融合特征和集成分类器对应的分类精度。从表4可以看出,本文提出的融合特征的分类精度为96.11%,比中层特征提高了0.99%,而采取集成分类器策略的分类精度为97.81%,高于采用一种特征的分类精度,证明本文提出的融合特征和集成分类器策略可显著提高分类性能。
表4 不同特征下的分类精度
2.4.4 整体性能的比较
将本文提出的方法与传统方法进行比较,本文选取的对比模型为基于SVM的模型和基于kernel_SVM的模型。为保证公平性,所使用的特征保持一致,集成策略也保持一致。表5展示的是不同方法下得到的分类精度。其中,单独SVM、单独Kernel_SVM和单独Kernel_ELM表示只使用融合特征,集成SVM、集成Kernel_SVM、集成Kernel_ELM表示采取本文提出的集成策略。可以看出,本文提出的方法在单独使用融合特征时和采取集成策略时都比SVM模型和Kernel_SVM模型的精度高。另外,集成策略对于SVM基本没起到作用,对于Kernel_SVM的作用也很微弱,但是集成策略却在本文采用的Kernel ELM分类器上表现出很好的性能提升。这也验证了本文提出方法的优越性能。
表5 不同方法分类精度比较
本文提出了一种基于极限学习机的中文文本分类方法,采用单隐层神经网络作为分类器并使用ELM算法来训练分类器,有效平衡了模型性能和学习效率。为提高精度,本文分别针对不同的特征训练分类器,并综合3个分类器的输出得到最后的分类结果。在电网档案管理系统中的档案分类问题中验证本文方法,实验结果表明:本文所提出的算法取得了97.81%的分类精度,相较于基于Kernel SVM的方法提高了1.26%;同时算法具有极低的计算复杂度,只需450 s就可完成模型的训练,相比基于Kernel SVM的方法速度提高了38倍;在测试阶段,识别一张图只需要3.76 ms,相比基于Kernel SVM的方法速度提高了10倍。因此,本文所提出的方法适用于海量数据下的中文文本分类场景,具有重要的研究意义和推广价值。