text-cnn

by cjymz886

cjymz886 / text-cnn

嵌入Word2vec词向量的CNN中文文本分类

249 Stars 85 Forks Last release: Not found MIT License 52 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Text classification with CNN and Word2vec

本文是参考gaussic大牛的“text-classification-cnn-rnn”后,基于同样的数据集,嵌入词级别所做的CNN文本分类实验结果,gaussic大牛是基于字符级的;

进行了第二版的更新:1.加入不同的卷积核;2.加入正则化;3.词仅为中文或英文,删掉文本中数字、符号等类型的词;4.删除长度为1的词;

训练结果较第一版有所提升,验证集准确率从96.5%达到97.1%,测试准确率从96.7%达到97.2%。

本实验的主要目是为了探究基于Word2vec训练的词向量嵌入CNN后,对模型的影响,实验结果得到的模型在验证集达到97.1%的效果,gaussic大牛为94.12%;

更多详细可以阅读gaussic大牛的博客:text-classification-cnn-rnn

1 环境

python3
tensorflow 1.3以上CPU环境下
gensim
jieba
scipy
numpy
scikit-learn

2 CNN卷积神经网络

模型CNN配置的参数在text_model.py中,具体为:

image

模型CNN大致结构为:

image

3 数据集

本实验同样是使用THUCNews的一个子集进行训练与测试,数据集请自行到THUCTC:一个高效的中文文本分类工具包下载,请遵循数据提供方的开源协议;

文本类别涉及10个类别:categories = ['体育', '财经', '房产', '家居', '教育', '科技', '时尚', '时政', '游戏', '娱乐'],每个分类6500条数据;

cnews.train.txt: 训练集(5000*10)

cnews.val.txt: 验证集(500*10)

cnews.test.txt: 测试集(1000*10)

训练所用的数据,以及训练好的词向量可以下载:链接: https://pan.baidu.com/s/1DOgxlY42roBpOKAMKPPKWA,密码: up9d

4 预处理

本实验主要对训练文本进行分词处理,一来要分词训练词向量,二来输入模型的以词向量的形式;

另外,词仅为中文或英文,词的长度大于1;

处理的程序都放在loader.py文件中;

5 运行步骤

python trainword2vec.py,对训练数据进行分词,利用Word2vec训练词向量(vectorword.txt)

python texttrain.py,进行训练模型

python text
test.py,对模型进行测试

python text_predict.py,提供模型的预测

6 训练结果

运行:python texttrain.py

本实验经过6轮的迭代,满足终止条件结束,在global
step=2000时在验证集得到最佳效果97.1%

image

7 测试结果

运行:python texttest.py

对测试数据集显示,test
loss=0.1,test_accuracy=97.23%,其中“体育”类测试为100%,整体的precision=recall=F1=97%

image

8 预测结果

运行:python text_predict.py

随机从测试数据中挑选了五个样本,输出原文本和它的原文本标签和预测的标签,下图中5个样本预测的都是对的;

image

9 参考

  1. Convolutional Neural Networks for Sentence Classification
  2. gaussic/text-classification-cnn-rnn
  3. YCG09/tf-text-classification

image

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.