Character-level Convolutional Networks for Text Classification阅读笔记

概述

一篇比较经典的文本分类论文, 利用char-CNN结构提取特征, 而没有使用目前非常流行的词向量.

作者通过实验证明, 在数据量足够的情况下, 深层CNN网络不需要词语信息, 仅依赖字符信息就可以获得不错效果.

只利用字符信息可以有效解决拼写错误表情符号等问题.

模型

Key Modules

主要模块是一维卷积模块.

定义离散输入函数 g ( x ) [ 1 , l ] R g(x)\in[1, l] \rightarrow\R g(x)[1,l]R, 离散核函数 f ( x ) [ 1 , k ] R f(x)\in[1, k]\rightarrow \R f(x)[1,k]R,
则步长为d的卷积操作
:
之后, 进行一维的max-pooling

字符表

模型接受一系列编码字符作为输入,通过为输入语言规定大小为m的字符表来完成编码,然后使用1-m编码(或“one-hot”编码)量化每个字符。然后,将字符序列变换为具有固定长度 l 0 l_0 l0的这种m大小的向量的序列。

字符表一共包含以下70个字符, 其中26个英文小写字母, 10个数字还有其他一些常见标点符号.


可以发现, 作者使用的字符表并没有区分大小写, 这个是作者通过实验后做出的选择, 作者发现区分大小写后, 实验结果往往会变差.

模型设计

作者提出了大小两个卷积网络. 它们都有9层(6层卷积层, 3层全连接层).

输入的每个字符被表示为70维的one-hot向量. 每个输入的长度对于大模型设置为1014(也就是固定包含1014个字符, 截长补短), 小模型是256. 在三层全连接之间, 均使用dropout防止过拟合

参数利用高斯分布初始化, 其中大模型参数服从(0, 0.02)的高斯分布, 小模型服从(0, 0.05)的高斯分布.

数据增强

为了提高模型效果, 作者还采用了数据增强策略.

NLP的数据增强和CV及语音还是不太一样的. CV现在数据增强方法很多, 而且比较成熟, 比如对图像进行裁剪, 旋转等. 但是NLP数据增强相比较就复杂很多, 因为词与词之间往往存在依赖关系, 改变词序, 语义很容易就发生改变. 所以最好的数据增强方法便是人工转述改写, 但是这样工作量太庞大了.

作者使用英文近义词词典进行数据增强, 找一些同义词或短语, 随机选择数据中部分词进行替代.

实验

参数设置

  • optimizer: SGD with momentum 0.9
  • lr: 初始化0.01, 之后每三个batch减半
  • batch size: 128
  • dropout: 0.5

比较模型

作者分别于传统方法和深度模型进行比较

传统方法

手动提取特征, 构建线性分类器.

  • Bag-of-words & TF-IDF
  • Bag-of-ngrams & TF-IDF
  • Bag-of-means & TF-IDF

深度模型

  • Word-based Convnet
  • LSTM

数据集

实验结果

全部评论

相关推荐

今天周一休息,突发奇想写一篇阶段总结。如题,我已经去了一个和Java彻底毫无关联的行业。曾经我以为自己能在计算机行业发光发热,没想到刚入行一年多就当了逃兵。从最开始的热爱到现在一看到代码就厌恶,不知道自己经历了什么。所以我去干什么了?答案是:在成都当了租房销售。上班那会压力大了就念叨着去干租房中介,但是一直下不去这个决心,想着自己学了四年多的计算机知识,终究还是不甘心。终于在某一天准备八股文的时候,看着无数篇和工作内容关系不大的理论知识,那一刻下定决心,决定尝试一下销售行业,也算是给自己一个交代。后面阴差阳错的投了成都自如去当租房管家,没想到面试很顺利,在当天一百多个面试的人里面,我成为了为数不多通过的几个幸运儿之一。目前已经培训通过,正式入职,也开了单,也有压力但是每天过得很开心,真心喜欢那种和人交流的感觉,哪怕是最后没有选择找我租房。说这些也是想告诉那些大三,大四正在找Java实习而焦虑的同学:你们现在还年轻,选择很多,容错率也很高,可以尽情去尝试自己喜欢的行业和工作。不用因为某一次的面试没通过或者简历石沉大海而焦虑,更不用因为身边人都在挤编程的独木桥就强迫自己跟风。也算是自己的碎碎念吧,也希望自己能在新的领域取得一点小成就。也祝牛油工作顺利!
沉淀小子:干啥都不丢人啊,生存是必须要的,销售很考验一个人综合素质能力的,好的销售人脉和资源可不比写字楼的白领差啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务