之前的最好资源描述如下:
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进行了最大压缩。
特别说明:
感谢李荣陆老师无私共享。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 27365 2004-08-14 21:09 svmclsCATALOGLIST.CPP
文件 5232 2004-07-19 10:35 svmclsCATALOGLIST.H
文件 47365 2010-09-21 13:46 svmclsClassifier.cpp
文件 3639 2010-09-21 13:45 svmclsClassifier.h
文件 6579 2004-08-15 17:17 svmclsCLASSIFIERPARAM.CPP
文件 3230 2004-08-15 17:13 svmclsCLASSIFIERPARAM.H
文件 3076 2004-07-13 21:05 svmclsCompute_Param.cpp
文件 1637 2004-07-13 21:05 svmclsCompute_Param.h
文件 1387 2004-07-13 10:36 svmclsCompute_Prompt.cpp
文件 887 2004-07-13 09:54 svmclsCompute_Prompt.h
文件 587 2004-07-13 10:36 svmclsCompute_Result.cpp
文件 835 2004-05-09 19:20 svmclsCompute_Result.h
文件 3077 2004-07-20 11:12 svmclsConvertDlg.cpp
文件 1411 2004-08-06 10:40 svmclsConvertDlg.h
文件 7544244 2002-09-13 13:47 svmclsdataBigramDict.dct
文件 1565689 2002-09-13 13:47 svmclsdatacoreDict.dct
文件 607 2004-05-18 22:27 svmclsdataengstopwords.txt
文件 266240 2004-04-30 10:21 svmclsdataICTCLAS_Win.exe
文件 10412 2002-09-13 13:47 svmclsdatalexical.ctx
文件 0 2004-04-30 10:58 svmclsdatalog.txt
文件 1032 2002-09-13 13:51 svmclsdata
r.ctx
文件 113780 2002-09-13 13:51 svmclsdata
r.dct
文件 408 2002-09-13 13:55 svmclsdata
s.ctx
文件 54278 2002-09-13 13:55 svmclsdata
s.dct
文件 2398 2004-05-05 22:16 svmclsdatastopwords.txt
文件 408 2002-09-13 13:55 svmclsdata r.ctx
文件 64000 2002-09-13 13:55 svmclsdata r.dct
文件 1646649 2010-09-21 13:51 svmclsDebugsvmcls.exe
文件 2295 2004-07-24 16:19 svmclsDocSelDlg.cpp
文件 1285 2004-08-06 10:39 svmclsDocSelDlg.h
............此处省略4405个文件信息
// 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 svmclsCATALOGLIST.CPP
文件 5232 2004-07-19 10:35 svmclsCATALOGLIST.H
文件 47365 2010-09-21 13:46 svmclsClassifier.cpp
文件 3639 2010-09-21 13:45 svmclsClassifier.h
文件 6579 2004-08-15 17:17 svmclsCLASSIFIERPARAM.CPP
文件 3230 2004-08-15 17:13 svmclsCLASSIFIERPARAM.H
文件 3076 2004-07-13 21:05 svmclsCompute_Param.cpp
文件 1637 2004-07-13 21:05 svmclsCompute_Param.h
文件 1387 2004-07-13 10:36 svmclsCompute_Prompt.cpp
文件 887 2004-07-13 09:54 svmclsCompute_Prompt.h
文件 587 2004-07-13 10:36 svmclsCompute_Result.cpp
文件 835 2004-05-09 19:20 svmclsCompute_Result.h
文件 3077 2004-07-20 11:12 svmclsConvertDlg.cpp
文件 1411 2004-08-06 10:40 svmclsConvertDlg.h
文件 7544244 2002-09-13 13:47 svmclsdataBigramDict.dct
文件 1565689 2002-09-13 13:47 svmclsdatacoreDict.dct
文件 607 2004-05-18 22:27 svmclsdataengstopwords.txt
文件 266240 2004-04-30 10:21 svmclsdataICTCLAS_Win.exe
文件 10412 2002-09-13 13:47 svmclsdatalexical.ctx
文件 0 2004-04-30 10:58 svmclsdatalog.txt
文件 1032 2002-09-13 13:51 svmclsdata
r.ctx
文件 113780 2002-09-13 13:51 svmclsdata
r.dct
文件 408 2002-09-13 13:55 svmclsdata
s.ctx
文件 54278 2002-09-13 13:55 svmclsdata
s.dct
文件 2398 2004-05-05 22:16 svmclsdatastopwords.txt
文件 408 2002-09-13 13:55 svmclsdata r.ctx
文件 64000 2002-09-13 13:55 svmclsdata r.dct
文件 1646649 2010-09-21 13:51 svmclsDebugsvmcls.exe
文件 2295 2004-07-24 16:19 svmclsDocSelDlg.cpp
文件 1285 2004-08-06 10:39 svmclsDocSelDlg.h
............此处省略4405个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)