2018年10月15日笔记
tensorflow是谷歌google的深度学习框架,tensor中文叫做张量,flow叫做流。
CNN是convolutional neural network的简称,中文叫做卷积神经网络。
文本分类是NLP(自然语言处理)的经典任务。
操作系统:Win10
python版本:3.6
集成开发环境:jupyter notebook
tensorflow版本:1.6
本文是作者学习《使用卷积神经网络以及循环神经网络进行中文文本分类》的成果,感激前辈;
github链接:https://github.com/gaussic/text-classification-cnn-rnn
使用卷积神经网络模型要求有较高的机器配置,如果使用CPU版tensorflow会花费大量时间。
读者在有nvidia显卡的情况下,安装GPU版tensorflow会提高计算速度50倍。
安装教程链接:https://blog.csdn.net/qq_36556893/article/details/79433298
如果没有nvidia显卡,但有visa信用卡,请阅读我的另一篇文章《在谷歌云服务器上搭建深度学习平台》,链接:https://www.jianshu.com/p/893d622d1b5a
数据集下载链接: https://pan.baidu.com/s/1nvfAWk2Wg1F4xZd2qkq5yA 提取码: 86bh
数据集总共大小71kB,文件夹结构如下图所示:
image.png
1.data
文件夹是原始数据,其中有4个csv文件,分别代表4个分类;
2.cnn_package.py
文件是代码文件,可以通过python cnn_package.py
命令运行;
3.cnn_test.ipynb
文件是可以分步运行的代码文件,可以通过jupyter notebook
打开服务后访问;
4.shortTextClassification.ipynb
文件是做数据处理的代码文件,将data中的数据转换为之后的4个pickle文件和1个词汇表文件;
5.test_content_list.pickle
文件是测试集内容列表文件;
6.test_label_list.pickle
文件是测试集标签列表文件;
7.train_content_list.pickle
文件是训练集内容列表文件;
8.train_label_list.pickle
文件是训练集标签列表文件;
9.vocabulary.txt
文件是词汇表文件;
10.报警信息短文本分类.zip
文件是前面10个文件的压缩结果。
基于当前文件夹打开cmd,在其中输入命令并运行:python cnn_package.py
运行结果如下图所示,上方红框表示100次迭代训练过程,下方红框表示混淆矩阵和报告表:
image.png
完整代码已经在数据集文件中给出,即cnn_test.ipynb
文件和cnn_package.py
文件;
shortTextClassification.ipynb
文件中代码的作用是将文本文件转换为二进制文件,即4个pickle文件;
cnn_test.ipynb
文件中有作者整理好的代码,思路清晰,易于理解;
从工程开发的角度考虑,本文作者在cnn_package.py
文件中封装了一个类TextClassification,对于样本数量在10万左右的分类任务较为适用。
因为本文作者写了类似的文章,并且比本片文章的样本数量更多,难度更大。
1.理解cnn_test.ipynb
文件推荐阅读《基于tensorflow+CNN的新浪新闻文本分类》,链接:https://cloud.tencent.com/developer/article/1351828
2.理解cnn_package.py
文件推荐阅读《基于tensorflow+CNN的垃圾邮件文本分类》,链接:https://cloud.tencent.com/developer/article/1355177
1.本文是作者第9个NLP小型项目,数据共有1712条。
2.本文是一个简单的例子,容易进行上手和实践,本文作者通过本文中代码的练习,完成了类的封装。