简单的TextCNN由入门到入魔

1、TextCNN模型流程是什么

        TextCNN的网络结构比较简单,流程就是将一句话转化为一张二维数据,二维数据的形状类似于图像特征图,图像的特征图的行列为图像的像素值,二维数据的列是个词,行是该词的向量(可以认为是好多个值代表了这个词),二维数据由编码获得。通过卷积的形式对句子进行卷积,提取句子特征,再将特征放入到全连接网络进行预测。

2、数据编码

1、读取数据(txt,csv,xlsx形式)

import pandas as pd
fp = pd.read_excel('data.xlsx')
text = fp.iloc[:,:-1]
label = fp.iloc[:,-1]

3、数据处理(分词->词汇表->编码)

   1. 首先对文本进行分词,使用jieba库(为了将文本数据(str)变成训练数据(tensor),分词后才能转)

import jieba
train=[list(jieba.cut(i)) for i in train]
test=[list(jieba.cut(i)) for i in test]

     2. 利用分词好的数据集构造词汇表(为了将文本数据(str)变成训练数据(tensor))

dataset=train+test
voc = []
for i in dataset:
    voc = voc + list(i)
vocab = list(set(voc))
vocab_size=len(vocab)

3. 利用词汇表将文本数据变为数字数据

#词汇表
word2idx = {w: i for i, w in enumerate(vocab)}
#类别
num_classes = len(set(labels))
#词汇量
vocab_size = len(vocab)
# 文本数据转数据
input, labels=make_data(xx_train,labels,word2idx)

def make_data(sentences, labels,word2idx):
    inputs = []
    #文本转数据
    for sen in sentences:
        inputs.append([word2idx[n] for n in sen])

        # 清楚重复的数据
        # inputs.append(list(set([word2idx[n] for n in sen])))
    # 将数据设置成等长数据  不够的数据补0
    
    #使用最长的文本作为矩阵的列数   不够的长的补0
    k=[len(i) for i in inputs]
    k=max(k)
    for i in inputs:
        if len(i)<k:
            for _ in range(k-len(i)):
                i.append(0)
    return inputs, labels

4、构造数据

    将数据转为可以用于训练的数据

batch_size = 16
inputs = torch.tensor(input)
labels = torch.tensor(labels)
dataset = Data.TensorDataset(inputs, labels)
loader = Data.DataLoader(dataset, batch_size, True)

5、构建模型

6、训练模型

7、测试模型

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值