基于tensorflow+CNN的搜狐新闻文本分类

这篇博客介绍了使用TensorFlow 1.6和CNN进行搜狐新闻文本分类的方法,包括环境配置、数据集下载、代码实现及模型评估。作者封装了一个TextClassification类,方便处理约10万条数据的分类任务。
摘要由CSDN通过智能技术生成

2018年10月13日笔记

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/1cfHHr5aLk76AE7qi7L122g 提取码: tvgn
压缩文件夹基于CNN的搜狐新闻文本分类中有8个文件,如下图所示:

10345471-f5a420dc6bd9391e.png
image.png

1.cnn_package.ipynb是本文的代码文件,读者可以直接运行;
2.getTrainTestDataSet.ipynb文件是获取训练集测试集数据的代码文件;
3.sohu_test.txt文件是测试集文件;
4.sohu_train.txt文件是训练集文件;
5.test_content_list.pickle是作者整理好的 测试集文本内容文件;
6.test_label_list.pickle是作者整理好的 测试集文本标签文件;
7.train_content_list.pickle是作者整理好的 训练集文本内容文件;
8.train_label_list.pickle是作者整理好的 训练集文本标签文件;

4.完整代码

完整代码已经在数据集文件中给出,即cnn_package.ipynb文件和getTrainTestDataSet.ipynb文件;
getTrainTestDataSet.ipynb文件中代码的作用是将文本文件转换为二进制文件,即4个pickle文件;
从工程开发的角度考虑,本文作者在cnn_package.ipynb文件中封装了一个类TextClassification,对于样本数量在10万左右的分类任务较为适用。
后面章节中将讲解实现细节。

5.获取数据

第1行代码导入库pandas,起别名pd;
第2行代码导入库pickle;
第4-5行代码分别读取训练集文件sohu_train.txt测试集文件sohu_test.txt
第6行代码将获取训练集内容列表train_content_list;
第7行代码将获取训练集标签列表train_label_list;
第8行代码将获取测试集内容列表test_content_list;
第9行代码将获取测试集标签列表test_label_list。
第10-17行代码调用pickle库的dump方法将python的对象转换为二进制文件。

import pandas as pd
import pickle

train_df = pd.read_csv('sohu_train.txt', sep='\t', header=None)
test_df = pd.read_csv('sohu_test.txt', sep='\t', header=None)
train_content_list = [k for k in train_df[1]]
train_label_list = [k for k in train_df[0]]
test_content_list = [k for k in test_df[1]]
test_label_list = [k for k in test_df[0]]
with open('train_content_list.pickle', 'wb') as file:
    pickle.dump(train_content_list, file)
with open('train_label_list.pickle', 'wb') as file:
    pickle.dump(train_label_list, file)
with open('test_content_list.pickle', 'wb') as file:
    pickle.dump(test_content
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值