前些日子基于weka初步做了一下文本分类,使用的是最频繁使用的矢量空间模型(Vector Space Model),即假设正负样本在特征空间的分布迥异,基于某种规则将它们转化为矢量,然后训练分类器来区分这些矢量,测试样本来时送进分类器进行分类就行。在我的实验里面,特征降维使用的是基于TFIDF的特征选择,分类器使用的是朴素贝叶斯(naïve bayes)分类器。
前期预处理
编码不一致:由于我的中文样本是从网站各个地方收集来的,因此编码很可能不一致,有的是ANSI,有的是Unicode,需要统一编码便于后续处理。本实验里面,所有的文本都被统一成ANSI编码。下载一个文本编码转换器(TxtEdit)即可转换。
中文分词:由于样本是中文文本,因此需要进行中文分词,包括去掉英文标点符号,停词处理等,现成的工具有计算所开发的汉语分词系统(http://ictclas.org/)等。
Weka进行分类
Weka功能实在是太强大,剩下的事情可以全部交给weka做了。
先引用weka中文论坛的资料介绍下Weka:
WEKA的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),它的源代码可通过http://www.cs.waikato.ac.nz/ml/weka得到。同时weka也是新西兰的一种鸟名,而WEKA的主要开发者来自新西兰。
WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。如果想自己实现数据挖掘算法的话,可以看一看weka的接口文档。在weka中集成自己的算法甚至借鉴它的方法自己实现可视化工具并不是件很困难的事情。2005年8月,在第11届ACM SIGKDD国际会议上,怀卡托大学的Weka小组荣获了数据挖掘和知识探索领域的最高服务奖,Weka系统得到了广泛的认可,被誉为数据挖掘和机器学习历史上的里程碑,是现今最完备的数据挖掘工具之一(已有11年的发展历史)。Weka的每月下载次数已超过万次。