资源简介
之前的最好资源描述如下:
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个文件信息
相关资源
- 文本分类器,KNNSVM贝叶斯等都有
- 微博情感分析,文本分类,毕业设计
- 斯坦福大学文本分类课件PPT
- ChnSentiCorp_htl_ba_4K.zip
- svm算法文本特征提取形成特征向量
- 文本分类实验报告(详尽版本)
- 文本分类所需停用词表
- 基于svm的中文文本分类系统
- 网易文本分类数据 - 好东西
- 卡方特征词选择法选取1000个特征词
- RNN 文本分类
- NLP小白入门——超全中文文本分类系
- 基于weka的文本分类器
- 中文文本分类语料由复旦大学李荣陆
- 中文文本分类语料-测试集
- 基于RNN的Tensorflow实现文本分类任务的
- 20NEWSGROUP
- 搜狗文本分类语料库-中文文本分类
- 复旦中文文本分类-训练集
- 搜狗最新文本分类语料库
- imdb电影情感分类数据集
- 复旦新闻语料库测试集
- 中文文本分类语料复旦完整版
- 复旦大学中文文本分类数据集
- 新闻文本分类数据集50000条
- 中文文本分类语料库复旦大学训练与
- 新闻分类文本分类
- 复旦大学中文文本分类数据集-训练
- 中文文本分类语料复旦-训练集
- 喜悦、愤怒、厌恶、低落微博带标注
评论
共有 条评论