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