刘测 韩家新
摘要: 文本分类是根据文档内容将文档分类为预定义类别的过程。文本分类是文本检索系统的必要要求,文本检索系统响应用户的查询检索文本,而文本理解系统以某种方式转换文本,如生成摘要,回答问题或提取数据[1]。本文中将运用朴素贝叶斯、支持向量机、K最近邻、fastText这4种方法来进行新闻文本分类,并比较了各种算法的分类性能、复杂度等方面的优缺点,最后评述了精确度和时间2种分类器常用的性能评价指标[2]。
关键词: (School of Computer, Xi'an Shiyou University, Xi'an 710065, China)
Abstract: Text classification is the process of classifying documents into predefined categories based on the content of the documents. Text classification is a necessary requirement for a text retrieval system. A text retrieval system responds to a user's query to retrieve text, and a text understanding system converts text in some way, such as generating a digest, answering a question, or extracting data[1]. This paper applies such four methods as Nave Bayes, SVM, KNN and fastText for news text classification, then compares the advantages and disadvantages in classification performance and complexity, as well as other aspects among the aboved methods. Finally, the paper comments on performance evaluation indicators commonly used in two classifiers, which are the accuracy and time[2].
引言
为大量数据集建立快速准确的分类器是数据挖掘和知识发现的重要任务。随着互联网的飞速发展,网上涌现海量的文本文件,而且每天都在不停增长[3]。而这些文件中包含着大量容易获取的信息。从这些文本中获取信息,人工的方式耗时且准确率低,因此文本分类技术即已尤显其在该类技术研发上的基础高效作用。本文中运用了4种方法对文本进行分类处理,数据集是从网易新闻爬取的各类主题文本集,运用的方法具体涉及了朴素贝叶斯(Nave Bayes, NB)、支持向量机(Support Vector Machine, SVM)、K最近邻(K-Nearest Neighbor, KNN)和fastText,并最终针对4种方法在精确度和时间消耗性能方面展开了研究比较与分析。
1文本分类
分类问题在数据库、数据挖掘和信息检索领域已经获得了日趋广泛的研究应用。这里,关于分类问题的定义可表述为:
研究中有一组训练记录D={X1,…,Xn},每个记录都具有对应的从{1…k}索引的k个不同离散值集合中的类别值的标记。训练数据将用于构建分类模型,并将基础记录中的特征与类别标签之一相关联[4]。对于未知类别的给定测试数据,使用训练模型来预测此实例的类别标签。在分类问题的硬版本中,特定的标签将明确分配给实例,而在分类问题的软版本中,概率值将分配给测试实例。分类问题的其它变化允许对不同类别的选择构建排序测试实例,或允许将多个标签分配给测试实例[5]。同时文本分类过程需要对文本数据进行分词、去停止词等预处理,接着将选用特征提取和特征加权,而后提送训练环节得到分类器后,再对测试集开启测试,最后是对分类器性能进行评估。
2相关技术
2.1文本预处理
在本文实验中,文本预处理分为2步。对其内容可阐释如下。
(1)分词。将汉字序列切分成单个独立的词,实验中使用的是日文分词器MeCab。该分词系统是基于条件随机场的模型,解析精度很高。据分析可知,中文和日文有着相似的分词需求,因此MeCab 对于中文处理而言,则呈现出良好的借鉴价值。
(2)去停止词。停止词就是那些没有真实意义,或者当句子中去除这些词,也不会改变句子含义的词,例如:“的”、“了”、“啊”等。将其去除后,可以使文档中词的数量大幅减少,这样在实验中数据规模和计算时间均将达到显著降低效果[6]。
2.2SVM
在机器学习中,支持向量机(Support Vector Machine,SVM)是一个有监督学习模型,能够很好地解决小样本、非线性及高维模式识别等问题,并能够推广应用到函数拟合等其它機器学习问题中[7]。现在,就已成功地运用于分类和回归研究中。SVM的核心思想,旨在找到一个线性分类的最佳超平面,对此将给出如下的数学表达式:fx=xwT+b=0(1)为了确定w和b,首先通过2个分类的最近点,推导得到f(x)的约束条件;有了约束条件,就可以运用拉格朗日乘子法和KKT条件来探寻问题解答,此时该研究就转换为求解拉格朗日乘子αi和b。对于异常点的情况,加入松弛变量ξ进行处理;这里就使用SMO来求得拉格朗日乘子αi和b。在分类器中可以忽略αi=0的情况;同时也不用关注w的运算求值。至此,研究可以使用拉格朗日乘子αi和b作为分类器的参数,而对于非线性分类的问题,一般多会采用映射到高纬度、以及调取核函数的具体方法[8]。
2.3fastText
在文本处理领域,深度学习已掀起了研发热潮。但是因其在训练以及测试时间上的局限,也就限制了深度学习在大数据集上的拓展应用。fastText的出现正好弥补了这一不足,不仅在精度上可以和深度学习相媲美,而且时间上也比深度学习快了多个数量级。
fastText的架构和word2vec中的CBOW的架构类似,对其实现训练就是一个生成Huffman树的过程。在训练样本时,根据每个类别出现的次数设置权重,再重新构建Huffman树,出现次数多的类别的样本,路径就短,相反路径就长。用输入层中的词和词组构成特征向量,再将特征向量通过线性变换映射到隐藏层,隐藏层通过解出最大似然函数,然后根据每个类别的权重和模型参数构建Huffman树,将Huffman树作为输出。本文设计的3层模型架构如图1所示[9]。
2.3.1训练模型的过程
当分类的数量堪称巨大时,线性分类的计算量也趋于可观,运行的时间复杂度即为O(kh)。其中,k表示分类的数量,h表示文本的密度。
为了降低时间复杂度,fastText使用基于霍夫曼编码的分层softmax将时间复杂度降低到O(hlog2(k))。
fastText使用一个低维度向量来对文本进行表征,通过汇总文本中出现的词向量来演绎获得。在 fastText 中,一个低维度向量与每个单词都相关,隐藏融合在不同类别中的所有分类器中进行共享,使得文本信息能够在不同类别中共同使用。在 fastText中也使用向量表示单词 n-gram来将局部词序考虑在内,这样就可在相当程度上提高fastText的计算效率[11]。
3实验
3.1数据集
实验中的数据是从网易新闻上爬取,数据涵盖时事、星座、经济、教育、时尚、游戏、房产、彩票、科技、体育,总共10个类别,每篇新闻文本数据中都包含词汇、停用词、数字和非文字字符。对于本次实验,每篇新闻都是通过文本预处理的。每个类别撷取了2 000篇新闻数据。在Nave Bayes、KNN、SVM的实验中,则将将数据分成10个文件夹,每个文件夹统指一种新闻类别,每种新闻类别中是2 000篇同类的新闻文本。考虑到上述3种方法都是监督学习的分类算法,如此梳理数据后,每个文件夹的名字就表示新闻的类别,相当于标签。而在fastText的实验中,研究将所有的新闻文本数据存在一个TXT文件中,但在每篇新闻的末尾加上诸如(_label_house,_label_affairs,_label_edu,……)形式的标签。在本次实验中,分别计算了各种方法在文本分类中的精度和时间,比较各种分类方法的优劣。并在实验中控制特征数的数量,通过特征选择获得5个新的数据集。进而对照Nave Bayes、KNN、SVM分类方法在不同特征数的情况下的分类性能,最终还将与fastText的分类效果进行比较。
3.2实验结果
在本次实验中,使用监督学习算法来分析网易新闻的文本数据。选择了3种分类算法,也就是NB、KNN、SVM。而将fastText分类的实验结果与这些方法通过比较以判定评估算法性能。在实验过程中,使用Python编程来部署操控实验。对于分类算法的配置,KNN中的距离测量类型定义为欧几里得距离。所有分类方法都在5个数据集上进行模拟,每个方法对每类数据迭代运行5次设置为选择最佳精度。所有方法将新闻文本分为10组,可以计算出分类方法对每类文本的结果分类精度和全部文本的分类精度。将fastText的最终分类结果与NB、KNN和SVM的设计输出进行比较,实验结果可见表1。
在NB、KNN和SVM之间,对于具有10 000个特征的数据集,SVM可以达到77.4%的最佳精度,KNN表现最差、只有63.7%的精度。但在时间上却是Nave Bayes占据首位。此外,对于具有13 000个特征的数据集,SVM也可以达到77.3%的最佳精度,时间上还是将首推Nave Bayes为最优。而SVM可以在具有18 000个特征和21 000个特征的数据组分别取得78.2%和78.8%的分类精度。然后,对于具有全部66 352個特征的数据集,Nave Bayes可以实现80.2%的最高精度,且仅需耗费了0.136 s,用时最少。图1就显示了从所有5个数据集中获得的精度值的平均值。而且,实验结果还表明,对于网易新闻文本数据,在NB、KNN和SVM这3种方法中,SVM已经运行创造了相对最佳平均准确率,数值可达78.14%。但在本次实验中通过运用fastText来进行分类,比其它3种方法的精确度都要高,在精度上提升至95.35%,而且时间也更为迅速,fastText在文本分类方面有着很好的表现。表2即给出了fastText在66 352个特征时的分类效果。图2又进一步研究了应用于5个数据集的每种分类算法的运行时间。从图3则可以看出,当特征数量减少时,所有算法的运行时间都随即有所降低。
4结束语
在本文中,研究爬取了网易新闻的各类新闻文本数据,总共2万余条数据组成实验数据集,并对每条文本数据进行标记,分成10类小的数据集。运用了SVM、KNN、NB和fastText这4种分类方法对部分数据进行分类,并对各分类方法的结果提供了运行性能上的比较分析,找出比较优异的分类方法。通过本次实验,研究发现fastText在处理文本分类时,不论在精确度、还是在时间上都较其它3种分类方法有更加突出的表现。而且在分类过程中也还发现,文本特征的数量对实验的精度和时间也有一定的影响,因此在未来工作中,则将在特征选择上增加研究投入,以期能够显著提升分类研究的最终结果精度。
参考文献
[1] 薛春香,张玉芳. 面向新闻领域的中文文本分类研究综述[J]. 图书情报工作,2013,57(14):134-139.
[2] 奉国和. 文本分类性能评价研究[J]. 情报杂志,2011,30(8):66-70.
[3] 靳小波. 文本分类综述[J]. 自動化博览,2006(S1):24,26,28,29.
[4] 张征杰,王自强. 文本分类及算法综述[J]. 电脑知识与技术,2012,8(4):825-828,841.
[5] AGGARWAL C C, ZHAI Chengxiang. A survey of text classification algorithms[M]. Mining text data. Boston, MA:Springer, 2012:163-222.
[6] 陈祎荻,秦玉平. 基于机器学习的文本分类方法综述[J]. 渤海大学学报(自然科学版),2010,31(2):201-205.
[7] 崔建明,刘建明,廖周宇. 基于SVM算法的文本分类技术研究[J]. 计算机仿真,2013,30(2):299-302,368.
[8] PAL M, FOODY G M. Feature selection for classification of hyperspectral data by SVM[J]. IEEE Transactions on Geoscience & Remote Sensing, 2010, 48(5):2297-2307.
[9] JOULIN A, GRAVE E, BOJANOWSKI P, et al. Bag of tricks for efficient text classification[J]. arXiv preprint arXiv:1607.01759,2016.
[10]机器之心. fastText原理与应用 [EB/OL]. [2018-01-26]. http://www.sohu.com/a/219080991_129720.
[11]王艺杰. 基于Fasttext的防控目标分类实现[J]. 中国公共安全(学术版),2018(1):29-32.
[12]MANEVITZ L M, YOUSEF M. One-class svms for document classification[J]. Journal of Machine Learning Research, 2001, 2(1):139-154.