2018年10月12日笔记
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信用卡,请阅读我的另一篇文章《在谷歌云服务器上搭建深度学习平台》,链接:https://www.jianshu.com/p/893d622d1b5a
3.下载并解压数据集
数据集下载链接: https://pan.baidu.com/s/10QtokJ8_tkK6I3GifalxWg 提取码: uytb
压缩文件CNN垃圾邮件分类中有3个文件,如下图所示:
![10345471-9f24503040bc2f76.png](https://i-blog.csdnimg.cn/blog_migrate/ff32842a94cb8d524c1c21dc5adb457a.webp?x-image-process=image/format,png)
1.cnn_package.ipynb是本文的代码文件,读者可以直接运行
2.mailContent_list.pickle文件是本文作者处理好的 邮件内容文件,可以用pickle.load方法加载;
3.mailLabel_list.pickle文件是本文作者处理好的 邮件标签文件,可以用pickle.load方法加载。
数据集中共有2种分类:垃圾邮件用spam表示,正常邮件用ham表示。
垃圾邮件样本40000多条,正常邮件样本20000多条,样本总共60000多条。
4.完整代码
完整代码已经在数据集文件中给出,即cnn_package.ipynb文件;
从工程开发的角度考虑,本文作者封装了一个类TextClassification,对于样本数量在10万左右的分类任务较为适用。
后面章节中将讲解实现细节。
5.编写类TextClassification
认为编写类有困难,可以先阅读本文作者的另外一篇文章《基于tensorflow+CNN的新浪新闻文本分类》,链接:https://www.jianshu.com/p/b1000d5345bb,这一篇文章的代码没有进行封装,而且讲解较为详细。
读者阅读下文中的行数时,可以先把代码复制到jupyter notebook的代码块中。
在代码块中按Esc键,进入命令模式,代码块左边的竖线会显示蓝色,如下图所示:
![10345471-3c3360857ee33ed8.png](https://i-blog.csdnimg.cn/blog_migrate/7ca70d6898d8e699c778f6868468f080.webp?x-image-process=image/format,png)
在命令模式下,点击 L键,会显示代码行数。
推荐博客《Text-CNN 文本分类》从模型原理上辅助理解,链接: https://blog.csdn.net/chuchus/article/details/77847476
本文作者解释每行代码含义如下:
第1-15行代码