基于tensorflow+CNN的垃圾邮件文本分类

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
image.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
image.png

在命令模式下,点击 L键,会显示代码行数。
推荐博客《Text-CNN 文本分类》从模型原理上辅助理解,链接: https://blog.csdn.net/chuchus/article/details/77847476
本文作者解释每行代码含义如下:
第1-15行代码
  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值