📄 cnaivebayes.h
字号:
/***************************************************************
* 工程: 朴素贝叶斯算法分类
* 作者: 李卫(liw@nlu.caai.cn)
* 描述: 朴素贝叶斯算法(SSPS)
* 主要函数:见头文件
* 版本: 1.0
**************************************************************/
#ifndef CNAIVEBAYES_H_
#define CNAIVEBAYES_H_
#include <string>
#include <vector>
#include <map>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string>
#include <iostream>
#include "io.h"
using namespace std;
class CNaiveBayes
{
public:
//-----------------------------------------------------------------------------------------//
// 功能: CNaiveBayes类的构造函数。
//-----------------------------------------------------------------------------------------//
CNaiveBayes();
//-----------------------------------------------------------------------------------------//
// 功能: CNaiveBayes类的析构函数。
//-----------------------------------------------------------------------------------------//
~CNaiveBayes();
//-----------------------------------------------------------------------------------------//
// 功能: 读入训练文本,训练分类器
// 参数:
// (入口) 无
// (出口) 无
// 返回: 类别总数
//----------------------------------------------------------------------------------------//
int Train();
//-----------------------------------------------------------------------------------------//
// 功能: 初始化测试结果
// 参数:
// (入口) 无
// (出口) 无
// 返回: 预处理成功返回true,失败返回false
//----------------------------------------------------------------------------------------//
bool InitTestRes();
//----------------------------------------------------------------------------------------//
// 功能: 对测试文本进行分类
// 参数:
// (入口)
// string sTestFile 待测试文本的文件名
// bool bFlag=false 是否已知该测试文本的所属类别,是true,否false
// int nClassID=0 测试文本所属类别的ID号,从0开始编号(与m_mapClassName2ID中的ID号保持一致)
// (出口) 无
// 返回: 返回测试文本数量
//----------------------------------------------------------------------------------------//
int Test(string sTestFile,bool bFlag=false,int nClassID=0);
//-----------------------------------------------------------------------------------------//
// 功能: 将分类结果输出。
//----------------------------------------------------------------------------------------//
void OutputRes(int nClassID,int nDocNum); //分类结果输出
//-----------------------------------------------------------------------------------------//
// 功能: 对一个文件夹内的文档进行测试。
// 参数:
// (入口)
// string sTestFilesPath 待测试文件夹
//----------------------------------------------------------------------------------------//
void TestFiles(string sTestFilesPath);
//-----------------------------------------------------------------------------------------//
// 功能: 对单篇文档进行测试。
// (入口)
// string sContent 测试文本的词频统计信息
// (出口) 无
// 返回: 测试文本所属类别
//----------------------------------------------------------------------------------------//
int TestTermFile(string sContent);
//-----------------------------------------------------------------------------------------//
// 功能: 对单篇文档进行测试。
// (入口)
// string sTestFilePath 测试文本的名称(含路径)
// (出口) 无
// 返回: 测试文本所属类别
//----------------------------------------------------------------------------------------//
int TestAFile(string sTestFilePath);
//-----------------------------------------------------------------------------------------//
// 功能: 读入每类中特征项先验概率文件和类的先验概率文件。
//----------------------------------------------------------------------------------------//
void PrwFRead();
//-----------------------------------------------------------------------------------------//
// 功能: 初始化分类器参数
// 参数:
// (入口)
// bool bPreTrain=false 是否需要对训练语料进行预处理,是true,否false
// string sTrainFilesPath="TrainCorpus" 训练文本所在文件夹路径
// (出口) 无
// 返回: 类别总数
//----------------------------------------------------------------------------------------//
int InitPara(bool bPreTrain=false,string sTrainFilesPath="TrainCorpus");
//----------------------------------------------------------------------------------------//
// 功能: 获取类别信息
// 参数:
// (入口) 无
// (出口) 无
// 返回: 类别总数
//----------------------------------------------------------------------------------------//
int InitClassInfo();
//----------------------------------------------------------------------------------------//
// 功能: 训练语料的预处理(分词、统计词频)
// 参数:
// (入口)
// string sTrainFilesPath 训练文本所在文件夹路径
// (出口) 无
// 返回: 预处理成功返回true,失败返回false
//----------------------------------------------------------------------------------------//
bool PreTrain(string sTrainFilesPath);
private:
int m_nClassNum ; //类别总数
map<string,int> m_mapClassName2ID;
int m_nFeatureNum; //特征项总数
float** m_ppfTrainRes; //存储每类中特征项的先验概率
int* m_pnTrainNum ; //训练集文档总数
double* m_pfPrC; //类别的先验概率
public:
string *m_psClassName;
vector<int> m_vTestRes; //存储测试文本集合判别后所属的类别
int m_nCorrectResNum; //正确分类的数目
int* m_pnResNum; //测试结果中属于各类别的文本数
int* m_pnCorrectResNum; //测试结果中属于各类别的正确分类文本数
};
#endif /*CNAIVEBAYES_H_*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -