文本分类与SVM
来源:互联网 发布:桌面整理软件推荐 编辑:程序博客网 时间:2024/05/16 03:57
读取一些技术牛人的博客,得到一些灵感,想写一个笔记,就当这些天的一个总结吧。
1、基础知识
1.1样本整理
文本分类属于有监督的学习,所以需要整理样本。根据业务需求,确定样本标签与数目,其中样本标签多为整数。在svm中其中如果为二分类,样本标签一般会设定为-1和1,而在朴素贝叶斯方法中,一般为0和1,但不是固定的,标签的设置和算法本身的性质有关的。
1.2特征选择
文本分类中最著名的特征提取方法就是向量空间模型(VSM),即将样本转换为向量的形式。为了能实现这种转换,需要做两个工作:确定特征集和提取特征。
1.2.1确定特征集
特征集其实就是词典,而且还需要给每个词设定一个编号。一般可以将所有样本的词都提取出来作为词典,而词典的编号可以随意设置,默认情况下,所有词的权重都是等同的。如何从样本中提取出一个个意义的词呢?最常用的方法就是使用分词工具。现在比较常见的分词工具有ICTCLAS(C++),Ik_Analyse2012(Java)。图1.1-1是为了方便
而在一篇博客上截得的图,简单容易理解。
1.2.2特征选择
根据不同的业务,文本分类中词典的规模在万级到千万级甚至亿级。而这么大的维度可能会带来维度灾难,因此就要想办法从大量的特征中选择一些有代表性的特征而又不影响分类的效果(而根据文献中的结果,特征选择可以在一定程度上提高分类的效果)。特征选择就是从特征集中选择一些代表性的词。而如何衡量词的代表性呢?一般的计算方法有词频、卡方公式、信息增益等。当前文献中一致认为比较好的方法是卡方公式。
下面几个链接是几篇写的比较详细介绍如何进行特征选择的文章
1. http://www.blogjava.net/zhenandaci/archive/2009/04/19/266388.html 特征选择与特征权重计算的区别
2. http://www.blogjava.net/zhenandaci/archive/2009/03/24/261701.html 特征选择方法之信息增益
3. http://www.blogjava.net/zhenandaci/archive/2008/08/31/225966.html 特征选择算法之开方检验
1.2.3特征抽取
另外一种解决维度灾难的思路就是特征抽取。同样是降维,相比特征选择,特征抽取采用了一种高级的方法来进行。Topic Modeling是原理就是将利用映射将高纬度空间映射到低纬空间,从而达到降维的目的。
1.3计算特征权重
给定一个样本,如何转换成向量呢?
首先给一张流程图:
流程:
1)首先,对样本进行分词,提取出所有的词。
2)根据已经生成的词典,如果词典中的词出现,就在相应对应的位置填入该词的词频。
3)对生成的向量进行归一化
上面的所示的方法是比较简单的一种,其中特征权重采用的为词频来表示,现在比较常用的特征权重的计算方式为TF*IDF,TF*RF。
1.4模型训练与预测
当把文本转换成向量的形式后,大部分的工作其实已经做完了。后面所要做的就是利用算法进行训练和预测了。
现在文本分类的算法很多,常见的有Naïve Bayes,SVM,KNN,Logistic回归等。其中SVM据文献中说是在工业界和学术界通吃的,不过据我了解现在公司里用SVM来做分类的不多 = =,而Logistic回归则是比较常用的,因为相对来说简单,而且可以并行化训练。资料与程序
1. http://nlp.stanford.edu/IR-book/html/htmledition/naive-bayes-text-classification-1.html介绍NaïveBayes方法如何应用在文本分类上
2. http://blog.163.com/jiayouweijiewj@126/blog/static/17123217720113115027394/ 详细分析了Mahout中如何实现NaïveBayes
3. http://www.csie.ntu.edu.tw/~cjlin/libsvm/ Libsvm是用来进行SVM训练与预测的开源工具。下载下来就可以直接用,作者的文档写的很详细。
4. http://www.blogjava.net/zhenandaci/category/31868.htmlSVM的八股介绍,讲解的还是通俗易懂的
5. http://blog.pluskid.org/?page_id=683 介绍支持向量机的
6. https://code.google.com/p/tmsvm/ Tmsvm是我之前写的利用svm进行文本分类的程序,涉及到文本分类的所有流程。
2、其他问题
2.1特征权重计算
文档特征向量的特征权重计算的一般公式为,即第i个term在第j篇文档向量中的权重。其中Local(i,j)被称为局部因子,与term在文档中出现的次数有关。global(i)又称为term的全局因子,与在整个训练集中term出现有关。通常我们熟悉的公式都可以转化为这一个通用的表达式。如最常用的tf形式,tf*idf形式。因此我们就可以在构造词典的时候就计算term的全局因子,把这个值放在词典中,然后在计算特征权重的时候直接调用。
在Classification中哪种特征权重的计算方式最好??tf*idf ?在文献中最常用的是tf*idf,但是其效果并不一定好,
- 文本分类与SVM
- 文本分类与SVM
- 文本分类与SVM
- svm与文本分类
- 文本分类与SVM
- 文本分类与SVM
- 文本分类与SVM
- 文本分类与SVM
- 文本分类与SVM
- [026]文本分类之SVM
- SVM 文本分类简易版
- SVM针对中文文本分类
- tf-idf + svm 文本分类
- svm(libsvm)在文本分类中的应用
- 利用python,基于SVM实现文本分类
- 利用SVM 实现文本分类的实例
- 基于SVM的中文文本分类方法
- sklearn svm实现文本分类 入门
- Best Time to Buy and Sell Stock
- jdk1.8 HashMap性能提升
- 解读为什么有符号的char可表示范围是-128~+127
- xss攻击
- PAT 题目分类
- 文本分类与SVM
- 1057. Stack (30)
- Stanford机器学习---第六讲. 怎样选择机器学习方法、系统
- 测试
- Objective-c 单例设计模式
- Stanford机器学习---第七讲. 机器学习系统设计
- 098 Validate Binary Search Tree [Leetcode]
- 假设你正在读一串整数,每个一段时间,希望能找出数字x的秩(小于或等于x的值的数目)
- git学习(二)