前言
文本分类任务是一个经久不衰的课题,其应用包括垃圾邮件检测、情感分析等。
传统机器学习的做法是先进行特征工程,构建出特征向量后,再将特征向量输入各种分类模型(贝叶斯、SVM、神经网络等)进行分类。
随着深度学习的发展以及RNN、CNN的陆续出现,特征向量的构建将会由网络自动完成,因此我们只要将文本的向量表示输入到网络中就能够完成自动完成特征的构建与分类过程。
就分类任务而言,CNN比RNN更为合适。CNN目前在图像处理方向应用最为广泛,在文本处理上也有一些的应用。本文将参考Denny Britz的WILDML教程 IMPLEMENTING A CNN FOR TEXT CLASSIFICATION IN TENSORFLOW 来设计一个简单的CNN,并将其应用于中文垃圾邮件检测任务。
正文
1 预备知识
1.1神经网络基础知识
如果你对深度学习或RNN、CNN等神经网络并不太熟悉,请先移步至这里寻找相关文章进行精读,这个博主写的每一篇文章都很好,由浅至深,非常适合入门。
1.2如何将CNN运用到文本处理
参考understanding-convolutional-neural-networks-for-nlp
1.3CNN网络结构和实现方法(必读)
此博文中的CNN网络结构和实现方法绝大部分是参考了 IMPLEMENTING A CNN FOR TEXT CLASSIFICATION IN TENSORFLOW 这篇文章的,CNN的结构和实现细节在这篇文章均有详述,在此我就不运相同的内容了,在请务必精读这篇文章。
2 训练数据
2.1 中文垃圾邮件数据集
说明:对TREC06C进行了简单的清洗得到,以utf-8格式存储
下载地址:百度网盘
2.2垃圾邮件
spam_5000.utf8