这是在自然语言课程时的大作业--中文文本情感的分类。整个实验的相关算法利用C++在Windows平台下完成,使用ICTCLAS中文分词开源程序、LibSVM以及开源的XML文件处理程序Markup完成。具体实验代码详见附件。这年头光说不给代码的都是假的,我也是有点鄙视的。。。故给出可运行的完全源代码,使用vs2010写的代码。
目录结构如下:
各文件夹作用说明:
FreeICTCLAS: 中科院中文分词处理系统接口(修改,添加字母数字剔除,停用词去除)
LibSVM: SVM分类器开源库
Data: 分词处理数据字典
Dataset: 处理文本测试集与训练集
Feature: 对训练集提取的特征文件
Model: 利用SVM生成的模型文件
Result: 分类结果文件
其他文件说明:
Markup.h与Markup.cpp: 开源的xml文件处理接口
CommentText.h与CommentText.cpp: 评论文本类,文本的主要处理对象,用于分词处理,计算权重等
Processing.h与Processing.cpp: 通用处理接口,包括SVM训练,学习接口,特征选取,权值归一化等
main函数说明:
#include <iostream>
#include "Processing.h"
#include "CommentText.h"
#include "FreeICTCLAS/FreeICTCLAS.h"
using namespace std;
int main()
{
if (!IsDctDataExists())
{
printf("ERROR: Cannot Find Dictionary Data File!\n");
return 0;
}
//从XML文件提取评论文本
CCommentText** pComArr = AnalyseXML("Dataset/CSC_music_test");
LoadFeature("Feature/feature_music_10%");
for (int i = 0; i < CCommentText::s_nTestNum; i++)
{
printf("%s\n", (pComArr[i]->GetReviewID()).c_str());
pComArr[i]->ExtractOFeature();//提取原始特征
pComArr[i]->CalcFeatureWeight();
}
//特征归一化
// NormalizedWeight(pComArr);
// SaveWeight(pComArr, "Weight/weight_book_bool_10%");
// SVMTrain(pComArr, "Model/model_book_10%");
//SVM学习
SVMPredict(pComArr, "Model/model_music_10%");
//保存结果到文件
SaveResult(pComArr, "Result/result_music_10%");
system("PAUSE");
return 0;
}
最后下载连接http://download.csdn.net/detail/baidu_28563321/8768503