文本分类-TextCNN

TextCNN

在这里插入图片描述
Yoon Kim在论文(2014 EMNLP) Convolutional Neural Networks for Sentence Classification提出TextCNN。

将卷积神经网络CNN应用到文本分类任务,利用多个不同size的kernel来提取句子中的关键信息(类似于多窗口大小的ngram),从而能够更好地捕捉局部相关性。

TextCNN 通过卷积核提取文本序列当中的信息,通过max pooling选取最符合的特征。

核心代码
class TextCNN(nn.Module):

    def __init__(self, base_size, kernels):
        super(TextCNN, self).__init__()

        self.base_size = base_size
        self.kernels = kernels

        self.convs = []

        for k in kernels:
            conv = nn.Conv2d(1,1,(k,base_size))
            self.convs.append(self.try_cuda(conv))


    def forward(self, data, length):

        result = []
        for i in range(len(self.kernels)):
            k_size = self.kernels[i]
            k_length = length - k_size + 1

            conv = self.convs[i]
            pool = nn.MaxPool2d(k_length)
            target = conv(data)
            target = pool(target)
            target = target.view(-1,1)
            result.append(target)

        return torch.cat(result, dim=1)


    def try_cuda(self, target):
        if torch.cuda.is_available():
            return target.cuda()
        else:
            return target

完整代码

https://github.com/rookitkitlee/TextClassifier/tree/master/TextCNN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值