读 Character-level Convolutional Networks for Text Classification

简介: 这篇论文提供了一个关于字符级卷积网络( ConvNets)在文本分类中应用实证研究,我们构建了几个大型数据集,以表明字符级卷积网络可以实现最先进的或竞争性的结果,针对传统模型(如词袋,n-gram及其TFIDF变体)和深度学习模型(如基于单词的ConvNets和循环神经网络)进行比较

Introduction


文本分类是自然语言处理中的一个经典问题,需要给自由文本文档分配预定义的类别。文本分类的研究范围包括从设计最佳特征到选择最佳机器学习分类器。到目前为止,几乎所有的文本分类技术都是基于单词的,一些单词有序组合的简单统计,如 N-gram,通常表现最好


另一方面,许多研究人员发现卷积网络( ConvNets)从计算机视觉应用到语音识别等,对于从原始信号中提取信息都有不错的效果,特别是,在深度学习研究的早期使用的延时网络本质上是对序列数据进行建模的卷积网络


在这篇文章中,我们探讨在字符层面上把文本作为一种原始信号,并将其应用于一维随机网络中。对于本文我们只使用文本分类任务作为例证来说明 ConvNets理解文本的能力,从历史上看,我们知道 ConvNets通常需要大规模数据集才能工作,因此我们也构建了其中的几个,提供了一系列与传统模型和其他深度学习模型的比较


将卷积网络应用于文本分类或自然语言处理是文献研究的热点,研究表明, ConvNets可以直接应用于分布式或离散的嵌入词,而不需要任何语言的句法或语义结构的知识,事实证明,这些方法与传统模型相比具有竞争力


还有一些相关的工作使用字符级特性进行语言处理,这些包括使用带有线性分类器的字符级n-gram,并将字符级特性合并到 ConvNets,特别是,这些 ConvNet方法以单词为基础,在单词或单词n-gram层提取字符级特征,形成分布式表示。对词性标注和信息检索的改进进行了观察


本文是第一篇只将字符应用于 ConvNets的文章,我们证明,在大规模数据集上训练时,深度 ConvNets不需要词汇知识,此外以前的研究结论认为, ConvNets不需要语言的句法或语义结构知识,这种工程上的简化对于能够适用于不同语言的单一系统来说是至关重要的,因为字符总是构成一个必要的结构,无论能否做到分割成词,仅处理字符还有一个好处,那就是可以自然而然地学会拼写错误和表情符号等不正常的字符组合


Character-level Convolutional Networks


在这部分,我们介绍了用于文本分类的字符级 ConvNets的设计,设计是模块化的,其中通过反向传播获得梯度以执行优化


Key Modules


主要组件是简单卷积模块,它简单地计算一维卷积。假设我们有一个离散输入函数:

12.jpg

和一个离散核函数:

13.jpg

具有步幅d的 f(x)g(y)之间的卷积:

14.jpg

被定义为:

15.jpg16.jpg

c=k-d+1是偏移常数,这个非常合用的模块使我们能够对 convnet 进行比6层更深的训练,而其他所有层都失败了。 A theoretical analysis of feature pooling in visual recognition.的分析可能对这个问题有所帮助


该模型使用的非线性函数是 h(x)=max{0,x},这使得我们的卷积层类似于校正的线性单位(ReLUs),使用的算法是128个小批量的随机梯度下降(SGD),使用动量0.9和初始步长0.01,每3个时间段减半,持续10次。 每个时期采用固定数量的随机训练样本,这些样本在类之间均匀采样。稍后将详细说明每个数据集的此数字。 实现使用 Torch 7完成


Character quantization


我们的模型接受一系列编码字符作为输入,通过为输入语言规定大小为m的字母表来完成编码,然后使用1-m编码(或“one-hot”编码)量化每个字符。然后,将字符序列变换为具有固定长度l0的这种m大小的向量的序列。忽略超过长度l0的任何字符,并且包括空白字符的不在字母表中的任何字符被量化为全零向量。字符量化顺序是向后的,因此字符的最新读数总是放在输出开始的附近,使得完全连接的图层可以很容易地将权重与最新读数联系起来

我们所有模型中使用的字母由70个字符组成,包括26个英文字母,10个数字,33个其他字符加一个全零向量:

abcdefghijklmnopqrstuvwxyz0123456789-,;.!?:'\"/\\|_@#$%^&*~`+-=<>()[]{}

稍后我们将会生成一个字母表加上大小写的模型并进行比较


模型设计


论文中设计了 largesmall两种卷积网络,都由6个卷积层和3个全连接层共9层神经网络组成

17.jpg

由于字母表长度为70,因此我们的输入特征为70,输入特征长度论文设定为1014,看起来1014个字符已经可以捕获大部分感兴趣的文本,我们还在三个全连接层之间插入两个dropout层以实现模型正则化,dropout概率为0.5,表1列出了卷积层的配置,表2列出了全连接层的配置:


表1:实验中的卷积层,卷积层的步幅为1,并且池化层都是非重叠的,因此我们省略了他们的步幅描述

18.jpg使用 Gaussiandistribution初始化权重,初始化模型的均值和标准差分别为:


  • large model:(0, 0.02)

  • small model:(0, 0.05)

表2:实验中的全连接层,最后一层的输出单元数由问题决定,例如,对于10分类问题将是10

19.jpg


对于不同的问题,我们的输入长度可能也是不同的(比如此例子: l0=1014),特征长度也是如此,从我们的模型设计可以很容易地知道,给定输入长度 l0,在最后一个卷积层之后(任何一个完全连接层之前)的特征长度为 l6 = ( l0-96) / 27,这个数字与第6层的特征大小相乘将给出第一个完全连接的层接受的输入维度


Data Augmentation using Thesaurus


许多研究人员发现,适当的数据扩充技术有助于降低深度学习模型的泛化误差,当我们能够找到模型可能具有的合适的不变性属性时,这些技术通常能够很好地工作。就文本而言,不能像图像或语音识别那样进行数据转换来增加数据,因为字符的顺序具有严格的句法和语义意义,因此最好的数据扩充方式应该是使用人类的重述文本类,但是这样昂贵且不切实际的,因为数据集太庞大了,综上,比较常见的做法是使用词汇和词组的近义词进行替代扩充。

20.jpg

Comparison Models


为了与竞争模型进行公平的比较,我们用传统和深度学习方法进行了一系列的实验。我们尽最大努力来选择可以提供可比性和有竞争力的模型,并且在没有偏向某个模型的情况下忠实的汇报结果


Traditional Methods


我们提到的传统方法都是使用手动提取特征并构建一个线性分类器, 在所有这些模型中,所使用的分类器都是一个多项式 Logit模型


  • Bag-of-words & TF-IDF

  • Bag-of-ngrams & TF-IDF

  • Bag-of-means & TF-IDF

Deep Learning Methods


近来深度学习模型开始应用于文本分类,我们选用两个简单且经典的模型来进行对比:


  • word-based ConvNet

  • long-short term memory (LSTM) recurrent neural network model

Choice of Alphabet


对于英语字母表,一个明显的选择就是是否要区分大写字母和小写字母,结论发现不区分时候结果比较好,一种可能的解释是语义不会随着不同的字母情况而改变,因此带来了正则化的好处


Large-scale Datasets and Results


以前在不同的领域已经证明ConvNets通常能够很好地处理大规模的数据集,特别是在我们的例子中,当模型采用了低层次的原始特征(比如字符)时。然而,大多数用于文本分类的开放数据集都很小,大规模数据集被分割成一个比测试小得多的训练集,因此,我们不是通过使用它们来混淆我们的社区,而是为我们的实验构建了几个大型数据集,范围从数十万到数百万个样本,总结在表3


表3:我们的大型数据集的统计数据, Epoch大小是每次迭代的 minibatches数量大小:

21.jpg

表4:测试所有模型的错误,以百分比表示, Lg代表 Sm代表 w2vword2vec的缩写形式, Lk表示 lookup tableTh代表 thesaurus,有 Full标签的表示 ConvNets区分大小写:

22.jpg

基于所有合适的模型对数据进行训练,表格4列出来了误差百分比,请注意,由于我们没有中文词库,Sogou News数据集使用词库扩充部分没有任何结果,我们标记蓝色为好的结果,红色为不好的:


Discussion

23.jpg

为了进一步了解表4中的结果,我们在本节中提供了一些实证分析,为了便于我们的分析,我们在比较模型中给出了图3中的相对误差。每个图都计算自我们的比较的模型和字符级ConvNet模型之间的差异,然后除以比较的模型误差,图中的所有ConvNets分别是具有词库扩充的大型模型。


  • Character-level ConvNet is an effective method,我们实验结论最重要的一点就是 character-levelConvNets可以在不需要单词的情况下对文本进行分类,这强烈表明语言也可以被认为是一种与任何其他类型无异的信号

  • Dataset size forms a dichotomy between traditional and ConvNets models,数据量越大,性能越好

  • ConvNets may work well for user-generated data,擅长识别拼写错误、表情符号等奇异的符号组合,在人为生成的数据上效果较好

  • Choice of alphabet makes a difference,比较大量的数据集可以不用考虑大小写

  • Semantics of tasks may not matter,字符级ConvNets分类时,与语义无关

  • Bag-of-means is a misuse of word2vec,Bag-of-means模型表现很差,这表明如此简单的使用分布式单词表示可能不会给我们带来文本分类的优势

  • There is no free lunch,每一种模型都是适合特定数据集的,做不到一种模型适用于所有数据集

Conclusion and Outlook


本文提供了一个关于文本分类的字符级卷积网络的实证研究,我们使用几个大型数据集与大量传统和深度学习模型进行了比较,一方面,分析显示 character-levelConvNet是一个有很高效率的方法,另一方面,我们的模型在比较中的表现取决于许多因素,例如数据集大小,文本是否被策划以及字母表的选择。


Resources


参考文章:


  • 字符级卷积神经网络(Char-CNN)实现文本分类—模型介绍与TensorFlow实现 - 呜呜哈的博客 - CSDN博客

  • Character-level Convolutional Networks for Text Classification之每日一篇 - gentelyang的博客 - CSDN博客

  • 《Character-level Convolutional NNetworks for Text Classification》论文学习 - 程序员大本营

开源项目:


  • GitHub - mhjabreel/CharCNN

  • GitHub - mhjabreel/CharCnn_Keras: The implementation of text classification using character level convoultion neural networks using Keras

  • GitHub - lc222/char-cnn-text-classification-tensorflow: Character-level Convolutional Networks for Text Classification论文仿真实现 - 这篇感觉代码有参考上述,看上面两个即可

  • GitHub - gaussic/text-classification-cnn-rnn: CNN-RNN中文文本分类,基于TensorFlow


我参考上面的代码实现在


character_level_convolutional_networks_for_text_classication

相关文章
|
4月前
|
机器学习/深度学习 人工智能 监控
理解LLMOps: Large Language Model Operations
理解LLMOps: Large Language Model Operations
115 1
|
4月前
|
机器学习/深度学习 人工智能 算法
【博士每天一篇论文-算法】Collective Behavior of a Small-World Recurrent Neural System With Scale-Free Distrib
本文介绍了一种新型的尺度无标度高聚类回声状态网络(SHESN)模型,该模型通过模拟生物神经系统的特性,如小世界现象和无标度分布,显著提高了逼近复杂非线性动力学系统的能力,并在Mackey-Glass动态系统和激光时间序列预测等问题上展示了其优越的性能。
41 1
【博士每天一篇论文-算法】Collective Behavior of a Small-World Recurrent Neural System With Scale-Free Distrib
|
7月前
|
机器学习/深度学习 自然语言处理 TensorFlow
[Character Embedding]论文实现:Text Understanding from Scratch
[Character Embedding]论文实现:Text Understanding from Scratch
37 2
|
机器学习/深度学习 移动开发 自然语言处理
DEPPN:Document-level Event Extraction via Parallel Prediction Networks 论文解读
当在整个文档中描述事件时,文档级事件抽取(DEE)是必不可少的。我们认为,句子级抽取器不适合DEE任务,其中事件论元总是分散在句子中
144 0
DEPPN:Document-level Event Extraction via Parallel Prediction Networks 论文解读
|
机器学习/深度学习 存储 数据采集
DCFEE: A Document-level Chinese Financial Event Extraction System based on Automatically Labeled论文解读
我们提出了一个事件抽取框架,目的是从文档级财经新闻中抽取事件和事件提及。到目前为止,基于监督学习范式的方法在公共数据集中获得了最高的性能(如ACE 2005、KBP 2015)。这些方法严重依赖于人工标注的训练数据。
146 0
|
机器学习/深度学习 存储 自然语言处理
PESE Event Structure Extraction using Pointer Network based Encoder-Decoder Architecture论文解读
事件抽取(EE)的任务旨在从文本中找到事件和事件相关的论元信息,并以结构化格式表示它们。大多数以前的工作都试图通过分别识别多个子结构并将它们聚合以获得完整的事件结构来解决这个问题。
86 0
|
自然语言处理 算法
【论文精读】COLING 2022 - CLIO: Role-interactive Multi-event Head Attention Network for DEE
将网络上的大量非结构化文本转换为结构化事件知识是NLP的一个关键但尚未解决的目标,特别是在处理文档级文本时。
79 0
|
机器学习/深度学习 算法 图形学
Deep learning based multi-scale channel compression feature surface defect detection system
简述:首先应用背景分割和模板匹配技术来定义覆盖目标工件的ROI区域。提取的感兴趣区域被均匀地裁剪成若干个图像块,每个块被送到基于CNN的模型,以分类杂乱背景中不同大小的表面缺陷。最后,对空间上相邻且具有相同类别标签的图像块进行合并,以生成各种表面缺陷的识别图。
153 0
|
数据挖掘
【多标签文本分类】Initializing neural networks for hierarchical multi-label text classification
【多标签文本分类】Initializing neural networks for hierarchical multi-label text classification
131 0
【多标签文本分类】Initializing neural networks for hierarchical multi-label text classification
|
机器学习/深度学习 算法 数据挖掘
【多标签文本分类】Improved Neural Network-based Multi-label Classification with Better Initialization ……
【多标签文本分类】Improved Neural Network-based Multi-label Classification with Better Initialization ……
140 0
【多标签文本分类】Improved Neural Network-based Multi-label Classification with Better Initialization ……