●王万起 田中雨 (辽宁工程技术大学 辽宁阜新 123000)
董兰军 (中国科学院大学 北京 100190)
信息技术的快速发展导致文本数据呈级数增长,网络成为人们获取数据的重要途径。面对海量信息资源,为了将无序、离散的数据进行分类排序,快速、准确、全面地找到用户所需信息,满足其个性化需求,使得文本分类成为自然语言处理领域的研究热点,产生了多种分类模型,如朴素贝叶斯(Naive Bayes,NB)、K最近邻(K-Nearest Neighbor,KNN)、支持向量机(Support Vector Machine,SVM)、逻辑回归(Logistic Regression,LR) 等。在文本分类过程中,文本特征化后通常具有高维性和不平衡性的特点,导致传统的分类算法准确率不高。为了解决高维特征的问题,通过特征降维,进行特征抽取,利用潜在语义模型,将分散在众多原始特征中的分类信息或鉴别信息集中于少量新的特征中,提高分类算法的准确率[1]。
在自动分类方法中,泛化能力一直是机器学习关心的一个根本问题,由于集成学习(Ensemble Learning)可以有效地提高泛化能力,国际机器学习界的权威Dietterich T G将集成学习列为机器学习四大研究方向之首,即通过集成学习方法提高学习精度、扩大学习规模、强化学习和学习复杂的随机模型[2]。
LDA(Latent Dirichlet Allocation)模型是目前应用较为广泛的一种文档生成模型,它认为每篇文章具有多个主题并且每个主题又分别对应不同的词语,类似于标签的理解过程,属于一种使用了词袋模型构建词向量的非监督的机器学习模型。LDA模型经过长时间发展已经衍生出了不同的主题聚类方法及分类算法。目前基于LDA模型的文本分类研究大概有如下几种。一是基于聚类算法和LDA模型展开的文本分类研究,它的特点是通常将LDA模型与其他聚类算法结合起来生成新模型,以更好地实现主题发现研究。二是基于话题演化的思想,有学者假设LDA模型中的超参数按照时间变化,并且前面一段时间的变化决定后面一段时间的超参数变化,进而展现出生成的主题随时间变化的特点。三是基于Applications-LDA进行的研究,许多学者根据现实需要和在网络中出现短文本数据所对应的平台特点,逐渐开发出了具有针对性的Applications-LDA模型,通过对数据中产生的主题变化来建模,实现对特定平台中文本流的主题挖掘,较著名的有“Twitter-LDA”等。四是基于s-LDA模型开展的研究,当每篇文档关联一个服从正态分布的实值响应变量时,代表该文档的类别标识,采用EM算法进行最大似然参数估计能够处理该类文档。五是基于半监督分层的LDA模型研究,该模型的思路为在文本生成过程中融合有标签的主题,获取关于主题的层次结构,进而提出更优化的学习策略。
因此,本文首先根据LDA模型特征提取方法考虑数据输出,在原来文本的输入文本中对关键词分配相应主体,但由于留下了非关键字,影响了分类的效能并增大了主体分布概率。其次,针对从LDA模型提取样本以解决整篇文本线性能力偏差的问题,提出了使用关键词提取方法提取有效能的词语。再次,对比利用过滤方式对LDA模型进行改善后的效率,重点描述了使用关键词进行主题拟合及如何将其实现的过程。最后发现MI算法、LSI算法和LDA主题模型中较有效率的是后者,并在一些标准数据集上分别进行了对比和讨论,试图找出LDA模型分类算法性能提升的思路。由于集成学习利用多个分类器决策结果的可信度高于单个分类器决策结果的思想形成一种新的文本分类模式,现在已有多种集成学习算法, 如Boosting、Bagging、Random Subspace算法等。本文尝试通过LDA模型进行文本降维,提取“文档—主题”矩阵表示文本特征,利用朴素贝叶斯、逻辑回归、支持向量机、K近邻算法4种传统分类算法并根据特征矩阵进行文本分类,依据平均F值比较分类效果。同时将传统分类算法作为基分类器,分别放于Addboost、Bagging、Random Subspace三个集成学习框架中,作为同质集成,通过集成学习框架进行分类性能测试,并分析在利用LDA模型表示文本特征的情况下,传统分类算法的性能以及集成学习算法是否能提高传统分类算法的分类准确度,以此获得最优的分类算法,为之后进行与主题模型相关的文本分类工作提供一定的参考。
分类算法与集成学习的目的都非常明确且直接,属于数据分析模式,能够提取描述重要数据类的模型和未来数据大概呈现出来的趋势。其中,分类算法主要适用于预测未来的分类标号或者离散值,而集成学习主要用于建立连续函数模型,对目前的资源进行整合学习。分类算法一般包含两个基本过程,首先需要建立模型来描述预定的数据类集或者概念集,通过分析数据库元组来对模型进行构造。其次是利用模型进行分类,在评估模型的准确率后对类标号为止的数据源组进行分类。目前分类算法和集成学习主要有决策树、统计方法、机器学习方法和神经网络等。
20 世纪50 年代末,Lunhn H P首次提出将词频统计思想用于文本自动分类的研究。20 世纪90 年代以后,研究者将机器学习算法用于文本自动分类,文本分类有监督学习的过程,经历了“输入文本—预处理—特征表示—选择分类算法—输出结果”5个阶段,其过程如图1所示。文本分类是一个识别文本模式特征的过程,实验样本包括训练集和测试集两部分,通过训练过程为分类器提供测试,进而在分类过程中,使用学习过程中得到的分类器对测试集进行分类,并输出测试文本所属类别[3-4]。本文应用的分类算法为朴素贝叶斯、逻辑回归、支持向量机、K近邻算法。
图1 文本分类过程
(1)朴素贝叶斯算法(Naive Bayes)。朴素贝叶斯方法由Maron和Kuhns在1960年提出,因其具有简单、快速和高准确率等特点被广泛应用于分类任务中[4-5]。
(2)逻辑回归(Logistic Regression)。逻辑回归主要用于估计某种事物的可能性,如用户购买某商品的可能性,病人患有某种疾病的可能性等,因此是应用较为广泛的机器学习方法。
(3)支持向量机(SVM)。SVM是Vapnik于20世纪90年代提出的一种基于统计学习理论的分类算法。SVM算法是建立在统计学习理论VC维理论和结构风险最小化原理基础上的一种新机器学习方法,在解决小样本、非线性和高维模式识别问题中性能较优,且泛化能力较好,在很大程度上克服了“维数灾难”和“过学习”等问题,因此,SVM被广泛应用到文本分类、图像分类与识别等众多领域中[5-6]。
(4)K近邻算法(KNN)。K近邻算法核心思想即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例中的多数属于某个类,就把该输入实例分类到这个类中[7]。
综合现有研究文献来看,对于文本分类普遍认同的是:在已经进行了定义的某个分类集合下,将集合内没有被识别到属于哪种类别的文本,根据一定的规则将这部分文本内容自动识别到一个或几个类别的过程中。随着信息技术的发展,对于文本分类方法的研究也在不断深入,不断发展。目前文本分类也得到了广泛应用,在Web文档自动分类、数字图书馆等诸多领域取得了很多应用成果。
集成学习可以提高分类器的泛化性能,是机器学习领域的一个重要方向,集成学习能利用子学习器的差异性显著提高学习系统的泛化能力,能实现弱学习器向强学习器的转化,本文使用的集成学习算法为AdaBoost、Bagging、Random Subspace。
(1)AdaBoost算法。Boosting算法是用来提高学习算法的准确度,通过构造一个预测函数序列,以一定方式将它们组合成一个预测函数,最终将弱学习算法提升为强学习算法[6][8]。
(2)Bagging算法。Bagging算法是由Breiman提出的一种集成学习方法,通过可重复取样得到不同的数据子集,使得在不同数据子集上训练得到的个体学习器具有较高的泛化性[7][9]。
(3)随机子空间(Random Subspace)。随机子空间由学者Ho在1998年提出,是一种有效的基于特征划分的集成学习方法[8][10]。
综上所述,集成学习是多个机器学习模型输出组合在一起的过程,这种方式能够使学习系统的泛化能力得到显著提升,通常比使用单个模型更具优势。但是它也存在一定的弊端,随着学习机数量的增加,会使集成学习机的预测速度明显变慢,它运行所需的存储空间也随之加大。在数字图书馆领域,不仅对查全率有要求,对现在的个性化信息服务来说,数字图书馆服务与文本挖掘联系紧密,更要求查准率,但是查询速度又不能过慢,以免影响用户体验。因此,本文对文本挖掘目前的算法进行集成实验,试图探索一种在图书馆服务中比较适用的分类优化算法。
图2为本文的实验过程图,首先构建涵盖多个主题的实验文本,利用LDA模型进行文本降维和特征提取,获取文档—主题概率矩阵,每一行表示一篇测试样例,每一列表示提取的某个主题,数值表示主题对一篇测试样例的支持度。抽取文本集中10%的数据作为训练集,并对训练集中的文本进行类别标注,进而选择分类器,包括4种传统的分类算法和3种集成学习算法。首先以已标注的训练集为基础,通过分类器找出文本类别与文本特征之间的关系;然后利用这个关系模型对测试集进行类别的判断;接着在使用集成学习算法的过程中,先选择一种集成学习算法,进而分别选择4种传统分类算法置于其中进行训练;最后根据平均F值比较各分类器的性能,在分析利用LDA模型进行文本降维、主题提取后,引入集成学习算法判断是否能提高分类的准确率,从而得到最优的分类算法。
图2 文本分类实验过程图
本文的实验数据来源于Web of Science的科学引文(SCI-EXPANDED)数据库,选取了6个学科进行分析,分别为:图书情报学、计算机科学、生命科学、市场营销学、材料学、考古学。选择该6个学科类别是因为这6个类别的实验数据较容易获取,且多属于交叉学科,分析价值高于纯粹的学科,如图书情报学常囊括有图书馆学、情报学和档案学三个方向。在6个学科类别中选择一个研究主题进行检索,每个主题中选择被引频次最高的100篇文献作为实验数据集,具体检索的主题如表1所示,分别导出文献的题录数据[11]。
表1 实验数据汇总表
抽取文献的题目和摘要,将每篇文献放于一个文本文档中,对每篇文献按主题进行标号,便于在后期测试集抽取时进行类别标记,以更好地实现数据预处理的数据清洗步骤,例如,去除数字、停用词等,使语料库更纯净,利用topicmodels包实现LDA的主题建模,获取文档—主题矩阵[10-11]。根据文献主题分类,在每个主题下随机抽取10篇文献,6个主题共60篇文献作为训练集,剩下的540篇作为测试集,利用Weka 3.8内置的分类算法进行性能测试。Weka作为一个公开的数据挖掘工作平台,集合了大量机器学习算法,能够对数据进行预处理、分类、回归、聚类、关联规则以及在新的交互式界面上可视化[12],并通过选取不同的分类算法和集成学习算法,输出平均F值判断分类器性能。
在利用LDA模型进行文本降维和特征提取过程中,主题抽取的质量直接影响主题演化的效果,应用LDA的最大问题是无法确定最优主题数目,而主题数目的确定对于文献主题抽取至关重要[13]。因此,在实验过程中,应当通过选取不同的主题数目进行主题建模,并根据主题间平均余弦相似度和主题内容进行判断,当主题数目为6时,文献集中隐含的主题能全部显现出来,此时主题模型结构最优[14]。根据每个主题下相关主题词绘制的词云图,如图3所示,其中每个主题包含了20个与该主题最相关的词,每个词的权重大小决定了其在图中的显示比例,词的权重越大,在图中越凸显[15]。此外,我们可以利用Model Selection找到Perplexity又好,topic个数又少的topic数量,可以画出Perplexity vs num of topics曲线,找到满足要求的点来确定LDA的最优主题数[16]。
图3 LDA抽取主题词云图
将4种传统分类算法作为基分类器,利用3种集成学习算法进行训练,通过测试训练集中60篇文献的文本特征和文本类别之间的关系,对测试集中的540篇文献进行分类,并输出平均F值,确定分类器性能[17],统计结果如表2所示;对每种分类算法的平均F值利用Excel绘制折线图,如图4所示。
表2 分类算法平均F值统计表
分析表2发现,从总体上看,针对单个分类算法,通过三种集成学习算法进行训练,其分类准确率高于单个分类器。其中朴素贝叶斯算法的提升较为明显,利用AdaBoost、Bagging、Random Subspace进行集成,其准确率分别提高了 9%、 12%、6%,分类性能表现较好,分类效率稳定;而对于逻辑回归算法,集成学习算法对其性能提升不明显,只有AdaBoost集成后,其准确率提高了6%。同时,在利用逻辑回归,以及集成后进行训练后,其平均F值均低于0.7,这是由于逻辑回归在处理两分类问题时,性能较好,但面对多类特征的分类情况,其性能较差。针对支持向量机,利用AdaBoost、Bagging、Random Subspace进行集成,其准确率分别提高了10%、 5%、 11%,虽然经典的支持向量机算法只给出了二类分类的算法,在处理多分类问题时存在困难,但是通过集成学习,对多个二类支持向量机进行组合,其分类准确度明显提高[18]。对于K近邻算法,利用集成学习进行训练并不能有效提高分类器性能[19],对KNN而言,“同质集成”对其分类性能提升不明显,需要考虑通过“异质集成”的方式,集成多个不同分类器,以提升分类算法准确度[20]。分类效果在不同学科中也存在差异,当学科的交叉性越强时,分类效果越不显著。交叉学科其实没必要对分类进行精确定义,只需要界定分类器大类即可。
分析图4发现,朴素贝叶斯与集成后的朴素贝叶斯分类性能最优,而逻辑回归、支持向量机和K近邻,虽然通过集成学习算法训练,提升了分类性能,但只能实现“局部最优”,有进一步提升的空间。因此,利用LDA模型进行文本分类与特征提取,将朴素贝叶斯算法作为基分类器,并利用Bagging集成算法进行训练,能获得最优的分类效果,其平均F值高达0.91、0.90,实现了“全局最优”,验证了利用主题模型进行文本降维和特征提取的有效性和可行性[21]。
图4 分类算法平均F值对比图
本文基于朴素贝叶斯、逻辑回归、支持向量机、K近邻算法4种传统分类算法以及AdaBoost、Bagging、Random Subspace 3种集成学习算法,从文本分类角度,首先利用LDA模型进行文本降维与特征提取,进而使用Weka,通过构建多个分类器,对一个多学科文献特征集进行分类,并以平均F值为判定标准,对比了不同分类器的分类性能,具体研究内容总结如下。
(1)将朴素贝叶斯、逻辑回归、支持向量机、K近邻算法作为基分类器,并利用 AdaBoost、Bagging、Random Subspace 3种不同的集成学习算法进行训练,与使用单一分类器相比,集成后的分类器性能明显提升。
(2)利用LDA模型进行文本降维与特征提取,通过构建训练集与测试集,将朴素贝叶斯算法作为基分类器。
针对在表示文本分类时维度过大,要兼顾检索准确性和检索速度的需求, 本文利用LDA模型进行文本降维与特征提取,通过构建训练集与测试集,测试不同集成情况的效果对比,能够使我们了解不同场景下每类LDA模型的优劣,本方法易于实现、通用性较强。例如,在数字图书馆领域, 面对海量的图书资源,用户如何快速找到自己感兴趣的内容,图书资源如何得到充分的利用,这些问题都涉及到分类的精度和效度问题,可以参考本文的研究结果。在面对不同的科研问题时可以帮助我们选择合适的文本分类算法,使分类器达到最佳性能,更好地执行分类工作,提高分类精度和效度。
本文的研究也便于集成到现有的个性化图书推荐系统的研究中,为构建基于文本内容分类的个性化推荐服务提供新的思路。在提高查全率、查准率的基础上,兼顾到系统的性能,尽可能地给用户提供更好的使用体验。 后续的工作可以考虑结合利用社交网络的社会化标签, 引导专家或学生对新书进行推荐、评价,作为新书推荐的有益补充。