zoukankan      html  css  js  c++  java
  • TextCNN

    第一个模型就是TextCNN
    对于textcnn一个基本介绍可以参考这里
    textcnn 模型的pytorch实现版本

    需要参考的链接
    文本分类模型pytorch实现-1
    文本分类模型pytorch实现-2
    文本分类模型多通道CNN讲解
    文本分类模型深度CNN讲解
    NLP如何入门不要看书,不要系统的学习,需要补那些线代的知识

    这个里面包含了基本处理中文的代码,我可以看一看

    CNN模型用在文本分类的方面,论文参考的是这里
    详细过程原理图如下:

    我对这个流程进行一个简单的梳理:

    首先第一点,我们要弄清楚为什么CNN可以被用在文本分类(或者从更大的方面讲为什么可以用在自然语言处理NLP方面)

    对于这一点,网络上有很多解释,我这里从最只用的角度去分析这个问题。

    CNN可以被用于图像,是因为图像是一个二维物体(这里假设是灰度图,是二维情况,如果是彩色图当然是三维情况)。这样CNN卷积操作才可以被使用。
    所以如果自然语言处理方面的任务想要使用CNN,一个核心操作就是要将文本想图像的方向类比-将文本转化为一个二维图像类似体(针对单通道情况)。
    我们知道,文本处理过程中,我们需要将一个句子中每个单词转化为词向量。那么一个句子就相当于含有n个单词,每个单词含有d维词向量。那么一个句子就可以很简单的被当做一个n*d的二维图像。这样CNN就可以处理文本。

    了解了上面这一点,TextCNN原理图中的第一步就可以清晰了解了。也就是图中最左边的7*5的句子矩阵。7代表的是句子长度,5代表的是单词词向量维度(当然这里只是简化了,一般词向量维度要远大于5,常用为200,300)。我们可以把这个句子矩阵中每个点类比为图像中的原始像素点。

    接下来,我们的操作就是进行卷积。卷积一个基本的概念就是卷积核。对于卷积核,我们需要掌握两个部分,一个是卷积核的大小,一个是卷积核的数量。在论文中,设定的卷积核的大小是三种,分别是2,3,4(注意这里的2,3,4代表的是卷积核的高度(也就是竖着的方向),对于卷积核的宽度(也就是横着的方向)我们要设定它与词向量的维度是一样的)。对于每一个大小的卷积核,我们设定它的数量是2(一般在实际操作中,会远远大于2,常用200)。我们知道与卷积核对应的是卷积之后的通道数。所以这里每种大小的卷积核对应两个通道的输出。明白了这一点,也就明白了上图中第二列和第三列的内容。第三列对应的就是卷积之后的结果。

    接下来,我们进行的就是最大池化操作,这里使用的是1-max pooling。经过这个操作之后,每个通道得到的就是一个像素点,将所有的这些点拼接起来。

    全连接层和softmax层

    流程就这样搞明白了,接下来,我们抓一下细节问题。

    首先对于词向量,有静态(static)和非静态(non-static)两种。静态方式就是说明在训练过程中我们是不更新词向量的,我们使用的是一些已经训练好的词向量,比如说word2vec预训练的词向量。这种情况对于数据量比较小的情况效果比较不错。另一种非静态的方式是在训练过程中更新词向量(这个词向量可以是我们在pytorch 中embedding层去初始化词向量,还可以是使用预训练的词向量)。我们一般推荐的是使用预训练的词向量例如word2vec,然后在训练过程中进行更新。当然如果我们具有足够的资源和数据,使用embedding随机初始化词向量,在训练过程中更新也是可以的。

    对于CNN中的通道,我们知道在图像中,我们是有着RGB三种通道的。一般来说文本文字矩阵是可以看做一个二维图像,如果想要使用通道数,我们一般是把同一个句子使用不同的embedding方式(比如说一个使用word2vec一个使用Glove或者一个使用静态词向量和fine-tunning词向量作为不同channel的做法)

  • 相关阅读:
    LeetCode 811. Subdomain Visit Count (子域名访问计数)
    LeetCode 884. Uncommon Words from Two Sentences (两句话中的不常见单词)
    LeetCode 939. Minimum Area Rectangle (最小面积矩形)
    LeetCode 781. Rabbits in Forest (森林中的兔子)
    LeetCode 739. Daily Temperatures (每日温度)
    三种方式实现按钮的点击事件
    239. Sliding Window Maximum
    14.TCP的坚持定时器和保活定时器
    13.TCP的超时与重传
    12.TCP的成块数据流
  • 原文地址:https://www.cnblogs.com/lzida9223/p/10535945.html
Copyright © 2011-2022 走看看