基于深度学习的文本分类论文推荐——fasttext,textcnn

简介

情感分类是对带有感情色彩的主观性文本进行分析推理的过程,在这个过程中我们需要分析出说话人的态度和观点,即他的态度是正面还是反面。情感分类按照其分析的粒度可以分为篇章级,句子级和短语级。篇章级情感分类是指对篇章级别的句子进行情感分类,分类过程中可能需要涉及到句子之间的起承转合,句子级的情感分类是是对句子进行情感分类,短语级的情感分类是指对短语进行情感分类,例如“相机的画质还不错但是电池的续航能力比较差”中,用户对于画质的评价就比较偏正向,对电池的评价就比较偏负向。

情感分析的一般方法也主要分为三种,一种是基于规则的情感分类,这种分类方法主要是依靠情感词典来对文本进行分析;一种是基于机器学习方法的情感分类,还有一种是基于深度学习的情感分类。在上一篇文章中我们为大家简单介绍了基于规则和基于机器学习的情感分类,这篇文章我们将为大家介绍几篇基于深度学习的文本分类的论文,由于篇幅有限本文将重点介绍fasttext和textcnn。

Bag of Tricks for Efficient Text Classification

论文链接:https://arxiv.org/pdf/1607.01759v2.pdf

源码:https://github.com/facebookresearch/fastText

推荐理由:传说中的fasttextfacebook推出的非常经典的文本分类模型,训练速度非常快,可以快速上手反复迭代哦

这是2016年由Facebook提出的一种比较迅速的词向量和文本分类方法,模型的结构类似于CBOW(连续词袋模型)都是由输入层,隐藏层,输出层组成,输出层的结果是一个特定的目标,例如预测下一个词汇之类的。但是fasttext和CBOW的区别是,如下图所示:

基于深度学习的文本分类论文推荐——fasttext,textcnn

 

fasttext的输入不仅是句子中词语的one-hot编码还有N-gram的特征,N-gram的特征默认是3~6gram,为了提高模型的训练速度,N-gram的查找采用了hashing trick。这样做的好处是,one-hot编码是没有考虑到词语之间的顺序的,加入N-gram特征可以让模型学习到词语之间的连续特征。

另一个区别是为了提高softmax计算的速度,fasttext采用了hierarchal softmax,也就是计算从根节点到某个分类的路径上的所有节点的softmax的总和,这样对于分类类别非常多的情况下,可以将时间复杂度由O(kh)降低到O(hlog2(k)),这样也可以提高模型的训练速度。

为了验证fasttext的效果,作者在情感分类和Tag识别上分别进行了实验,情感分类的实验结果如下所示,加了bigram的fasttext的效果在AG数据集上超过了char-cnn,char-rnn, VDCNN的效果,在其他数据集上略逊于其他模型或者持平。总体来说效果还是很不错的。

基于深度学习的文本分类论文推荐——fasttext,textcnn

 

但是在训练速度上fasttext可以说远超其他模型,当然这也是fasttext的迷人之处了,在效果和速度上取得了一个很好地balance。

基于深度学习的文本分类论文推荐——fasttext,textcnn

 

Convolutional Neural Networks for Sentence Classification

论文链接:https://arxiv.org/pdf/1408.5882.pdf

源码:github很多

推荐理由:textcnn文本分类必读论文

基于深度学习的文本分类论文推荐——fasttext,textcnn

 

谈到文本分类,TextCNN绝对是不能绕开的,本文作者将卷积应用到NLP任务中。模型的结构非常经典,输入层,卷积层,池化层和输出层。

  • 输入层是由文本的word embedding拼接的矩阵

  • 卷积层图中看着只有一层,但是实际上模型中有不同大小的卷积核,可以在不同的窗口大小下捕捉到文本的上下文信息。

  • 卷积层的结果拼接之后经过池化层,然后输入到全连接层,最后经过softmax可以得到文本分类的结果。

在以上结构上作者做了很多实验:

  • CNN-rand: 这是基础模型,word embedding被随机初始化

  • CNN-static: 模型使用预训练的word2vec初始化Embedding layer,对于那些在预训练的word2vec没有的单词,随机初始化

  • CNN-non-static: word embdding和CNN-static一样,只是训练过程中embedding层也一起训练

  • CNN-multichannel: Embedding layer有两个channel,一个channel为static,一个为non-static,fine-tune时只有一个channel更新参数。两个channel都是使用预训练的word2vec初始化的。

作者在7个数据集上进行实验,可以看出除了随机word embedding以外,预训练之后加载word embedding的效果都优于随机初始化。

基于深度学习的文本分类论文推荐——fasttext,textcnn

 

A Sensitivity Analysis of (and Practitioners’ Guide to) Convolutional Neural Networks for Sentence Classification

论文链接:https://arxiv.org/pdf/1510.03820.pdf

推荐理由:这篇文章可以看成是对textcnn的补充,作者做了大量的实验来探索什么样的参数和训练方法可以使textcnn的效果达到最优

在CNN在文本分类上取得一系列不错的成绩之后,本文将聚焦在可能影响模型的效果的其他因素上面。

因此本文采用的模型是经典的的CNN模型,模型的输入是word embedding的拼接,卷积层有6个大小分别是2,3,4的卷积核,然后对卷积层的输出结果进行筹划拼接之后接softmax层最后输出分类结果。

基于深度学习的文本分类论文推荐——fasttext,textcnn

 

有了这个基础的CNN模型之后本文将重点放在影响模型效果的其他因素上,文中对embedding生成方式,卷积核的大小,feature map的数量,**函数,池化方法,正则化等其他因素对模型的影响。

通过多种实验,作者得出结论,embedding的生成方式,卷积核的大小,feature map的数量对模型效果有比较重要的影响,1-max pooling的效果要优于其他方法而正则化对模型的影响比较少。

结语

以上就是文本分类中比较经典的三篇论文啦,fasttext因为其优越的性能,知道现在训练word embedding,文本分类中还是会看到他的身影。textcnn在NLP领域中应用了卷积层,可以提取到上下文的信息,而且模型结构非常简单清晰,效果也不错,也是文本分类入门的经典哈哈。以上就是本文分享的内容啦,下篇我们会分享文本分类中同样经典的textrnn和HAN希望大家保持关注~