Tmsvm_基于SVM的文本挖掘系统

开源系统 主页:http://code.google.com/p/tmsvm/

文本挖掘无论在学术界还是在工业界都有很广泛的应用场景。而文本分类是文本挖掘中一个非常重要的手段与技术。现有的分类技术都已经非常成熟,SVM、KNN、Decision Tree、AN、NB在不同的应用中都展示出较好的效果,前人也在将这些分类算法应用于文本分类中做出许多出色的工作。但在实际的商业应用中,仍然有很多问题没有很好的解决,比如文本分类中的高维性和稀疏性、类别的不平衡、小样本的训练、Unlabeled样本的有效利用、如何选择最佳的训练样本等。这些问题都将导致curve of dimension、过拟合等问题。

这个开源系统的目的是集众人智慧,将文本挖掘、文本分类前沿领域效果非常好的算法实现并有效组织,形成一条完整系统将文本挖掘尤其是文本分类的过程自动化。该系统提供了Python和Java两种版本。

1.1 主要特征

该系统在封装libsvm、liblinear的基础上,增加了特征选择、LSA特征抽取、SVM模型参数选择、libsvm格式转化模块以及一些实用的工具。其主要特征如下:

1)       封装并完全兼容libsvm、liblinear。

2)       基于Chi的feature selection

3)       基于Latent Semantic Analysis 的feature extraction

4)       支持Binary,Tf,log(tf),Tf*Idf,tf*rf,tf*chi等多种特征权重

5)       文本特征向量的归一化

6)       利用交叉验证对SVM模型参数自动选择。

7)       支持macro-average、micro-average、F-measure、Recall、Precision、Accuracy等多种评价指标

8)       支持多个SVM模型同时进行模型预测

9)       采用python的csc_matrix支持存储大稀疏矩阵。

10)   引入第三方分词工具自动进行分词

11)   将文本直接转化为libsvm、liblinear所支持的格式。

1.2 利用此系统可以做什么

1、      对文本自动做SVM模型的训练。包括Libsvm、Liblinear包的选择,分词,词典生成,特征选择,SVM参数的选优,SVM模型的训练等都可以一步完成。

2、      利用生成的模型对未知文本做预测。并返回预测的标签以及该类的隶属度分数。可自动识别libsvm和liblinear的模型。

3、      自动分析预测结果,评判模型效果。计算预测结果的F值、召回率、准确率、Macro,Micro等指标,并会计算特定阈值、以及指定区间所有阈值下的相应指标。

4、      分词。对文本利用mmseg算法对文本进行分词。

5、      特征选择。对文本进行特征选择,选择最具代表性的词。

6、      SVM参数的选择。利用交叉验证方法对SVM模型的参数进行识别,可以指定搜索范围,大于大数据,会自动选择子集做粗粒度的搜索,然后再用全量数据做细粒度的搜索,直到找到最优的参数。对libsvm会选择c,g(gamma),对与liblinear会选择c。

7、      对文本直接生成libsvm、liblinear的输入格式。libsvm、liblinear以及其他诸如weka等数据挖掘软件都要求数据是具有向量格式,使用该系统可以生成这种格式:labelindex:value

8、      SVM模型训练。利用libsvm、liblinear对模型进行训练。

9、      利用LSA对进行Feature Extraction,从而提高分类效果。

1.3 本系统欲解决的问题:

1、文本分类的高维性和稀疏性

2、Unbalance 样本的问题。实际应用中,各个类别的数据集大小往往是不平衡的,尤其在informationfiltering 领域。感兴趣的数据集相对于不感兴趣的数据集是非常小

3、Unlabeled 样本的利用问题。

4、样本的Randomly sampling 问题。

5、……

1.4 程序文件说明

src:即该系统的源代码,提供了5个可以在Linux下可以直接调用的程序:

aauto_train.py、train.py、predict.py为在Linux下通过命令行调用的接口。

tms.py 为在程序中调用的主文件,直接通过import tms 即可调用系统的所有函数。

  其他文件为程序中实现各个功能的文件。

lsa_src:LSA模型的源程序。

dependence:系统所依赖的一些包。包括libsvm、liblinear、Pymmseg在Linux32位和64位以及windows下的支持包(dll,so文件)。

tools:提供的一些有用的工具,包括result_analysis.py等。

java:java版本的模型预测程序,

1.5 调用方法:

该系统可以在命令行(Linux或cmd中)中直接使用,也可以在程序通过直接调用源程序使用。

在程序中使用。

[python]  view plain copy
  1. import tms  
  2. #对data文件夹下的binary_seged.train文件进行训练。  
  3. tms.tms_train(“../data/binary_seged.train”)   
  4. #利用已经训练好的模型,对对data文件夹下的binary_seged.test文件预测  
  5. tms.tms_predict(“../data/binary_seged.test”,”../model/tms.config”)  
  6. #对预测的结果进行分析,评判模型的效果  
  7. tms. tms_analysis(“../tms.result”)  


在命令行中调用

[python]  view plain copy
  1. #对data文件夹下的binary_seged.train文件进行训练。  
  2. $python auto_train.py [options]  ../data/binary_seged.train  
  3. #利用已经训练好的模型,对对data文件夹下的binary_seged.test文件预测  
  4. $python predict.py ../data/binary_seged.train ../model/tms.config  
  5. #对预测的结果进行分析,评判模型的效果  
  6. $python result_anlaysis.py ../tms.result  


上面的调用形式都是使用系统中默认的参数,更具体、灵活的参数见程序调用接口


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值