基于Tensorflow实现cnn字符级中文分类

代码地址:https://github.com/gaussic/text-classification-cnn-rnn

数据集

采用了清华NLP组提供的THUCNew新闻文本分类数据集的一个子集。数据集可在此链接http://thuctc.thunlp.org/下载。
本次训练有十个分类,每个分类6500条,总共65000条新闻数据。
具体类别如下

体育、财经、房产、家具、教育、科技、时政、游戏、娱乐

数据集划分如下:

  • 训练集:5000*10
  • 验证集:500*10
  • 测试集:1000*10
    从原始数据中获得子数据参看helper的两个脚本。

预处理数据

data/cnews_loader.py为数据的预处理文件。

  • read_file():读取文件;
  • build_vocab():构建词汇表,使用字符级的表示,这一函数会将词汇表储存下来;
  • read_category():将分类目录固定,转换为{类别:id}表示
  • to_words():将一条有id表示的数据重新转换为文字;
  • process_file():将数据集从文字转换为固定长度的id序列表示;
  • batch_iter():为神经网络的训练准备经过shuffle的批次的数据。
    经过处理,数据格式如下:
DataShapeDataShape
x_train[50000,600]y_train[50000,10]
x_val[5000,600]y_val[5000,10]
x_test[10000,600]y_test[10000,10]

CNN卷积神经网络

配置项参数如下,在cnn_model.py中

class TCNNConfig(object):
    """CNN配置参数"""

    embedding_dim = 64  # 词向量维度
    seq_length = 600  # 序列长度
    num_classes = 10  # 类别数
    num_filters = 256  # 卷积核数目
    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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值