张鑫
摘要:本文借助R软件,采用来自某新闻媒体官方微信公众号中16个类别的中文文本数据,对所发布内容进行分类。首先对文本进行预处理,主要是进行分词和去除停用词,并加入自定义词典,然后采用TF-IDF权重法提取文本特征,按照训练集与测试集10:3的比例,用支持向量机(SVM),随机森林(RF),Boosting,最大似然的广义线性回归(GLMNET),最大熵(MAXENT)这5种分类算法,对选取的训练文本进行训练得到不同的分类模型,进而对测试文本进行自动分类,并采用5折交叉验证法比较不同算法的分类性能。结果显示Boos~ng分类算法对于该文本的分类准确率最高。
关键词:TF-IDF;支持向量机;随机森林;Boosting;分类模型
一、引言
文本分类是指依据文本的内容,根据某种自动分类算法按照一定分类体系或标准,对大量文本进行判断并归类为预先定义好的一个或者多个类别的过程。本文根据微信公众号发布内容,建立分类模型进行文本自动分类,主要采用支持向量机(SVM)、随机森林、Boosting、最大似然的广义线性回归、最大熵这5种分类技术。
二、描述性统计
從该新闻媒体官方微信公众号的发布内容及其所属类别来看,共发布了780条新闻,其中社会类新闻达到了352条,生活服务类新闻共有118条,健康类新闻有65条。因此,该新闻媒体比较关注有关社会民生、身体健康等方面的内容,较适合普通民众阅读。
词云图是一种信息文本可视化技术,可过滤掉大量的庞杂文本信息,容易看出哪些类型的关键词出现频率最高,从而更容易对其进行分类。以下是对该新闻媒体的几种具有代表性的新闻类型分别作出词云图,可以观察到在某类型新闻中哪些词出现的频率较高,从而更容易对一则新的新闻进行分类。
图1-图5分别展示出的是社会类新闻、生活服务类新闻、房产类新闻、财经类新闻、环保类新闻。但若仅仅通过观察来判断一条信息属于哪一类型,不仅工作量大且正确率有待考究,因此需要通过文本分类算法来规范化新闻的分类。由于篇幅受限未给出词云图。
三、实证分析
3.1文本集整合
在提取文本特征之前,要对文本做预处理,主要是对文本进行分词和去除停用词处理。去除停用词一般通过导入中文停用词表来实现,本文采用的中文停用词表含有4545个停用词。去除这些与主题无关的词以后,按照实际需求选取权重最高的几个词汇来代表该文本的核心内容。此外,在文本信息处理过程中,通过从搜狗细胞词库中选择自定义词典将文本中出现的特殊词加进去,有助于识别文本,提高分类的准确率。
3.2提取特征文本
选取能够反映文本类别的文本特征。各个词汇对文本分类的影响是不同的,一些通用的或者各个类别中都普遍存在的词汇对文本分类的影响很小,去除掉这些没有影响力的词汇,筛选出代表该类的特征项集合。特征提取是文本分类中的关键问题,它对分类精确率有很大影响。文本特征提取有很多方法,其中最常用的方法是通过词频选择特征。通过词频计算出权重。采用TF-IDF(词频率-逆文档频率)法计算权重。
3.3利用训练集训练模型
本文选用某新闻媒体官方微信公众号的发布内容为研究文本,文本类别为时政、社会、头条新闻、视频、生活服务、财经、科技、健康、房产、环保等16类。取600篇作为训练文本,其余180篇作为测试文本。在模型训练时,对训练文本进行词频统计,得到词频统计矩阵,构造不同算法对应的分类器模型。分别是支持向量机(SVM),随机森林(RF),Boosting,最大似然的广义线性回归(GLMNET),最大熵(MAXENT)这5种分类算法。
3.4利用测试集对模型测试
对于选取的180篇测试文本,根据不同的分类器模型,对测试文本进行自动分类,以支持向量机和最大熵算法为例,得到的分类结果见表1。(蓝字标注的表示分错的类别)
进一步,针对这两种算法的180篇测试文本分类结果及各个类别正确分类和错误分类的文本数。对应计算出各类别的正确率。
在支持向量机SVM算法下,社会和活动这两个类别分类的正确率相对较高,分别为81%,68%。在最大熵MAXENT算法下,社会、时政、活动、生活服务这四个类别分类的正确率分别为63%,67%,78%,66%。
3.5分类性能的比较
针对五种分类算法,采用5折交叉验证,得到分类准确率Accuracy。支持向量机(SVM)、随机森林(RF)、Boosting、最大似然的广义线性回归(GLMNET)、最大熵(MAXENT)这五种算法的5折交叉验证准确率分别为0.573、0.667、0.692、0.608、0.574。这五种分类算法的准确率都基本上在60%以上,其中Boosting的准确率最高,近70%。Boosting算法对于此文本分类是分类性能最好的算法。
四、结论
由实证部分交叉验证结果得到Boosting算法是此文本分类中性能最好的分类算法。Boosting算法具有速度快、简单、编程容易、适应性强和精度高的特点,并在进行分类的同时能够进行特征选取,可以提高弱分类算法的识别率。