textcnn 分类

1 目的和思想

textcnn 模型的目的:分类
textcnn 的整体思想:cnn也可以用于nlp,filter不会左右移动,只往下移

2 模型原理

模型实现:

  1. 输入词向量,每个词向量维度相同,不够的补零,多的去掉
  2. (卷积)用多个filter框词向量,框住的部分与filter做矩阵计算,得到一个值,依次往下移动
  3. (池化)将卷积后的矩阵进行池化,变为一个固定长度的矩阵
  4. (全连接)把定长的所有矩阵拼在一起,通过softmax输出每个类的概率
    在这里插入图片描述

3 textcnn 总结

textcnn 可以利用训练好的词向量进行分类,能和word2vec结合,但是关于nn的都不能完全解释

4 textcnn 函数使用

4.1 输入

  1. 导入数据
    在这里插入图片描述
  2. 查看数据缺失情况
train_data.info()

在这里插入图片描述

  1. 查看每类的数量
from collections import Counter
Counter(list(train_data.label))
  1. 再jieba分词,分割的词不能在停用词中
import jieba 
def cut(sentence):
  return [token for token in jieba.lcut(sentence) if token not in stopwords]
  1. 利用训练好的词向量匹配词,建立两个字典,一个是{word:index},一个是{index:word},目的是为了能够把word和词向量矩阵对应起来
    词表的大小

4.2 函数及参数

创建 textcnn 类,需要自己写textcnn,给定必要参数,然后输入数据训练

class textcnnconfig(object):
    """配置参数"""
    embedding_dim = 64  # 词向量宽度
    seq_length = 1000   # 输入矩阵的宽度
    num_classes = 11    # 类别数
    num_filters = 256   # 卷积核数目
    kernel_size = 5     # 卷积核尺寸,即卷积核覆盖的词汇数量
    vocab_size = 6000   # 词汇表大小
    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

4.3 输出及应用

查看训练中 loss 函数的值,便训练好模型了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值