字符级 CNN 分类模型的实现

上次发了一条字符级分类模型的推文, 读 Character-level Convolutional Networks for Text Classification

 

这两天在家里就是对字符级CNN分类论文进行了代码实现: 1509.01626 Character-level Convolutional Networks for Text Classification

 

项目代码见:https://github.com/howie6879/char cnn text_classification

 

项目环境:

 

Python3.6

 

Anaconda+Pipenv管理

 

使用

 

模型

 

模型结构和论文中介绍的一样:

 

 

论文中设计了 large 和  small 两种卷积网络,分别对应不同大小的数据集,且都由6个卷积层和3个全连接层共9层神经网络组成

 

对于英文数据,如果数据集不大,可以考虑使用包含大小写的字母表

 

数据集

 

ag news csv :新闻数据

 

对于英文数据,包含在 [ag_news_csv] 文件夹里面,信息如下:

 

训练集:120000

 

测试集:7600

 

类别:4

 

数据集处理类 [DataUtils] ,这里以训练集  shape 为例:

 

Input实例:(120000, 1014)

 

Label:(120000, 4)

 

配置

 

关于配置,请参考 [Config] 类:

 

训练

 

配置好环境之后,可以直接进行训练:

 

可以在测试集分出20000条作为验证集进行训练

 

迭代了三轮,就达到了论文中所说的效果 0.8522

 

准确率和误差图示:

 

 

可以看到,迭代6、7轮后的结果挺不错,也可以利用 Tensorboard 进行可视化:

 

测试

 

可以得到结果输出:

 

其中:

 

loss: 0.41

 

acc: 0.8789

 

说明

 

感谢论文作者 XiangZhang,JunboZhao,YannLeCun ,以及下面这些开源项目:

 

GitHub – mhjabreel/CharCNN

 

GitHub – mhjabreel/CharCnn_Keras: The implementation of text classification using character level convoultion neural networks using Keras

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注