文本分类

主要过程

文本预处理

  1. 定义:将文本转化为计算机可处理的形式,将文章分成单个的词语,形成向量形式。

降维(特征选取)

分类器的构建

文本分类

分类过程

把所有文本分为训练样本和测试样本

训练样本:

  • 样本分词: 把样本用分词工具全部进行分词
  • 去停用词: 去掉一些无用的词语,如那、这些、明天等等
  • 提取初步特征
  • 计算特征互信息
  • 按照互信息的大小排序,获得本次实验特征值
  • 训练分类器(SVM)

测试样本

  • 测试集分词处理
  • 去停用词
  • 计算样本的特征向量

这里不再按照分类进行介绍,直接按照训练样本的所需步骤逐个详细介绍,然后介绍如何做测试,然后谈一谈可以改进的地方。

样本分词

  样本分词有很多工具,有中科院的”ICTCLAS”、python中的jieba、东北大学的NiuParse,等等。这里不再赘述,直接使用分词工具就可以了。

去停用词

去停用词有几种常见的方法,一是直接逐个暴力遍历,一个是布隆过滤器

暴力遍历

这里不再赘述,分词后,对于每个训练样本文件遍历每个词,然后匹对停用词表,如果不在停用词表中就保存。否则删除

布隆过滤器

布隆过滤器的详细基本讲解在http://blog.csdn.net/jiaomeng/article/details/1495500 。可以详细的阅读。

在此实验中的用法如下:
1. 根据停用词表和文本总和的大小设定位数组和哈希函数的个数
2. 把停用词表每个单词做哈希运算,初始化位数组
3. 判断每个文本中的每个单词是否在停用词表的集合中

提取初步的特征值

初步的特征值提取就是去掉文本集合中的所有重复元素,得到一个文本集合的单词表。这个过程也可以用布隆过滤器来做。

暴力遍历

新建一个总的单词表,初始元素为空,然后逐个往里面添加元素,直至遍历完所有的文本。

布隆过滤器

  1. 如上所述,先设定位数组合和哈希函数
  2. 逐个遍历每个文本,对于一个元素,如果判断在集合中,那么就为重复元素。否则,添加到单词表中,直到遍历完所有的文本。

特征选择(降维)

这个过程是整个文本分类中的重中之重,现在的特征选择方法也有很多,常用的降维方法有粗糙集属性约减、DF(Document Frequency)、计算互信息(Mutual Imformation)、信息增益(Imformation Gain)、卡方检验CHI(Chi-square)、WLLR(Weighted Log Likelihood Ration)等等。

本实验利用互信息进行特征值选择。
I(t, c) = lg(A*N/ (A+C)*(A+B)).这个公式中t表示单词特征,c表示某类别。公式描述的是单词特征和类别的相关度。

其中:
1. A: A表示t和c同时出现的次数,也就是c类文档中单词t出现的次数(一篇算作一次)。
2. B: B表示t出现c不出现的次数,也就是对于每个单词t,不在c类文档中的次数(篇数)。
3. C: C表示对于c类文档,t没有出现的次数。比如c类文档有200篇,t只在100篇中出现过,那么C的值为200-100 = 100.
4. N: N表示所有的文档数

然后对于每个单词有m个类别,所有有m个互信息值,取平均数后排序,靠前选取多个作为最终的特征值。

特征向量表示

计算出特征值之后,对于每篇文档,生成一个特征值向量。对于每篇文档,计算出特征值的IF-IDF值,形成一个特征向量。

这里叙述一下IF-IDF的计算方式:

  1. 词频tf(i,j) = 第i个单词在文本j中出现的次数 / 所有特征值在文本j中出现的次数总和。 这个结果表示对于第i个特征值在第j份文本中的词频。
  2. 逆向文件频率idf(i) = log(|D| / (1 + 包含第i个特征值的文件总数)), D表示文件总数。这个结果表示对于第i个特征值的逆向文件频率。

tf(i) = tf(i, j)对于j进行求和。即求出特征值在所有文本中词频和。
结果为:idf(i) * tf(i).
然后生成特征向量。

训练SVM

可改进的地方

  1. 降维,这个过程很复杂,选择哪种降维方法,维度为多少都值得去研究。现在比较主流的是粗糙集。
  2. 有可能有的文档没有一个所提取的特征值,那么这个时候特征向量为0
  3. 训练的方法。可以考虑用神经网络。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值