今天刚改完成了软件工程的大作业展示,即:基于内容的文本分类系统,使用libsvm 进行分类。在百度谷歌了很久之后,发现很少有这样的源码可以下载,本人便想着写完之后上传上去。
首先介绍一下流程:
1.先使用中科院的分词器ICTLAS对训练集进行分词
2.将所有的词构建成一个字典,以label item的形式,后面svm要用到。如:1 中国
3.提取特征词,由于并不是每个词都是有用的,因此要提取出特征词,主要提取名词,动词,动名词,和用户自定义的词。由于采用了中科院的分词算法,分词结果有词性标注,一个正则表达式就可以提取出来。
4.计算文档的TF-IDF,这个很简单,我采用的是最简单的一种计算方法,有兴趣可以去计算难一点的。
5.将每个训练集的分词结果转换成libsvm 的语料格式,红色框框的是 类标号(对每个分类设置一个标号)后面的是词项(label):词频(tf-idf),如下图。
6.对数据进行缩放,缩放至0-1之间,采用libsvm里面自带的缩放工具,不过我改了一些入口参数,可以将缩放后的结果保存到文件中,原来代码里没有,我的代码里面有注释,
7.采用libsvm生成模型,可以直接调用libsvm里面的包
8.允许用户输入测试集,然后调用生成的模型进行预测
9.将分类结果导出到文件夹中,每个分类建立一个文件夹,文件夹下面就是测试的文件,如图:
生成模型的运行步骤如下(我代码里已经有生成过的模型,不过你想要重新生成的话机这样子做):
接下来让大家看一下软件运行效果图: