写在前面的感悟:
测试集文件删除一定要shift+delete!!!!!要不然回收站直接爆炸,用几个小时打开,然后再用几个小时清空。文本分类的数据集看似只有几个G那么大,但是架不住文件数量多,导致各种移动复制删除操作及其缓慢(可能也因为我用的是轻薄本性能低下)
不知道为什么C盘一直在不断生成新东西,导致我每天都在几百MB几百MB地删东西,只想做完项目尽早让笔记本解脱。分析了一下,程序关闭之后按理来说操作系统就会把资源释放掉啊,可能是生成的临时文件太多了吧,还是没有成功地发现根源。
强烈建议使用云电脑!!!,省去很多麻烦,我做完这个项目之后直接重装系统。
吐槽:为什么搜狗文本分类数据集,大规模的只能快递硬盘过去拷贝,让我想起来之前看的科普文章,比起看似先进的网络传输,有时候用大卡车直接运送硬盘有着更高的传输速率。
代码放在Github上了
代码放在Github上了: 朴素贝叶斯与SVM文本分类
机器学习-文本分类
一、问题分析
实验任务为通过机器学习实现对中文文本的分类,实现理论为朴素贝叶斯以及SVM。
具体实现分为以下几个部分:
1.通过现有资源获取进行数据收集(已有语料库以及xml文件解析构造)
2.对训练集数据进行预处理;
3.对语料库的文档进行建模;
4.基于朴素贝叶斯和SVM进行文本分类的有监督训练;
5.利用通过机器学习得到文本分类器,对测试文本进行分类判别;
7.对于所设计的文本分类器进行性能的评估。
二、实验素材准备
1.现有文本分类语料库
复旦大学语料库,但总数只有约9000篇,不能满足实验要求,作为训练集测试集测试后正确率不理想。
2.搜狗新闻分类处理 SougouDataExtract.py
搜狗实验室网站提供了大量新闻网页xml格式数据,但其不具有分类和文本型,故本实验对其进行处理使之成为文本分类语料库,以备进行后续操作。
(1)处理操作:
在XML文档中头尾加入以进行解析操作,将会妨碍解析的字符修改(在五、遇到的问题及解决中涉及),基于python的url.parse模块根据xml文件中的url段网址的前缀进行对应content段文本类别的确认,构造文本分类结果。
(2)处理结果:
最终生成文件夹:
结果文件夹:
3.THUCdata
文本分类数量庞大,足以支撑实验文本数量要求。
三、总体思路
1.文本处理
首先对文本进行预处理,分词、去除无用信息、规范格式等等,使其具有特定的形式以便进行数据的提取,这也是文本建模的过程;
接着进行所需数据的提取,主要是对于每个分类中高频词的获取,词语以及频率作为文本分类器的分类依据,也就是特征的选取,对应机器学习的训练过程,这一过程在本实验中采用多项式模型;
在获得众多特征后,利用CHI2卡方降维提取特定数量的特征作为训练特征,有效增强训练的针对性。
2.训练测试
根据已经处理好的数据进行待分类文本的分类应用。
利用朴素贝叶斯、拉普拉斯平滑等等技术同时进行分类器测试与性能评估,这一过程在本实验中采用伯努利模型,因此本实验基于朴素贝叶斯的机器学习文本分类是通过混合模型(多项式训练,伯努利测试)来实现的。
使用python库svm.svc进行svm训练,并在训练测试过程中改变svc参数进行不同参数下实验结果的对比。
召回率、准确率性能的测试借助于混淆矩阵计算。
四、具体设计
预处理:
最终生成文件夹:
对于分类文本,我们需要进行以下四个处理:
(1)分词 split.py
分词操作处理文本中的词语,将其按照词性(名词、动词等)一一提取出来并用特定的分隔符进行区分,本程序使用python结巴分词库进行分词,将文本以词语为最小单位进行分隔、标识。
如图: