Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践
运行 python run_cnn.py test 在测试集长进行测试。
练习与验证
还可以经由过程进一步的调节参数,来达到更好的效不雅。
如今,TensorFlow大年夜版本已经进级到了1.3,对很多的收集层实现了更高层次的封装和实现,甚至还整合了如Keras如许优良的一些高层次框架,使得其易用性大年夜大年夜晋升。比拟夙兴的底层代码,如今的实现加倍简洁和优雅。
本文是基于TensorFlow在中文数据集上的简化实现,应用了字符级CNN和RNN对中文文本进行分类,达到了较好的效不雅。
数据集
本文采取了清华NLP组供给的THUCNews消息文本分类数据集的一个子集(原始的数据集大年夜约74万篇文档,练习起来须要花较长的时光)。数据集请自行到THUCTC:一个高效的中文文本分类对象包下载,请遵守数据供给方的开源协定。
本次练习应用了个中的10个分类,每个分类6500条数据。
类别如下:
体育, 财经, 房产, 家居, 教导, 科技, 时尚, 时政, 游戏, 娱乐
这个子集可以在此下载:链接:http://pan.baidu.com/s/1bpq9Eub 暗码:ycyw
预处理
数据集划分如下:
- 练习集: 5000*10
- 验证集: 500*10
- 测试集: 1000*10
大年夜原数据集生成子集的过程请参看helper下的两个脚本。个中,copy_data.sh用于大年夜每个分类拷贝6500个文件,cnews_group.py用于将多个文件整合到一个文件中。履行该文件后,获得三个数据文件:
- cnews.train.txt: 练习集(50000条)
- cnews.val.txt: 验证集(5000条)
- cnews.test.txt: 测试集(10000条)
data/cnews_loader.py为数据的预处理文件。
- read_file(): 攫取文件数据;
- build_vocab(): 构建词汇表,应用字符级的表示,这一函数会将词汇表存储下来,避免每一次反复处理;
- read_vocab(): 攫取上一步存储的词汇表,转换为{词:id}表示;
- read_category(): 将分类目次固定,转换为{类别: id}表示;
- to_words(): 将一条由id表示的数据从新转换为文字;
- preocess_file(): 将数据集大年夜文字转换为固定长度的id序列表示;
- batch_iter(): 为神经收集的练习预备经由shuffle的批次的数据。
经由数据预处理,数据的格局如下:
CNN卷积神经收集
设备项
CNN可设备的参数如下所示,在cnn_model.py中。
- class TCNNConfig(object):
- """CNN设备参数"""
- embedding_dim = 64 # 词向量维度
- seq_length = 600 # 序列长度
- num_classes = 10 # 类别数
- num_filters = 128 # 卷积核数量
- kernel_size = 5 # 卷积核尺寸
- vocab_size = 5000 # 词汇表达小
- hidden_dim = 128 # 全连接层神经元
- dropout_keep_prob = 0.5 # dropout保存比例
- learning_rate = 1e-3 # 进修率
- batch_size = 64 # 每批练习大年夜小
- num_epochs = 10 # 总迭代轮次
- print_per_batch = 100 # 每若干轮输出一次结不雅
- save_per_batch = 10 # 每若干轮存入tensorboard
CNN模型
具体参看cnn_model.py的实现。
大年夜致构造如下:
推荐阅读
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 我们在客岁的夏天,也就是微软推送Windows 10周年更新的时刻写过一篇关于若何禁用Windows 10更新的文┞仿>>>详细阅读
本文标题:CNN与RNN对中文文本进行分类--基于TENSORFLOW实现
地址:http://www.17bianji.com/lsqh/39190.html
1/2 1