文本挖掘篇|利用SVM进行短文本分类

Posted 数据帮Club

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本挖掘篇|利用SVM进行短文本分类相关的知识,希望对你有一定的参考价值。


何为数据挖掘,顾名思义就是从大量数据中挖掘或抽取出知识。在实际中,进行数据挖掘的数据不仅仅有数值型数据,还有图片型数据,文本型数据等。而所谓文本挖掘,就是从大量文本数据中,提取出对信息使用者有价值的信息。文本挖掘主要的研究领域有:文本结构分析,文本分类,文本聚类,文本关联分析等。今天,小编用一个例子为大家讲解使用支持向量机SVM进行短文本分类。

对于支持向量机,前面已有小伙伴对它进行详细介绍,若想了解具体情况,可查看历史文章:

 

数据说明:本次用来训练及测试的分类数据有两类,分别是“体育”类及“文学出版”类,“体育”类数据由899个短文本组成,“文学出版”类数据由797个短文本组成。

 

先来看看利用SVM文本分类的流程吧!

数据预处理---->数据向量化---->利用Sklearn-learn进行SVM分类


一、数据预处理


对于文本挖掘,数据预处理的过程必不可少同时也至关重要。在数据预处理过程中,主要是进行中文分词及去除停用词。


(一)中文分词

分词就是将连续的字序列按照一定的规范重新组合成词序列的过程,该过程主要为第二步数据向量化特征选择做准备。Jieba分词是目前国内使用人数最多的中文分词工具,且支持三种分词模式,下面对其三种分词模式的使用方法进行简单介绍。


文本挖掘篇|利用SVM进行短文本分类


(二)去除停用词

由于中国人的说话习惯,在中文语句中会有许多的语气用词“啊,呀,呢”及一些无特殊含义的词“的,这儿,一些”等,这些词没有实际意义确占比较大,一方面增大了计算量,另一方面减少了有意义词的权重。去除停用词采取的方法通常是,建立一个专门的停用词库,然后调用词库去掉无意义词汇,网上有许多停用词词库,这儿就不具体介绍了。


二、数据向量化


数据向量化是连接文本型数据与计算机的桥梁,可以将文本型数据转化为计算机可读的数值型数据。目前,较为常见的数据向量化方法是使用词向量模型。


词向量(Word embedding),又叫Word嵌入是自然语言处理(NLP)中的一组语言建模和特征学习技术的统称,它是通过“浅层双层的神经网络”对大量文本进行训练,从而将每一个词对应一个向量,建立起词与词之间的关系。这儿对于其训练过程不做过多赘述,直接看如何使用吧!


文本挖掘篇|利用SVM进行短文本分类 


三、利用Scikit-learn进行SVM分类

 

Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering)等方法。当我们面临机器学习问题时,便可根据下图来选择相应的方法。


文本挖掘篇|利用SVM进行短文本分类


Scikit-learn中的SVM算法库分为两类,一类是分类的算法库,包括SVC, NuSVC和LinearSVC 3个类;另一类是回归算法库,包括SVR, NuSVR和LinearSVR 3个类。相关的类都包含在sklearn.svm模块之中。下面就开始使用Scikit-learn进行SVM短文本分类啦!

在该过程有如下几个步骤:


(一)分类数据贴标签

分别对两类数据进行数据预处理及数据向量化后,每一个短文本都由一个向量表示。接着按照分类将“体育”类文本贴上标签“1”,“文学出版”类文本贴上标签“0”。


(二)合并分类数据并拆分训练集,测试集

将两类数据及对应的数据标签对应合并,接下来使用“sklearn”模块中“train_test_split”包对数据进行切割,随机选择30%的数据作为测试集,剩余数据作为训练集。


(三)利用SVM模型进行训练并测试

SVM模型有许多核函数,使用不同核函数,其效果也不尽相同,在这里使用三个不同的核函数做对比,看看针对本案例那个核函数的预测效果更佳。在该过程使用了“sklearn”模块中“classification_report”和“accuracy_score”包获得预测的准确度,精确度,召回率,F1值。


Accuracy:(准确度),它是预测正确的正例和负例数据占全部数据的比例。

A=(TP+TN)/(TP+TN+FP+FN)

precision:(精确度),它是预测正确的正例数据占预测为正例数据的比例

P=TP/(TP+FP)

Recall:(召回率),它是预测为正例的数据占实际为正例数据的比例。

R=TP/(TP+FN)

f1-score:(F1),它是精确度和召回率的调和平均值,文本挖掘篇|利用SVM进行短文本分类


1.使用线性核函数的预测结果

文本挖掘篇|利用SVM进行短文本分类      Accuracy: 0.8646365422396856

 

2.使用多项式核函数的预测结果

文本挖掘篇|利用SVM进行短文本分类 

Accuracy: 0.8567779960707269


3.使用径向基核函数的预测结果

Accuracy: 0.8292730844793713


通过对比,可看出对于本案例,使用线性核函数的分类效果更好。通过这个例子,大家是否掌握了进行文本分类的技巧呢,实际上在文本挖掘中,它的前期处理过程大致相同,需要改变只有分类模型的使用哦!


以下,是代码和分类数据的百度网盘链接:

https://pan.baidu.com/s/1MO8cXoHvG4ylhhOv57zu5w 

提取码:qf2w


文字来源|陈丹

图片来源|陈丹

编辑|宋欣蕊

审核|叶紫薇


以上是关于文本挖掘篇|利用SVM进行短文本分类的主要内容,如果未能解决你的问题,请参考以下文章

基于LDA主题模型的短文本分类

短文本分类概述

文本分类《融合知识感知与双重注意力的短文本分类模型》

文本分类《融合知识感知与双重注意力的短文本分类模型》

文本分类《短文本分类的ResLCNN模型》

文本分类《短文本分类的ResLCNN模型》