文本分类方法综述

本文主要总结文本分类的方法。
文本分类的本质是文本相似性的度量、计算。文本重点介绍五种相似性的度量方法:即TF-TDF,word embedding pooling,textCNN、textRNN模型,attention network、matchpyramid的深度学习方法。

1.bag方法
比如对于如下的短文本分类问题
这里写图片描述
1) bag of words(词袋模型)的做法是
这里写图片描述
2) Continuous Bag of Words(CBOW)
这里写图片描述
3) deep CBOW
这里写图片描述
参照CBOW,不同点在于
(i)拥有中间层(hidden layer),这是deep的底线;
(ii)利用非线性方程计算(tanh激活函数),能够得到词组的含义。
4) Bag of n-grams
这里写图片描述
存在的问题是parameter explosion。

2.TF-IDF
在医疗文档分类项目中应用了此模型,而且为了更进一步凸显重要词汇的权重,改进了TF-IDF。
应用TF-IDF找出各类文档中的重要词汇,然后后面接一个random forest,进行分类。
TF-IDF的优点是计算简单,可解释性较强;缺点是TF-IDF不善于发现长pattern。也就是说TF-IDF虽然能够发现重要词汇,但是这些重要词汇却是离散的,TF-IDF不善于发现重要词汇的共现。而在医疗文档的分类任务中,每一类文档是有一定的内部结构的,而这种固定的结构其实涉及了由多个独立的词组成的较长的pattern。

3.word embedding pooling
参考论文 Baseline Needs More Love:On Simple Word-Embedding-Based Models and Associated Pooling Mechanisms
论文笔记参考 https://blog.csdn.net/u010859324/article/details/80733064
文章重点对比了基于word embedding的简单pooling运算,以及CNN/RNN网络。文中提出了四种pooling操作,即avg-pooling、max-pooling、concat-pooling 、hierarchical pooling。
文中的实验显示,在一些文本分类任务中,pooling方法的效果甚至超过了CNN/RNN,说明词序信息对于这些任务并不重要。而在情感分析任务中,CNN/RNN的效果则优于pooling,那是因为情感分析任务中,句子的词序决定了句子的情感倾向的。

pooling的方法潜在的问题在于,一个句子如果很长,对此向量做avg-pooling或max-pooling计算,少量的重要信息会被多数的无用信息淹没。而CNN就可以避免重要信息被淹没,因为卷积层后面的max-pooling层会保留重要信息。

4.textCNN/textRNN
参考github项目
https://github.com/galsang/CNN-sentence-classification-pytorch
https://github.com/brightmart/text_classification
其中,textCNN可以基于word embedding,参考论文 Convolutional Neural Networks for Sentence Classification,模型架构为
这里写图片描述
模型的主要成分是卷积层和池化层。其中对池化层的认识如下
这里写图片描述

还有一些卷积网络的新形式,比如
这里写图片描述
这里写图片描述

也可以基于character embedding,参考论文Character-level convolutional networks for text classification,模型架构为
这里写图片描述
CNN在这里发挥的作用可以理解为n-gram,它的缺点是只能提取局部特征,无法提取全局特征。

textRNN是把整个句子甚至真个文档看作一个character sequnce,应用LSTM,策略有多种,
1)直接使用RNN的最后一个单元输出向量作为文本特征;
2)使用双向RNN的两个方向的输出向量的连接(concatenate)或均值作为文本特征;
3)将所有RNN单元的输出向量的avg-pooling或者max-pooling作为文本特征。
在所做的医疗文档分类项目中,发现word embedding pooling的方法对于短文本效果较好(原因是短文本字段样本的唯一值通常是有限的,也就是说会有大量的重复样本,这样的话就给向量匹配的方法带来好处),长文本还是要借助textCNN、textRNN来解决。

对于CNN和RNN哪个更好,可以参考论文 Comparative Study of CNN and RNN for Natural Language Processing ,里面有一些精彩的论述,如下

CNN and RNN provide complementary information: while the RNN computes a weighted combination of all words in the sentence, the CNN extracts the most informative ngrams for the relation and only considers their resulting activations.

CNNs and RNNs provide complementary information for text classification tasks. Which architecture performs better depends on how imporant it is to semantically understand the whole sequence

注:还有一种textCNN的改进型,即DCNN,值得关注。

5.attention network
参考论文 Hierarchical Attention Networks for Document Classification
模型架构为
这里写图片描述
作者声称该模型可以发现hierarchical document structure,即文档的内部结构。
模型的内容是这样的,先训练word2vec模型,作为word embedding。然后用双向GRU去扫描每一个句子,对于每一个句子生成多个hidden state,对每一个时刻的双向的hidden state做concatenate,作为每一个词的representation,计算这些word representation的weighted summention,权重 uw u w 哪来呢?随机初始化,然后在模型的训练过程中去更新。这样每个句子就得到一个vector,作为句子的表示,一篇文章中有很多句子,每个句子都这么处理,就得到很多句子向量,再用一次类似的attention操作,把句子向量的weighted summention作为文档的向量表示。关于word的weight以及sentence的weight,为什么要借助于context vector呢?毕竟随机初始化一组权重也能做到啊!采用文中这种形式(通过计算向量的cosine similarity来计算权重),好处有两个:1)保证权重之和为1;2)保证相似的word、sentence的权重会比较接近,而如果是随机初始化的一组权重,则很难保证这两点。
作者将该模型与多个模型的效果进行比较,其中就包括了CNN-word、CNN-char、LSTM。

6.matchpyramid
参考论文
1)Text Matching as Image Recognition
2)Pairwise Word Interaction Modeling with Deep Neural Networks for Semantic Similarity Measurement
论文1的模型架构为
这里写图片描述
文章提出一种新的思想,把文本匹配问题转换为图像识别问题,也就是由每一句子对生成一张”image”,然后用CNN对image进行分类。怎么由句子对生成image呢?方法就是计算句子1的每一个word和句子2的每一个word的相似度,文中提出了三种相似度的计算方法: 1)Indicator Function,对于句子1的word wi w i 句子2的word vj v j
这里写图片描述
2)cosine similarity
这里写图片描述
其中, αi α i βj β j 分别为 wi w i vj v j 的embedding。
3)dot product
这里写图片描述
所以,可以用这三种相似度的计算得到三张深度为1的image,将三张image堆到一起,就形成了一个深度(通道数)为3的image,实际中还要再加一层bias(可以初始化为一张全部为1的image)。
论文2的框架类似,只是在计算相似度的时候不是用的word embedding,而是用的BiLSTM得到的各个时刻的hidden states。而且文中计算了mathcparamid之外,为了进一步凸显重要的word间的interaction,又计算了一个similarity focus layer。
模型框架见下图,具体细节可以参考论文
这里写图片描述

参考资料
https://github.com/faneshion/MatchZoo

http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/#more-348

CMU课程:http://phontron.com/class/nn4nlp2017/assets/slides/nn4nlp-05-cnn.pdf

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值