2018-文本分类文献阅读总结

文章1

Generative and Discriminative Text Classification with Recurrent Neural Networks

时间:2017

机构:Google DeepMind

生成模型:generative

判别模型:discrimination

作者支持生成模型比判别模型具有更加优异的性能,经过生成模型和判别模型的建模给出结论。

判别模型使用LSTM的变体(增加了peephole到每一个门上,则每一个门都会受到上一节点的cell的影响),当给定了文本类别标签后最大化条件概率:P(y|x;W,V)

生成模型是基于类的语言模型,命名为共享LSTM,通过类别class来共享参数,包括:词向量矩阵V,LSTM参数W,softmax参数U。新颖之处,这样会产生一个条件模型,这个模型可以通过给定标签的词向量来共享参数;而在传统的生成模型中,每一个标签都有一个独立的LM。

文中的生成模型和判别模型具有很多相似性,不同的是体现在训练的过程中,生成模型要最大化联合概率:

实验:

数据集:来源:http://goo.gl/JyCnZq,资源包括: 新闻分类,情感分析,Wikipedia文章分类,问答文本

数据列表:

基线model:Na¨?ve Bayes classifier;Kneser–Ney Bayes classifier;Na¨?ve Bayes neural network

模型在测试集上的结果 :

判别模型LSTM相比其它判别模型有优势,如基于logistic回归(Zhang et al., 2015; Joulin et al., 2016),基于卷积网络(Zhanget al., 2015; Xiao & Cho, 2016; Conneau et al., 2016)

同时,生成模型LSTM比基线模型具有更好的效果(na¨?ve Bayes,Kneser–Ney Bayes, and na¨?ve Bayes neural network)

作者最后给出建议:Our results suggest that LSTM is an effective method to capture dependencies among words in a document.

LSTM模型是有效捕捉文本中词与词之间的依赖关系

对于作者提出的生成模型LSTM和判别模型LSTM,通过训练数据容量的大小评判模型:Our results show that the generative shared LSTM model outperformsthe discriminative model in almost all cases in the small-data regime on all datasets except one (AGNews)

这说明生成LSTM模型在小数据集上的性能会比判别LSTM模型会好些,但不是绝对的。

文章2

Hierarchical Deep Learning for Text Classification

时间:2017

机构:University of Virginia

作者说,现今随着文档数量的增加,传统的有监督分类器的性能有所下降。原因是文档数量的增加,类别的数量也在增加,提高了分类的难度。当前的分类重点放在了文本的多分类上,而本文提出了层次分类的方法,采用深度学习网络堆叠结构,在文档层次结构的每个层次上提供专门的理解。

自动文本分类有多种方法,决策树、朴素贝叶斯、SVM、神经网络、词嵌入等。决策树和朴素贝叶斯可以提供更好的解释性,但分类的精度比其它方法要低。

文章使用全连接神经网络构建DNN,构建15种方法比较文本分类的性能。6种传统分类模型作为基线,3种基本的深度学习网络(DNN,CNN,RNN)作为层次DNN的扩展。

特征提取:使用向量空间模型 vector-space model

模型

DNN:每一层只接受前一层的输入,之后输出到下一层,层与层是全连接。输入层是提取的文本特征,输出层每一个节点表示一个分类标签,如果是二分类仅仅只有一个节点。作为基线DNN。

文章扩展了这个基线结构,以达到分级分类的目的。如下图所示,

在该层次结构分类模型中,第二层分类(父)是在第一层分类(子)的基础上完成的,可以理解成一个层次树,由根节点散发到多个子节点。第二层的每一个区域都与第一层的结果输出相连接。类别判定的过程举例如下:如果经过模型的第一个层次的输出分类是计算机科学这一类别,那么在下一层级训练的时候只接受计算机科学类的数据作为训练数据。所以第一层次模型的训练数据是所有数据集,第二层次模型只接受前一层次确定类别下对应的数据再分类。通过这样的层次结构达到了多分类的目的。

模型训练:标准BP算法,激活函数:sigmoid和ReLu,输出:softmax

RNN:该层节点的输出可以作为输入重新输入到该层中。改模型在文本处理中具有很大的优势。RNN在理论上可以记忆前几时刻的信息,但在实际的工程应用中很难实现,还有梯度弥散问题,为了解决这些,提出RNN的进化版LSTM,有选择性的记忆或者遗忘。LSTM又有多个版本,如下图:

图中下部分是基本的LSTM,上部分是LSTM的变体GRU(Gated Recurrent Unit)门控循环单元,GRU比LSTM更加简洁。基本LSTM公式:

输入门:

遗忘门:

候选cell值:

新的cell值:

输出门:

RNN文本分类的网络结构如下图:

CNN:RNN会有一个问题,当后面的词比之前的词更有影响力时,RNN会有偏差,就会出现问题。为解决这一点,卷积网络可以通过max-pooling这一层,判定有区别性的短语。尽管CNN的本源是处理图像问题的,但在文本分类上也取得了不错的效果。潜在的问题是通道个数和特征空间的大小。

本文的网络结构汇总:

DNN:8个隐含层,每个隐含层有1024个神经元节点

RNN:2个隐含层,每个隐含层有100个GRU

CNN:滤波器大小:{3,4,5,6,7},8个隐含层,层大小{128,128,128},用{5,5,35}池化

模型参数:batch_size=128

软硬件环境:

CPU:E5-2640,32核,64G内存

GPU:英伟达K620,K20c

使用python,CUDA英伟达官方平行计算平台级API。使用Keras核TensorFlow框架搭建神经网络结构。

实验结果:

分三个数据集分别测试。RNN在三个测试集的表现最好,之后是CNN,第三是带有权重的SVM(在前两个数据集中),最差的是朴素贝叶斯。第三个数据集是三个里面最小的数据集,所以RNN、CNN和权重SVM三个的准确率差异并不大。结果表明,相比传统的机器学习方法,深度学习方法可以提高文本分类的性能;同时,采用堆叠的层次结构深度学习模型具有更优异的分类性能。

文章3

Abstractive Text Classification Using Sequence-to-convolution Neural Networks

时间:2018

机构:韩国江西大学

针对文本分类,文章提出一种深度神经网络模型,该模型叫序列-卷积神经网络(Seq2CNN)model,包括两块:序列块在最前用来概要输入的文本,卷积块接受输入的概要信息并将之分类到对应的标签。Seq2CNN模型采用端到端来分类变长文本,就是前期不用将输入数据预处理成固定长度。指出,TextCNN在文本分类上的应用具有里程碑式的意义,但其要求输入固定长度的数据做训练,但是TextCNN的参数个数是由输入文本的长度决定的,业界采用的普遍方法就是修剪或者填充输入文本到定长数据以达到训练模型训练的目的。这样操作会在分类长文本时产生信息损失,导致模型性能退化。

Seq2CNN模型结构:

序列模型使用注意力机制的Encoder-Decoder RNNs 用于抽取文本摘要;后接的卷积模型是建立在经典的TextCNN基础上实现的。注意力机制的Encoder-Decoder RNNs模块将源句子编码成固定长度的向量,并且解码生成文本摘要;编码器包括Bidirectional RNN,解码器包Uni-directional RNN,对于解码部分、编码部分、Attention部分都采用128个隐含单元的Long-Short-Term-Mermory,并且在LSTM层间使用了Dropout进行正则化。用于前向LSTM编码器读取的序列是按照语句顺序排列的,后向的LSTM则是读取该序列的反向顺序,这样来自于编码器的固定长度向量就包含了前一词和后一词的集成信息。在注意力机制的帮助下,解码器部分就可以取舍源语句中的信息(哪些部分需要注意),只关注那些对概要来说至关重要的向量。

卷积模型:将文本用n*k的矩阵表示 ,n:输入文本词的个数;k:词向量的维数,可变长滤波器窗口长度h,对文本进行h*k卷积操作,之后进行max-over-time操作。多滤波器映射到多特征,滤波器窗口{3,4,5},一组有32个,之后这些特征全连接的soft-max层,输出是标签上的概率分布。注意:输入的文本数据是通过序列模型生成的摘要的词向量的表示。

word embedding layer:存储每一个词的词向量,词及其对应的词向量可以查找vocabulary表获得,该文章中的词表有2w-3w个词,词向量的维度为100。

TextCNN中,有3种文件预处理方法:1)full-text:从输入文本中去除不必要的字符和停用词,用“PAD” token 填充到固定长度,固定长度的选取是文本中出现的最长长度。2)修剪&填充:人为设定固定长度的超参,如果输入数据超过设定的长度,选取前N个,之后的剔除;如果不足长度,用“PAD”补全。3)概要式:代替预料中的每一个句子,作者使用TextRank方法提取了输入文本的摘要,并用修剪&填充方法处理这些摘要。(文本摘要需要标记数据吗)

数据集:

模型损失:

模型准确率:

在以上结果中,带有TextRank-summarization表现出的分类结果相对较好。作者提出Seq2CNN模型相比其它模型是最优的,带来约有1%的效果提升,而且是在词向量没有经过任何预处理的情况下进行的,比经过预训练词向量下的TextCNN效果更有竞争力。

从Yahoo Answers数据集中看到,所有模型的准确率都非常的低,这是因为TextRank算法,如果原始文本太短就无法生成正确的摘要信息。但是,Seq2CNN在短文本上具有更好的鲁棒性,前部分的序列模型可以从原始预料中剔除不重要的词正确地生成摘要信息。可以通过下图看到:

总结:作者提出了Seq2CNN模型,其最大的优势就是高灵活性。对于相同的任务,它的每一个模块都可以设计其它的模型来替代,如序列模块可以被多层的Seq2Seq或者文本自编码器来替代;卷积模块可以被C-LSTM、R-CNN、Char-CNN、VDCNN等来替代。从模型的结果来看,文中的方法相比其它的深度学习模型的准确率提升并不大,都可以提供有效的分类,同时数据集对模型分类的影响很大,同种模型在不同的数据集上表现有差异,所以评判模型的优劣要从多角度出发。

文章名:Joint Embedding of Words and Labels for Text Classification

机构:杜克大学

时间:2018

当对文本序列进行学习表示时候,词嵌入方式是捕捉语义信息最有效的中间媒介。作者提出一种观点,将文本分类视为一个标签词的联合嵌入问题,每个标签词都用词向量嵌入到相同的空间内。提出一种注意力框架用以确定文本序列和标签之间的嵌入能力。注意力能力可以从标记训练样本集中学习得到,对于给定的序列,相关词的权重要比不相关词的权重高。

文本分类是NLP领域的基础问题。

注意力机制可以更加灵活的表征文本特征,训练该模型可以捕捉到对目标任务具有重要贡献的依赖关系,而不用考虑序列中元素之间的距离,这样可以为具有距离依赖的model(CNN,RNN)提供补充信息,但注意力机制在提高表征能力的同时是的模型的复杂度也随之增加。

我们希望在两个方面有更加出色的处理:1)学习到最有效的文本表征捕捉到重要的依赖信息;2)更低的计算复杂度

对于文本表征,当前最好的展现模型是经编码器和解码器连接的注意力机制方法,已经成功应用与语义情感分类、句对模型和句子摘要。得益于这些成功应用,目前出现了更显得注意力机制model,包括层次注意力网络,AOA,多步注意力等。注意力机制的思想是:被观测到的不同的词在相同的上下文中具有不同的信息,同一个词在不同的上下文中也会有不同的重要度。对于上下文的实现,在不同的应用程序和模型架构中有所不同。通常,上下文被确定为目标任务,注意力是通过一个CNN/RNN的隐含层计算的。文中的注意力模型直接是在单词和标签的联合嵌入空间中建立的。

模型:LEAM(Label-Embedding Attentive Model)

流程:

1.数据预处理:Embeddings

前两部分的工作已经有学者做了大量的研究,体现在如何有效表征一个词或者词序列,NLP的成功很大取决于词嵌入方法数据表征(Bengio, Mikolov)。他们的通常做法就是,离线对大语料库做预训练,然后再结合步骤一和步骤二进行改进以达到特定目标的任务。当前主流的深度学习模型认为映射函数就是一个黑盒子,已经被复杂的CNN/RNN结构所主导以实现优异的结果;同时,最近也研究也显示,对词嵌入的简单处理操作(均值、最大池化),也能够产生好的结果。

2.模型结构

特征嵌入

在该模型中仅在分类映射那一步中使用标记信息(f3),对传统方法在f1步骤加入了优化。

重点放在了标签嵌入句子C的学习,如何在欧几里得空间内容嵌入类别标签,需要借助矩阵G,这个G是嵌入词和嵌入标签构成的一种关系,之后通过这个G得到注意力得分贝塔,最后优化z。

在第一步中(f0):除了嵌入词,也嵌入了所有的标记信息到同一个空间内,扮演了一个类别的“锚点”作用,以精细化词嵌入。

在第二步中(f1):是组合函数,聚合词嵌入到z,根据标签和词之间的权重信息。

在第三步中(f2):和传统的处理方法一样。

注意力模型:根据文中公式理解

数据集:

参数比较

模型结果比较

模型消耗

模型效率

作者文中提到的注意力机制模型可以提高单纯CNN/RNN的准确率,目前所有的深度学习网络都要比传统的Bag-of-words词袋模型要好,提出的模型只在两个数据集上取得了最好成绩(Yahoo,DBPedia),在其它两个数据集上表现差的原因有两点:1)这些数据集上的分类个数都比较少;2)在标签嵌入用于初始化时没有明确的对应词嵌入可用,潜在的标签嵌入没有充分利用。这也是这种模型需要考虑的问题。

从上图中也可以看出,该模型的有点具有更少的训练参数,更快的收敛速度。

文章:Very Deep Convolutional Networks for Text Classification

机构:Facebook AI Research

时间:2017

目前NLP的主导方法:LSTM和CNN

相比于深度卷积网在计算机视觉的应用,在NLP的应用的这套东西还是非常肤浅。牛逼轰轰的Alexis等设计了一种新的架构VD-CNN专门用于文本处理,直接操作字符层级的特征,用非常小的卷积和池化操作,有29层的卷积网,网络非常深。(目前,最好的网络是使用了150层的,用于句子分类的卷积网的层数以前不超过6层)

许多NLP方法将词作为最基本的单元,词嵌入的特征抽取方法有其自身的优势,然后,我们如何才能更好的表征一个有复杂语法语义关系的词、短语或者句子目前来说做的还是不够。一个句子既有长时依赖也有短时依赖。大牛首先肯定了RNN的优异性能,但是指出LSTM是针对序列信号处理的通用方法,缺乏明确的任务结构。

推理:都知道全连接的隐含层理论上可以学习到任何一个实值函数,那么网络层次越深越能够获得更好的结果。卷积网能够广泛应用于图像是由于图像的组合特性,文本也具有相似的属性:字符可以组合成n-grams, stems, words, phrase, sentences。

VDCNN网络结构

该模型首先用lookup-table的方式生成一个2维的张量,大小为(f0,s),字符s的长度是1024,f0可以认为是输入文本的通道数(维度),即通过lookpu-table的方式,生成了输入句子矩阵,1*s可以看成是1通道,经过此后,变成16*s的16通道特征。之后,经过64通道的卷积,大小为3(kernel size 3),是一个临时卷积(全连接),让特征变成64维,输出64*s。接着,两个卷积块,64通道,大小为3;接着3层各2个分别为128,256,512的卷积块,大小为3,每层块之间接一个降采样层,使用pool/2方式。最后一个卷积块输出为512*Sd的张量,Sd取决于降采样的个数.在这样的卷积网络下,产生的张量可以看做是输入文本的高维表征,前期要使用PAD对文本进行处理,使之成为固定长度,那么Sd是一个常量。通常,卷积核的大小要分不同的维度,如2,3,4等,出于这样考虑的动机是,不同的size可以模拟提取出n-gram特征,不同的n-gram特征可以体现出语句中长时-短时的内在关系。在这篇文章中,作者没有采用这种方法,而是直接使用size为3的小卷积应用在每一层中,这样具有更窄的感受野,目的就是要在深度结构中学习3-gram Feature。在最后一个卷积块结束后,接一个k-maxpooling(k=8)的操作,使输出固定到k维,这样网络就提取了最重要的前k个特征,独立于他们在句子中出现的位置,就是从不同位置取出的重要特征。之后512*k的特征转换到一个k维的向量,这个向量用于输入到接下来的3个全连接层(Relu+Relu+softmax),输出神经元的个数取决于分类的类别数,文中隐层节点数2048,k=8,使用batch normlization代替了dropout。

语料数据

通用模型设置:

实验证明以下的初始化参数证明是效果最好的处理,具有通用性。一个句子用字符级的原子表示,对图像来说就好比是像素点。

数据字典中含有的字符如下:

输入文本PAD到1024的固定长度,如果文本过长则进行截断处理。

一个字符嵌入的维度是16,那么对于一句话经过字符嵌入处理后得到16*s的矩阵。

min-batch:128,训练用SGD,初始化学习速率0.01,动量因子0.9,GPU:K40

深度9层时,迭代一次的时间为24min-2H45min;深度为29层,迭代一次的时间为50min-7H,10到15代之后达到收敛。

实验结果

结论:

1.深度网络提高了预测准确率。当网络从17层增加到29层,测试的错误率在所有数据集上都有降低。在Amazon Full数据集上,网络从9到17到29错误率有近1%的降低,该数据集含有650K个样本,超过6.5K个测试样本能够被正确分类,尤其是对大数据集,更加深层次的网络对于文本处理任务有重要的意义。

2.max-pooling的方式比其它pooling方法处理的要好。max-pooling整体表现最好,显著优于k-max-pooling。pooling的机制都是执行最大化操作,但k-max-pooling则更多考虑到了整个句子,这似乎破坏了在中间层执行最大化操作的行为。

3.该深度模型比ConvNets更优。

4.更深的网络会是的模型退化,准确率降低;快捷连接有助于降低模型退化。

通过文章,作者给出了NLP处理中的两个思路:1)从最小原子的角度对文本进行表征;2)使用局部操作的深度堆叠方式,就是用卷积和pooling操作学习句子的高维表征。深度网络在图像处理领域已经取得了很大一部分成功,可以将文本同图像进行类比考虑,根据属性的相似性,可以将计算机视觉的方法应用到NLP处理中,优化文本处理模型。

文章阅读总结

一、文本分类的处理流程

传统文本分类方法的缺点:文本特征维度高,数据较稀疏,表征能力弱。特征工程这一项需要人来做,耗费成本很高。

抛开传统的文本处理方法,就目前而言,基于深度学习的思路是本文分类的主流,因为它解决了大规模文本分类面临的最重要的问题就是特征表示,再利用深度网络模型自动获取表征能力后接分类器进行分类,并能够取得很好的效果,所以就这一块相融合的方法做梳理。

1)文本数据处理:该过程的目的是将文字信息到数字信息,以供计算机能够分析处理。拿到一段中文短文本,如果只是对汉字做处理,需要一些手段如正则,将除汉字外的所有字符剔除;再对文本进行分词操作,目前对文本处理的最小级别词级别和字级别,通过前人的研究发现,基于词的模型要远远好于基于字的模型,中文分词很有必要。分词的结果中会包含有停用词,一般是将这些没有实际意义的词从词库中除去,特定领域的工作可以设计停用词表则会是的数据更清洁,会带来模型效率的提升。同时,要保持样本数据的长度一致需要做padding处理,padding的方式论文中的方法也有多种,固定需要的长度,太短的就补足(‘PAD‘),太长的就截断,或者查找语料库中文本的最大长度,以该最大长度为标准对其它文本补足。这一块内容是基础性的工作,但也是整个过程中重要的步骤,有好多东西可做,如分词工具的选取(现有的?还是自己做?影响多大?),停用词表构建,样本长度的选择等。

2)词的分布式表示:word embedding 经过分词后的数据可以构建一个大的词表,给词表中的每一个词分配一个id,那么,一个文本表示成对应词的id向量,但一维数据的信息有限,如果扩展至多维就能很好地表中词与词的空间距离,鉴于此,采用word2vec构建出每一个文本的word embedding matrix,至此文本通过词向量的表示方式,把文本数据从高维稀疏的难处理的方式构建成连续稠密数据,使得深度学习算法能发挥作用。这一块主要是词向量的构建,包括rand,static,non_static等方式,不同的方式也会影响最终模型的效果。

二、深度学习文本分类模型

1)fastText:最暴力最简单的分类模型,直接将句子内的词向量求和取结果

2)TextCNN:应用n-gram思想,捕捉局部序列信息的相关性,利用卷积提取句子中类似n-gram的关键信息。整体表现佳,但也存在问题,局部感受野大小是固定的,长时序列特征建模的能力受到限制,而且这个大小需要人为调参,繁琐且效率不高。

3)TextRNN:我们知道卷积操作的本质是在做特征表达,表征能力很强;但文本属于时序信号,是上下文信息相关的,那么用RNN来处理文本问题显得理所应当。RNN及其变体可以捕捉到变长且双向的n-gram信息。

4)TextRCNN(TextRNN+CNN):两者的结合,先用RNN提取上下文特征,再用CNN对特征抽取,最后放入到分类器中分类。

5)其它

现今的文本分类模型都是在RNN/CNN的基础上重构出新的网络,更多的是用不同的组合方式建立模型,在学术上争取到1%的提升。并不是网络结构越复杂,层数越深,效果就越好,要具体到实际的应用,同一个模型在不同的数据集上效果表现差别很大,所以说效果不好并不是代表模型不好,问题可能在其它地方。通过看的这些文章实验发现,基于CNN的深度学习模型同其它优化方法相比,结果相差不多,其它方法对准确率的提升并不显著,但从任务来看,一个好的CNN模型就能达到不错的效果,可以在此基础上进行模型改进。

文章名:Combining Knowledge with Deep Convolutional Neural Networks

for Short Text Classification

时间:2018

机构:微软亚洲研究院

摘要:短文本没有完全的语义信息;短文本的量也是缺乏的;短文本一词多意,往往表达意思含糊不清。

预训练中没有待确认的词怎么办。比如:buy apple iphone7,iphone7是一个新词,既没有出现在知识库中,也没有在预训练词嵌入矩阵中,我们要识别他。

模型:知识驱动卷积网络模型,KPCNN,使用两个子网络分别提取词级别和字级别中的特征。用一个a knowledge base来帮助短文本的理解,首先需要将短文本概念化。

包括两个分支模型:一个子网络用于词和概念的embedding,另一个子网络用于字符的embedding,这两个网络都是卷积网,通过这样的模型可以从词和字符级别获取到丰富的特征。

子网1是个9层网络,1个输入层,2个卷积层,2个pooling层,2个全连接层。

子网2也是同样,只是超参设置的不同。

文章:Hierarchical Convolutional Attention Networks for Text Classification

时间:2018

机构:USA

模型:层次卷积注意力模型

在笔记本上记录笔记

文章:Random Multimodel Deep Learning for Classification

时间:2018

机构:弗吉尼亚大学

提出随机多模式深度学习方法:通过该方法发现最好的神经网络结构和架构,提高模型的鲁棒性和精度,这种模型结构可以输入广泛的数据类型,包括文本、视频、图像,在MNIST, CIFAR-10, WOS, Reuters, IMDB做模型验证。

当文本被组织成层次化的结构,传统的有监督多分类方法很难进行有效分类。以下介绍该方法:

该项工作的新颖之处就是,使用多随机深度模型包括DNN,RNN和CNN,首先描述RMDL的整个框架,之后讨论这三种方法在平行语料库中的训练,最后在不同的随机模型中讨论多优化技术。

一、特征提取和数据预处理

从文本和图像两个来看,文本和序列化的数据集是无结构的数据,而图像数据集的特征空间是结构化的,这就要处理两者时要单独讨论,有针对性的处理。

1.图像和3维目标特征提取。彩色图像的特征空间:图像特征:,h:图像的高度,w:图像的宽度,c:图像的颜色(3个维度,RGB)。灰度图像的特征空间:图像特征:,颜色的维度为1。一个3维实体在空间上包括n个云点,每一个云点有6个特征。

2.文本和序列特征提取。采用词嵌入方式(GloVe and Word2vec),还有TF-IDF方法。使用文本向量空间模型对特征进行表征,每一个特征200维,表示如下:,第j个文本的词嵌入矩阵。

二、随机多模式深度学习模型

特点:新颖,可以使用任何一种数据集进行分类。

从框架图可以看到,这个模型结合了DNN,RNN和CNN三大网络模型。在该模型中,网络的层数和节点数都是随机生成的。

随机生成模型的公式:

其中,n是组合模型的个数,是第i个样本点在第j个模型的输出预测值。输出空间使用投票制确定最终输出的预测值:

对于模型j,的输出为:,所以每一个模型都有一个预测结果,对这些结果投票输出。

深度学习的模型是单独训练的,训练好一个。

Hierarchical Deep Learning for Text Classification(面向文本分类的分层深度学习模型)

时间:2017

机构:University of Virginia

现今随着文档数量的增加,出现了越来越多的大文本集合,传统的有监督分类器的在文本分类的任务上性能下降。原因是文档数量的增加,类别的数量也在增加,增加了分类的难度。这篇文章处理该问题于当前文本分类的方法不同,而是把这个分类问题看作是多类分类问题(multi-class classification),文提出了分类分类的方法,即Hierarchical Deep Learning for Text classification (HDLTex),采用堆叠的深度学习网络结构,以在文档层次结构的每个层次上提供专门的理解。就是特征抽取啦,换句话说就是特征抽取的更加好。

自动文本分类有多种方法,决策树、朴素贝叶斯、SVM、神经网络、词嵌入等。决策树和朴素贝叶斯可以提供更好的解释性,但分类的精度比其它方法要低。在这些传统方法中,分类精度高效果好的要数SVM,但SVM很难去解释,可解释性差。

目前,采用深度学习的方法要比SVM更要效果好,尤其是在大数据集上,更有前景。可以提供更加灵活的网络结构,分层分类不仅非常精确,而且可以实现,通过显示文档在一个字段或区域内的位置标记,从而更好地理解由此产生的分类。在一定程度上提供了深度学习方法的可解释性。

文章使用全连接神经网络构建DNN,构建15种方法比较文本分类的性能。6种传统分类模型作为基线,其中3种是广泛用于文本分类的的方法:(1)term-weighted support vector;(2)multi-word support vector machines;(3)na?ve Bayes classification:NBC,3种基本的深度学习网络(DNN,CNN,RNN)作为层次DNN的扩展。

SVM方法

NBC方法:速度快,可解释性强

特征提取:使用向量空间模型 vector-space model

:文本j的长度,可以理解为词长。

:文本j的第i个词的词向量。

对于DNN模型,使用基于词频的TF-IDF特征提取方法,使用N-grams进行特征统计。DNN的特征空间:

模型框架

在该层次结构分类模型中,第二层分类(父)是在第一层分类(子)的基础上完成的,可以理解成一个层次树,由根节点散发到多个子节点。第二层的每一个区域都与第一层的结果输出相连接。类别判定的过程举例如下:如果经过模型的第一个层次的输出分类是计算机科学这一类别,根据这一标签找到对应的二级网络,并且在该网络中进行训练的时候只接受计算机科学类的样本数据作为网络训练数据,继续训练并分类。所以第一层次模型的训练数据是所有数据集,第二层次模型只接受前一层次确定类别下对应的标签再分类,所以接受的数据是一部分数据。通过这样的分层结构达到了多分类的目的。

DNN:每一层只接受前一层的输入,之后输出到下一层,层与层是全连接。输入层是提取的文本特征,输出层每一个节点表示一个分类标签,如果是二分类仅仅只有一个节点。作为基线DNN。

文章扩展了这个基线结构,以达到分级分类的目的。

模型训练:标准BP算法,激活函数:sigmoid和ReLu,输出:softmax化的概率分布

RNN:在RNN网络中,节点的输出可以作为输入重新进入到该层中。因为文本信息具时间依赖,要能有效捕捉语句中时间信息可以很好地对文本进行建模,RNN的网络特性使其对文本处理有很大的优势。

公式:

:t时刻的状态值;:t时刻的输入

使用权重公式表达:

:循环矩阵权重;:输入矩阵权重,b是偏置项

改模型在文本处理中具有很大的优势。RNN在理论上可以记忆前几时刻的信息,不能保持长时依赖信息,还有梯度弥散问题,为了解决这些,提出RNN的进化版LSTM,有选择性地对前期信息记忆或者遗忘。LSTM又有多个版本,如下图:

LSTM具有链状结构,使用多个门来调节进入每个节点的信息,基本LSTM公式:

GRU:

RNN文本分类的网络结构如下图:

CNN:RNN会有一个问题,当后面的词比之前的词更有影响力时,RNN会有偏见,就会出现问题。为解决这一点,卷积网络可以通过max-pooling这一层,判定有区别性的短语。尽管CNN的本源是处理图像问题的,但在文本分类上也取得了不错的效果。潜在的问题是通道个数和特征空间的大小。

卷积核在固定窗口上滑动,大小通常为3*3,可以叫做特征图,使用多个卷积核获取多个特征,卷积层就是进行特征映射。同时,为了减少计算的复杂度,CNN网络使用pooling的方式降低输入到下一层的尺寸。最为常用的方法就是就是max-pooling,最pooling窗口中选择数值最大的那个元素。为了将pooling的结果从堆叠特征图输入到下一层,特征图往往被展平成一列。CNN的最后一层就是全连接了。

分层深度学习模型:

DNN:8个隐含层,每个隐含层有1024个神经元节点

RNN:2个隐含层带有100个GRU

CNN:滤波器大小:{3,4,5,6,7},max-pool of 5。8个隐含层,层大小{128,128,128},用{5,5,35},max-pool

模型参数:

软硬件环境:

CPU:E5-2640,32核,64G内存

GPU:英伟达K620,K20c

使用python,CUDA英伟达官方平行计算平台级API。使用Keras核TensorFlow框架搭建神经网络结构。

实验结果:

分三个数据集分别测试。RNN在三个测试集的表现最好,之后是CNN,第三是带有权重的SVM(在前两个数据集中),最差的是朴素贝叶斯。第三个数据集是三个里面最小的数据集,所以RNN、CNN和权重SVM三个的准确率差异并不大。结果表明,相比传统的机器学习方法,深度学习方法可以提高文本分类的性能;同时,采用堆叠的层次结构深度学习模型具有更优异的分类性能。

原文地址:https://www.cnblogs.com/demo-deng/p/9609767.html

时间: 2024-10-05 05:04:56

2018-文本分类文献阅读总结的相关文章

谷歌做了45万次不同类型的文本分类后,总结出一个通用的“模型选择算法”...

谷歌做了45万次不同类型的文本分类后,总结出一个通用的"模型选择算法"... 2018年07月25日 17:43:55 阅读数:6 新智元报道 来源:developers.google.com 编译:肖琴.大明 [导读]谷歌官方推出"文本分类"指南教程.为了最大限度地简化选择文本分类模型的过程,谷歌在进行大约450K的文本分类实验后,总结出一个通用的"模型选择算法",并附上一个完整的流程图,非常实用. 文本分类(Text classificati

LingPipe-TextClassification(文本分类)

What is Text Classification? Text classification typically involves assigning a document to a category by automated or human means. LingPipe provides a classification facility that takes examples of text classifications--typically generated by a huma

多种贝叶斯模型构建文本分类

多种贝叶斯模型构建及文本分类的实现 作者:白宁超 2015年9月29日11:10:02 摘要:当前数据挖掘技术使用最为广泛的莫过于文本挖掘领域,包括领域本体构建.短文本实体抽取以及代码的语义级构件方法研究.常用的数据挖掘功能包括分类.聚类.预测和关联四大模型.本文针对四大模型之一的分类进行讨论.分类算法包括回归.决策树.支持向量机.贝叶斯等,显然,不少涉及机器学习的知识(随后会写些机器学习专题).本文重点介绍贝叶斯分类,涉及朴素贝叶斯模型.二项独立模型.多项模型.混合模型等知识.在本人研究贝叶斯

用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

转自https://zhuanlan.zhihu.com/p/25928551 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类领域特别是应用深度学习解决文本分类的相关的思路.做法和部分实践的经验. 业务问题描述: 淘宝商品的一个典型的例子见下图,图中商品的标题是"夏装雪纺条纹短袖t恤女春半袖衣服夏天中长款大码胖mm显瘦上衣夏".淘宝网后台是通过树形的多层的类目体系管理商品的,覆盖叶子类目数量达上万个,商品量也

文本分类入门-特征选择算法之开方检验

http://www.blogjava.net/zhenandaci/archive/2008/08/31/225966.html 前文提到过,除了分类算法以外,为分类文本作处理的特征提取算法也对最终效果有巨大影响,而特征提取算法又分为特征选择和特征抽取两大类,其中特征选择算法有互信息,文档频率,信息增益,开方检验等等十数种,这次先介绍特征选择算法中效果比较好的开方检验方法. 大家应该还记得,开方检验其实是数理统计中一种常用的检验两个变量独立性的方法.(什么?你是文史类专业的学生,没有学过数理统

机器学习的大局观:使用神经网络和TensorFlow来对文本分类

https://medium.freecodecamp.com/big-picture-machine-learning-classifying-text-with-neural-networks-and-tensorflow-d94036ac2274 机器学习的开发人员常常说,如果你想学习机器学习,必须先学习算法是怎么样工作的原理,但是我的经验告诉我,不是这样的. 我说,你应该首先能够看到大局:机器学习的应用程序是怎么样工作的.一旦你理解它,你就可以轻松地深入学习和体会到机器学习算法的工作原理

文本分类,数据挖掘和机器学习

转自:http://blog.chinaunix.net/uid-446337-id-94440.html 分类: 机器学习的有概率分类器(probabilistic) ,贝叶斯推理网络(bayesian inference networks) , 决策树分类器(decision tree) ,决策规则分类器(decision rule) ,基于回归的线性最小二乘llsf(regression based on linearleast squares fit ) , 符号规则归纳法( symbo

带监督的文本分类算法FastText

该算法由facebook在2016年开源,典型应用场景是"带监督的文本分类问题". 模型 模型的优化目标如下: 其中,$<x_n,y_n>$是一条训练样本,$y_n$是训练目标,$x_n$是normalized bag of features.矩阵参数A是基于word的look-up table,也就是A是词的embedding向量.$Ax_n$矩阵运算的数学意义是将word的embedding向量找到后相加或者取平均,得到hidden向量.矩阵参数B是函数f的参数,函数f

用于文本分类的RNN-Attention网络

用于文本分类的RNN-Attention网络 https://blog.csdn.net/thriving_fcl/article/details/73381217 Attention机制在NLP上最早是被用于seq2seq的翻译类任务中,如Neural Machine Translation by Jointly Learning to Align and Translate这篇文章所说. 之后在文本分类的任务中也用上Attention机制,这篇博客主要介绍Attention机制在文本分类任务