参考 http://www.lai18.com/content/1594216.html
1(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.
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/7441.html