pytorch自然语言处理基础模型之三:TextCNN

本文介绍了TextCNN模型的基本原理,它将CNN应用于文本分类任务,通过不同size的kernel捕获句子关键信息。文章还提供了简单的代码实现,包括数据处理、网络构建、训练和验证模型的过程。
摘要由CSDN通过智能技术生成

1、模型原理

       TextCNN简介是CNN的一种变形,CNN(2011)主要运用于图片分类,Yoon Kim在论文《Convolutional Neural Networks for Sentence Classification》中提出了TextCNN。将卷积神经网络CNN应用到文本分类任务,利用多个不同size的kernel来提取句子中的关键信息(类似于多窗口大小的ngram),从而能够更好地捕捉局部相关性。
       模型的详细过程如下所示:
在这里插入图片描述
Embedding:第一层是图中最左边的7乘5的句子矩阵,每行是词向量,维度=5,这个可以类比为图像中的原始像素点。
Convolution:然后经过 kernel_sizes=(2,3,4) 的一维卷积层,每个kernel_size 有两个输出 channel。
MaxPolling:第三层是一个1-max pooling层,这样不同长度句子经过pooling层之后都能变成定长的表示。
FullConnection and Softmax:最后接一层全连接的 softmax 层,输出每个类别的概率。

2、代码实现

本文以简单数据集和网络结构实现TextCNN,使用的参数与原论文的不同,目的是便于读者更好的理解该网络的原理。

1. 导入需要的库,设置数据类型

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim 
from torch.autograd import Variable
import numpy as np
dtype = torch.FloatTensor

2. 创建数据和字典

// 3 words sentences (=sequence_length is 3)
sentences = ["i love you", "he loves me", "she likes baseball", 
"i hate you", "sorry for that", "this is awful"]
labels = [1, 1, 1, 0, 0, 0]  // 1 is good, 0 is not good.

word_list = " ".join(sentences).split()
word_list = list(set(word_list))
word_dict = {
   w: i for i, w in enumerate(word_list)}
vocab_size = len(word_dict)

3. 创建batch

inputs = [
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值