文本分类综述

来源:互联网 发布:追不上乌龟 知乎 编辑:程序博客网 时间:2024/05/05 21:18

之前一段时间弄过文本分类的事情,现在发个文总结一下。

文本分类问题的定义是根据一篇文档的内容,从预定义的类别标号里选择相应的类别。

中文文本分类的基本步骤是中文分词、特征提取、训练模型、预测类别等步骤,需要说明的是,基于统计的文本分类一般都需要有比较好的标注好的语料作为训练集,训练出模型,利用模型对未分类的文本进行分类。

对中文文本的处理一个无法避免的步骤就是分词,中文不像英文那样,词与词之间有空格作为分隔符,大部分的中文自然语言处理都无法避免这个步骤。分词算法简单的就是正逆向最大匹配(机械分词),n-gram、最大熵、隐马尔科夫等(统计分词)。现在现有的分词程序包中比较好的要算是中科院的ICTCLAS分词系统了,有兴趣的可以尝试,也可以自己实现简单的机械分词,在文本分类上来说,只要有一个比较好的词表(词表可以去搜狗词库上爬),用最大匹配和其他复杂的分词算法的效果的差距不是很大。

中文分词后文本就成了一个一个的词,这些词就是文本的特征,每篇文章通过含有不同的词语、不同的词语数目来进行区分。但是如果直接用分词后的词语集合进行建模的话,一来词语空间比较大,导致性能比较低;二来词语集合中有很多低频词、无意义词等噪音,也会降低分类的效果,实验证明,通过特征提取后的效果,比采用不提取的词语空间的性能和效果都要好。

特征提取是要提取出最能代表文本的特征和最能区分文本的特征。首先,先把词语空间中的停用词去掉,停用词主要是一些无意义的高频词,比如语气助词(吗、了、啊等),还有类似的、你我他等词语,这些词语几乎在所有文档中都出现过而且会出现很多次,而且跟文档要表达的主题几乎没有关系,因而需要去掉。

去除停用词之后,特征空间仍然很大,这个时候,就要采用统计学规律选取最能区分文本的特征,现有的方法主要有卡方统计、信息增益、互信息、几率比、交叉熵、类间信息差等方法。下面介绍其中的卡方统计,其他方法也能达到很好的效果,有心的同学可以查资料哈。


由于csdn对公式的支持度不高,因此切个图上来。

经过特征提取后,就有了一个特征集合了,文档可以依据这些特征集合来唯一确定一个向量,这就是VSM模型,中文名叫向量空间模型,这个模型假设特征与特征之间是相互独立的,这样虽然损失了很多信息,但从效果看,仍然很好,是现在统计文本分类中使用最多的模型。

这个模型咋用呢?举个栗子说一下,比如有两篇文档,文档1和文档2,经过分词和特征提取后,文档1词语集合(奥运会,体育,冠军,跳水),文档2词语集合(巴以冲突,资本主义,美国),那么特征词集合就是(奥运会,体育,冠军,跳水,巴以冲突,资本主义,美国),按照特征词集合中词语顺序把两个文档表示成向量,则文档1的向量就是(1,1,1,1,0,0,0),文档二的向量就是(0,0,0,0,1,1,1)。其中0,1表示是某特征词在某文档中的权重,很显然,这里的权重指的是出现次数。权重的计算有一个经典的公式,TF-IDF,上个世纪六七十年代被人发明出来,效果很好,在很多方面都有应用。不过据说提出这个方法的人是误打误撞,自己也不知道个所以然。TT,貌似跑远了,继续正题。

经过向量化后,就要用分类算法进行建模,然后分类。对向量分类在机器学习中有很多种算法可以做到,比如朴素贝叶斯算法,KNN算法,支持向量机,神经网络算法等。朴素贝叶斯较为简单,我们主要介绍朴素贝叶斯方法。

朴素贝叶斯算法的基本介绍如下:


根据先验概率和条件概率估计方法以及P(X|C)计算方法的不同,朴素贝叶斯分为多项式模型、伯努利模型、泊松模型等,本文接下来主要介绍伯努利模型和多项式模型。


由上面的计算公式可知,伯努利模型是基于文档粒度的,多项式模型则是特征粒度的。


好了,到此文本分类暂时就介绍完毕了。


原创粉丝点击