LibSVM实现文本分类总结

1,主要参考了博客文章:基于libsvm的中文文本分类原型  -> http://blog.csdn.net/marising/article/details/5844063 

(1)使用CHI挑选文本类的特征词汇。->(2)使用TFIDF计算相对于某一文本,步骤1中得出的每个特征词汇的tfidf值,从而得出每一个文本的特征向量。->(3)使用libsvm进行分类。

2,使用CHI挑选特征 参考文章:http://blog.csdn.net/wangran51/article/details/8446234

原理:假设词汇和类别“不相关”,即相互独立。使用开方检验,验证假设成立的可能性。

开方检验值越大,说明假设越不可能成立,即词汇和类别越相关,因此该词汇越能代表该类别,可以选择为该类别的一个特征词。

因此CHI的最终步骤就是计算该类别内所有词汇的CHI值,选取值最大的N个词汇作为该类的特征词汇。

3,使用TF-IDF构建文本的特征向量 参考文章: http://www.cnblogs.com/biyeymyhjob/archive/2012/07/17/2595249.html

TFIDF=TF*IDF,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

假如使用关键字组(K1,K2,K3)搜索文档,则该查询和文档document的相关性是TF1+TF2+TF3,(TF表示关键字的词频),在这个公式里,默认为关键字K1,K2,K3的重要性是一样的,这不太合理,因为不同的词应该有不同的权重。在信息检索中,使用最多的权重是“逆文本频率指数” (Inverse document frequency 缩写为IDF)。引入IDF后,查询和文档的相关性计算公式就由词频的简单求和(TF1+TF2+TF3)变成了加权求和,即 TF1*IDF1+TF2*IDF2+TF2*IDF2

4,CHI和TFIDF总结:

CHI:挑选最能代表一个类的特征词汇;TFIDF:计算一个词对于一份文本的重要程度。

CHI的不足:

CHI只是考虑了文件集中包含词条的文档数量,而没有考虑词条在文档中出现的次数。因此这是CHI的一个缺陷。

TFIDF的不足:

在TFIDF的理论体系中,如果某一个文件集中包含词条的文件越少,IDF越大,则说明词条具有很好的类别区分能力。但是实际上,如果一个词条在一个文件集的文档中频繁出现,则说明该词条能够很好代表这个文件集的文本的特征,这样的词条应该给它们赋予较高的权重(实际上该类词条的IDF值较小),并选来作为该类文本的特征词以区别与其它类文档。这就是IDF的不足之处。

综合以上两点,CHI没有考虑词条在文档中的出现次数,而TFIDF考虑了。并且CHI正好弥补了IDF的不足,因为IDF中在多个文档中都出现的词条被赋予的IDF值较低,而CHI正是选出了这些值作为文档集合的特征词条。因此两者有一定的互补性。1中利用libsvm实现文本分类时,正是采用了CHI和TFIDF两种方法。

5,linux系统下libsvm的python接口的安装

参考了这两篇文章

http://blog.csdn.net/letsseehow/article/details/10483729

http://techv5.com/topic/289/

Libsvm首页: http://www.csie.ntu.edu.tw/~cjlin/libsvm/

6,libsvm下python接口简介:

在libsvm-3.16的python文件夹下主要包括了两个文件svm.py和svmutil.py。
svmutil.py接口主要包括了high-level的函数,这些函数的使用和LIBSVM的MATLAB接口大体类似
svmutil中主要包含了以下几个函数:
svm_train()        : train an SVM model
svm_predict()      : predict testing data
svm_read_problem() : read the data from a LIBSVM-format file.
svm_load_model()   : load a LIBSVM model.
svm_save_model()   : save model to a file.
evaluations()      : evaluate prediction results.
svm.py接口主要包括了一些low-level的应用。在svm.py中采用了python内置的ctypes库,由此python可以直接访问svm.h中定义的C结构和接口函数。svm.py主要运用了四个数据结构svm_node, svm_problem, svm_parameter和svm_model。

http://www.cnblogs.com/Dzhouqi/p/3653823.html  :举例说明了libsvm的python接口的使用方式。

http://www.tanglei.name/libsvm-in-python/  :分3步讲解了libsvm的使用方式


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值