文本分类方法综述

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

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

2.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,那是因为情感分析任务中,句子的词序决定了句子的情感倾向的。

3.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单元的输出向量的均值pooling或者max-pooling作为文本特征。
在所做的医疗文档分类项目中,发现word embedding pooling的方法对于短文本效果较好(原因是短文本字段样本的唯一值通常是有限的,也就是说会有大量的重复样本,这样的话就给向量匹配的方法带来好处),长文本还是要借助textCNN、textRNN来解决。

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

4.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,权重 u w 哪来呢?随机初始化,然后在模型的训练过程中去更新。这样每个句子就得到一个vector,作为句子的表示,一篇文章中有很多句子,每个句子都这么处理,就得到很多句子向量,再用一次类似的attention操作,把句子向量的weighted summention作为文档的向量表示。关于word的weight以及sentence的weight,为什么要借助于context vector呢?毕竟随机初始化一组权重也能做到啊!采用文中这种形式(通过计算向量的cosine similarity来计算权重),好处有两个:1)保证权重之和为1;2)保证相似的word、sentence的权重会比较接近,而如果是随机初始化的一组权重,则很难保证这两点。
作者将该模型与多个模型的效果进行比较,其中就包括了CNN-word、CNN-char、LSTM。

5.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 w i 句子2的word v j
这里写图片描述
2)cosine similarity
这里写图片描述
其中, α i β j 分别为 w i 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

猜你喜欢

转载自blog.csdn.net/u010859324/article/details/81282635