资源简介

之前的最好资源描述如下: svmcls 2.0文本自动分类器支持中文和英文文档,特征选择方式包括全局和按类别选取,概率估算方法支持基于文档(布尔)统计和基于词频统计,支持三种特征加权方式,特征评估函数包括信息增益、互信息、期望交叉熵、X^2统计,文本证据权重,右半信息增益,分类方法包括支持向量机SVM和K近邻KNN,由李荣陆老师于2004年开发完成。 网上流传很多版本的svmcls文本分类程序,但几乎全部都是不能编译通过的,有些是缺少xercesc文件夹,有些是缺少xerces-c_2_2_0D.dll,有些是缺少分词程序和数据导致分词程序初始化失败,还有的缺少直接训练测试的语料库。 本人经过整理和编译测试,保证本压缩包解压后不仅有可以直接使用的.exe程序,而且所包含的源代码可以编译通过。可供广大学者研究使用。 ============================================ 此次发布改进: 1 增加了此前版本仍缺少的xerces-c_2_2_0.dll; 2 将Feather改为Feature,意为特征; 3 此版本最大的改进是可以编译Release版,此前版本不能。 4 编译Release版时,需要把xerces文件夹置于vc的include目录下,并在在Link设置页面加入2个lib文件。 5 此版本为完整版,并用winrar进行了最大压缩。 特别说明: 感谢李荣陆老师无私共享。

资源截图

代码片段和文件信息

// Classifier.cpp: implementation of the CClassifier class.
//
//////////////////////////////////////////////////////////////////////

#include “stdafx.h“
#include “svmcls.h“
#include “Classifier.h“
#include “WordSegment.h“
#include “Message.h“
#include 
#include 

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

CClassifier theClassifier;
const DWORD CClassifier::dwModelFileID=0xFFEFFFFF;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CClassifier::CClassifier()
{
m_pDocs=NULL;
m_pSimilarityRatio=NULL;
m_lDocNum=0;
m_nClassNum=0;
}

CClassifier::~CClassifier()
{

}

//参数bGenDic=false代表无需重新扫描文档得到训练文档集中所有特征一般在层次分类时使用
//参数nType用来决定分类模型的类别nType=0代表KNN分类器nType=1代表SVM分类器
bool CClassifier::Train(int nType bool bFlag)
{
CTime startTime;
CTimeSpan totalTime;
if(bFlag)
{
InitTrain();
//生成所有候选特征项,将其保存在m_lstWordList中
GenDic();
}
CMessage::PrintStatusInfo(““);

if(m_lstWordList.GetCount()==0)
return false;
if(m_lstTrainCatalogList.GetCataNum()==0)
return false;

//清空特征项列表m_lstTrainWordList
m_lstTrainWordList.InitWordList();
//为特征项列表m_lstWordList中的每个特征加权
CMessage::PrintInfo(_T(“开始计算候选特征集中每个特征的类别区分度,请稍候...“));
startTime=CTime::GetCurrentTime();
FeatureWeight(m_lstWordList);
totalTime=CTime::GetCurrentTime()-startTime;
CMessage::PrintInfo(_T(“特征区分度计算结束,耗时“)+totalTime.Format(“%H:%M:%S“));
CMessage::PrintStatusInfo(““);

//从特征项列表m_lstWordList中选出最优特征
CMessage::PrintInfo(_T(“开始进行特征选择,请稍候...“));
startTime=CTime::GetCurrentTime();
FeatureSelection(m_lstTrainWordList);
    //为最优特征集m_lstTrainWordList中的每个特征建立一个ID
m_lstTrainWordList.IndexWord();
totalTime=CTime::GetCurrentTime()-startTime;
CMessage::PrintInfo(_T(“特征选择结束,耗时“)+totalTime.Format(“%H:%M:%S“));
CMessage::PrintStatusInfo(““);

//清空m_lstWordList释放它占用的空间
m_lstWordList.InitWordList();

CMessage::PrintInfo(“开始生成文档向量,请稍候...“);
startTime=CTime::GetCurrentTime();
GenModel();
totalTime=CTime::GetCurrentTime()-startTime;
CMessage::PrintInfo(_T(“文档向量生成结束,耗时“)+totalTime.Format(“%H:%M:%S“));
CMessage::PrintStatusInfo(““);

CMessage::PrintInfo(“开始保存分类模型,请稍候...“);
startTime=CTime::GetCurrentTime();
WriteModel(m_paramClassifier.m_txtResultDir+“\\model.prj“nType);
totalTime=CTime::GetCurrentTime()-startTime;
CMessage::PrintInfo(_T(“保存分类模型结束,耗时“)+totalTime.Format(“%H:%M:%S“));

//训练SVM分类器必须在保存训练文档的文档向量后进行
if(nType>0)
{
CMessage::PrintInfo(“开始训练SVM,请稍候...“);
m_lstTrainCatalogList.InitCatalogList(2); //删除文档向量所占用的空间
startTime=CTime::GetCurrentTime();
TrainSVM();
totalTime=CTime::GetCurrentTime()-startTime;
CMessage::PrintInfo(_T(“SVM分类器训练结束,耗时“)+totalTime.Format(“%H:%M:%S“));
CMessage::PrintStatusInfo(““);
}
//为分类做好准备否则不能进行分类
Prepare();
CMessage::PrintStatusInfo(““)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      27365  2004-08-14 21:09  svmcls\CATALOGLIST.CPP

     文件       5232  2004-07-19 10:35  svmcls\CATALOGLIST.H

     文件      47365  2010-09-21 13:46  svmcls\Classifier.cpp

     文件       3639  2010-09-21 13:45  svmcls\Classifier.h

     文件       6579  2004-08-15 17:17  svmcls\CLASSIFIERPARAM.CPP

     文件       3230  2004-08-15 17:13  svmcls\CLASSIFIERPARAM.H

     文件       3076  2004-07-13 21:05  svmcls\Compute_Param.cpp

     文件       1637  2004-07-13 21:05  svmcls\Compute_Param.h

     文件       1387  2004-07-13 10:36  svmcls\Compute_Prompt.cpp

     文件        887  2004-07-13 09:54  svmcls\Compute_Prompt.h

     文件        587  2004-07-13 10:36  svmcls\Compute_Result.cpp

     文件        835  2004-05-09 19:20  svmcls\Compute_Result.h

     文件       3077  2004-07-20 11:12  svmcls\ConvertDlg.cpp

     文件       1411  2004-08-06 10:40  svmcls\ConvertDlg.h

     文件    7544244  2002-09-13 13:47  svmcls\data\BigramDict.dct

     文件    1565689  2002-09-13 13:47  svmcls\data\coreDict.dct

     文件        607  2004-05-18 22:27  svmcls\data\engstopwords.txt

     文件     266240  2004-04-30 10:21  svmcls\data\ICTCLAS_Win.exe

     文件      10412  2002-09-13 13:47  svmcls\data\lexical.ctx

     文件          0  2004-04-30 10:58  svmcls\data\log.txt

     文件       1032  2002-09-13 13:51  svmcls\data\nr.ctx

     文件     113780  2002-09-13 13:51  svmcls\data\nr.dct

     文件        408  2002-09-13 13:55  svmcls\data\ns.ctx

     文件      54278  2002-09-13 13:55  svmcls\data\ns.dct

     文件       2398  2004-05-05 22:16  svmcls\data\stopwords.txt

     文件        408  2002-09-13 13:55  svmcls\data\tr.ctx

     文件      64000  2002-09-13 13:55  svmcls\data\tr.dct

     文件    1646649  2010-09-21 13:51  svmcls\Debug\svmcls.exe

     文件       2295  2004-07-24 16:19  svmcls\DocSelDlg.cpp

     文件       1285  2004-08-06 10:39  svmcls\DocSelDlg.h

............此处省略4405个文件信息

评论

共有 条评论