论文笔记:Character-level Convolutional Networks for Text Classification

论文笔记:Character-level Convolutional Networks for Text Classification

Introduction

  • To date,almost all techniques of text classification are based on words, in which simple statistics of some ordered word combinations (such as n-grams) usually perform the best
    几乎所有的文本分类技术都是基于单词的,其中一些有序单词组合(如n-gram)的简单统计通常表现得最好
  • In this article we explore treating text as a kind of raw signal at character level, and applying temporal (one-dimensional) ConvNets to it.
    将文本作为一种字符级信号来处理,并将其应用于时间(一维)变换
  • It has been shown that ConvNets can be directly applied to distributed [6] [16]
    or discrete [13] embedding of words, without any knowledge on the syntactic or semantic structures of a language.
    卷积网络可直接应用于分布式或离散词向量
    注:word embedding
    词嵌入,也叫词向量。对于文本数据,我们需要将其转换为数值型才能输入到模型中。词向量就是这样一种转换数据的方法。通常我们表示文本数据是将其one-hot编码,比如某文本有10000个不同的词汇,我们将其编码成10000维的向量,其中只在某一位数值是1,其他是0。那么一个语句包含了多个词汇,我们如何将其转化为多维向量。一种是纯粹的自用one-hot编码即可,但是这样没有考虑词汇与词汇之间的相关性,也没有考虑语法结构问题。
    所以,我们参考自编码模型,通过输入相关的词汇(x_a,x_b)对作为模型的输入输出,求得其中间隐藏层的权重矩阵w。然后将w乘以输入语句X就可以得到了我们说想要的这个句子的词向量表示。

Advantages

  • on large scale datasets, deep ConvNets do not require the knowledge of words
    大规模数据集上,不需要单词知识,不需要了解了解语言的句法或语义结构
  • Working on only characters also has the advantage that abnormal character combinations such as misspellings and emoticons may be naturally learnt
    不正常的字符组合,如拼写错误和表情符号,可以自然地学会处理

Design of Character-level ConvNets

  • Key Modules
    Character-level Convolutional Networks
  • design of character-level ConvNets for text classification
    介绍用于文本分类的字符级卷积网络的设计
    假设我们有一个离散的输入函数g(x),它的取值范围是[1, l]中的实数。有一个离散的核函数f(x),它的取值范围是[1, k]中的实数。f(x)和g(x)以步长为d的卷积h(y)
    在这里插入图片描述
    在这里插入图片描述
    其中,c = k - d + 1 是一个偏移常数。就像计算机视觉中的传统卷积神经网络,模型通过一系列的核函数来参数化,在输入为gi(x)和输出为hj(y)的时候,这些核函数我们表示为fij(x),(i = 1, 2,…,m,以及j = 1, 2,…,n),我们也将其称为权重。我们将每个gi称为输入特征,每个hj称为输出特征,m叫输入特征大小,n叫输出特征大小。输出hj(y)是通过gi(x)和fij(x)之间的卷积核来得到的。

在这里插入图片描述
帮助我们训练较深模型的一个关键模块是有时做的最大池化操作。若有一个离散的输入函数g(x),它的取值范围是[1, l](中的实数。则它的最大池化操作函数h(y)
在这里插入图片描述

在这里插入图片描述
这个特有的池化模型能够使我们训练深度超过6层的ConNets
我们的非线性处理使用的是h(x) = max{0, x},这就比较像ReLUs了。
注:ReLUs
线性整流函数(Rectified Linear Unit, ReLU),又称修正线性单元,是一种人工神经网络中常用的激活函数(activation function),通常指代以斜坡函数及其变种为代表的非线性函数。
在这里插入图片描述

算法使用的是随机梯度下降法,最小批量大小是128,使用0.9的动量以及0.01的初始步长,步长每3个时段减半,持续10次。每个时段都从各类中随机采取相同数量的样本。

  • Character quantization 字符的量化方法
    作者把文本当成字符序列,每个字符用一个m维长度的向量表示,所以首先为我们要训练的语言建立一个大小为m的字母表,字母表由l0个字符组成,然后使用“1- of - m”或“one - hot”编码每个字符。超过出l0的任何字都被忽略掉,以及,任何不在我们定义的字母表中的字符(比如空白字符)都用零向量表示。字符量化顺序是向后的,因此最新读取的字符始终位于输出的开头附近,这使得全连接层可以轻松地将权重与最新读数相关联。
    注:1- of - m(one-hot)
    在很多机器学习任务中,特征并不总是连续值,而有可能是分类值。

离散特征的编码分为两种情况:

1、离散特征的取值之间没有大小的意义,比如color:[red,blue],那么就使用one-hot编码

2、离散特征的取值有大小的意义,比如size:[X,XL,XXL],那么就使用数值的映射{X:1,XL:2,XXL:3}

使用pandas可以很方便的对离散型特征进行one-hot编码
但是,即使转化为数字表示后,上述数据也不能直接用在我们的分类器中。因为,分类器往往默认数据数据是连续的,并且是有序的。但是,按照我们上述的表示,数字并不是有序的,而是随机分配的。

独热编码
为了解决上述问题,其中一种可能的解决方法是采用独热编码(One-Hot Encoding)。独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。

例如:

自然状态码为:000,001,010,011,100,101

独热编码为:000001,000010,000100,001000,010000,100000
可以这样理解,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征(如成绩这个特征有好,中,差变成one-hot就是100, 010, 001)。并且,这些特征互斥,每次只有一个激活。因此,数据会变成稀疏的。

这样做的好处主要有:

解决了分类器不好处理属性数据的问题

在一定程度上也起到了扩充特征的作用

pandas之get_dummies方法

模型中使用的字母表总共70个字符,包含26个英文字母,10个数字,33个其他的字符等,如下所示:
在这里插入图片描述
还将与使用不同字母表的模型进行比较,其中区分大写字母和小写字母。

  • Model Design
    我们设计了一大一小两个卷积网络,他们的深度都是9层,包括6个卷积层和3个全连接层,如下图所示:
    在这里插入图片描述
    由于我们的量化方式,输入特征是70维的,即有70个特征,并且每个特征的长度是1024(对于不同的问题可能不一样)。看来,似乎1024个字符已经能够捕获大部分我们感兴趣的文本了。另外,我们在3个全连接层之间插入两个dropout模块以实现正则化(regularize)。(dropout一般是用来防止过拟合的)他们dropout的概率是0.5。

下表1列出了卷积层的所有配置,表2列出了全连接层的配置。
在这里插入图片描述
我们使用高斯分布初始化权重,初始化大模型和小模型的平均值和标准差分别是(0, 0.02)和(0, 0.05)
在这里插入图片描述

  • Data Augmentation using Thesaurus 使用同义词典进行数据扩充
    研究表明,合适的数据扩充可以降低深度学习模型泛化误差。但文本的数据扩充不能像图像和语言进行数据转换,因为文本的序列顺序蕴含着丰富的语法和语义,因此最好的数据扩充方式最佳方法:同义词替换
    experiment
    使用一份英语词典进行实验数据扩充
    该词典来自libreoffice1项目中使用的myteas组件
    这个同义词库是从WordNet中获得的
    在WordNet中,每个单词或短语的同义词都是根据与最常见意义的语义接近程度来排序的
    为了决定要替换多少个单词,我们从给定的文本中提取所有可替换的单词,并随机选择其中的r个进行替换。数字r的概率由参数p的几何分布决定
    给定单词的同义词的索引s也由另一个几何分布决定。这样,当同义词远离最常见的意思时,选择同义词的概率就会变小。
    在这里插入图片描述
    p=0.5,q=0.5。

Comparison Models

  • Traditional Methods

  • Bag-of-words and its TFIDF
    对于每个数据集,从训练子集中选择50000个出现最多的单词,构建词袋模型。对于普通的单词包,我们使用每个单词的计数作为特征。

  • Bag-of-ngrams and its TFIDF
    通过从每个数据集的训练子集中选择500000个出现最多的的n-gram(最多5-gram)来构造ngrams包模型。特征值的计算方法与词袋模型相同。

  • Bag-of-means on word embedding
    该模型使用k-均值对每个数据集学习word2vec,然后将这些作为聚类词的代表。我们考虑训练子集中出现超过5次的所有单词。embedding尺寸为300。均值包特征的计算方法与单词包模型中的方法相同。平均数是5000。

  • Deep Learning Methods

  • Word-based ConvNets

  • Long-short term memory
    使用的LSTM模型是基于单词的,使用预训练的word2vec,embedding大小为300,该模型是将所有LSTM单元的输出均值组成一个特征向量,然后对该特征向量进行多项式logistic回归。输出维度为512。我们使用的LSTM的变体是常见的“vanilla”架构,还使用了梯度裁剪[25],其中梯度范数限制为5
    在这里插入图片描述

  • Choice of Alphabet
    对于英语字母表来说,一个明显的选择就是是否区分大小写字母。正则化后语义不会随字母大小写的不同而改变

Large-scale Datasets and Results

以前对不同领域的CNN的研究表明,它们通常能很好地处理大规模数据集,特别是当模型包含低层次的原始特征时,比如我们的例子中的字符。然而,大多数用于文本分类的开放式数据集都非常小,并且大规模数据集被分割成比测试小得多的训练集。因此我们的实验建立了几个大规模的数据集,从几十万到几百万个样本不等。
在这里插入图片描述

  • AG’s news corpus
    在web2上获得了AG的新闻文章语料库。它包含496835篇来自2000多个新闻来源的分类新闻文章。我们从这个语料库中选择4个最大的类来构造我们的数据集,只使用title和description字段。每个班的训练样本数为30000个,测试样本数为1900个。

  • Sogou news corpus
    这个数据集是SogouCA和SogouCS新闻语料库的组合,共包含2909551篇不同主题频道的新闻文章。然后,我们用它的URL标记每一条新闻,通过手动分类它们的域名。这为我们提供了大量的新闻文章,并标注了它们的类别。有大量的类别,但其中大多数只包含很少的文章。我们选择5个类别-“体育”、“金融”、“娱乐”、“汽车”和“科技”。每类的培训样本数为9万个,测试样本数为1.2万个。虽然这是一个中文数据集,但我们使用pypinyin包和jieba中文切分系统来生成拼音(汉语的语音罗马化)
    实验结果
    在这里插入图片描述

  • DBPedia ontology dataset
    DBpedia是一个从Wikipedia中提取结构化信息。我们随机选择40000个训练样本和5000个测试样本。我们为这个数据集使用的字段包含每个维基百科文章的标题和摘要。

  • Yelp reviews
    Yelp reviews数据集来自2015年的Yelp数据集挑战赛。这个数据集包含1569264个有评论文本的样本。从这个数据集构造了两个分类任务:一个预测用户给出的全部标签数,另一个通过考虑标签1和2为负,3和4为正来预测标签。有13万个训练样本和1万个测试样本,带标签数据集在每个标签有28万个训练样本和1.9万个测试样本

  • Yahoo! Answers dataset
    语料库包含4483032个问题及其答案。我们使用10个最大的主类别从这个语料库构建了一个主题分类数据集。每节课包含14万个培训样本和5000个测试样本。我们使用的字段包括问题标题、问题内容和最佳答案。

  • Amazon reviews
    我们从斯坦福网络分析项目(SNAP)获得了一个亚马逊评论数据集,该数据集跨越18年,来自2441053个产品的6643669个用户的34686770条评论。与Yelp review数据集类似,我们还构建了两个数据集——一个是满分预测,另一个是极性预测。全数据集包含60万个训练样本和13万个测试样本,而极性数据集包含每个极性情绪的18万个训练样本和20万个测试样本。使用的字段是review title和review content。

Discussion

在这里插入图片描述

每个图都是通过比较模型和我们的字符级ConvNet模型的误差之差来计算的,然后除以比较模型的误差。图中所有的convnet都是经过词库扩充的大型模型。

  • Character-level ConvNet is an effective method

    字符级的ConvNets可以在不需要单词的情况下进行文本分类。这有力地表明,语言也可以被认为是一种信号

  • Dataset size forms a dichotomy between traditional and ConvNets models

    卷积网络在数据集几百万的时候更有效

  • ConvNets may work well for user-generated data.

    ConvNets可以很好地处理用户生成的数据。用户生成的数据在文本的编排程度上有所不同。例如,在我们的百万级数据集中,亚马逊评论往往是原始的用户输入,这个输入带有表情和其他字符,图中比较了基于单词的深层模型(图3c、3d和3e)表明,字符级convNets对于不太精确的用户生成的文本更有效。这个特性表明ConvNets可能对现实世界的场景有更好的适用性。convnet确实很擅长识别外来字符组合,例如拼写错误和表情符号,但是实验未能进行证明

  • Choice of alphabet makes a difference

    字母表的选择会有所不同。图3f显示,通过区分大写字母和小写字母来更改字母表可能会有所不同。对于百万规模的数据集,似乎不做这样的区分通常效果更好

  • Semantics of tasks may not matter

    任务的语义可能并不重要。我们的数据集包括两种任务:情绪分析(yelp和Amazon评论)和主题分类(所有其他任务)

  • Bag-of-means is a misuse of word2vec

    Bag-of-means是对word2vec的误用。从表4和图3a中可以观察到的一个最明显的事实是,Bag-of-means模型在每种情况下都表现得更差。与传统的文本分类模型相比,这种简单的分布式单词表示方法并不能给文本分类带来优势

  • There is no free lunch

    我们的实验再次证明,没有一个单一的机器学习模型可以适用于所有类型的数据集。本节讨论的因素都可以在决定哪种方法最适合某些特定应用时发挥作用。

Conclusion and Outlook

本文对文本分类中字符级卷积网络进行了实证研究。使用几个大规模的数据集与大量的传统和深度学习模型进行了比较。一方面,分析表明字符级ConvNet是一种有效的方法。另一方面,我们的模型在比较中的表现如何取决于许多因素,例如数据集大小、文本是否经过整理以及字母表的选择。在未来,我们希望将字符级的ConvNets应用到更广泛的语言处理任务中,特别是当需要结构化输出时。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大桃子技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值