深度NLP
1、通用模型结构
文本分类的模型很多,基本上都遵循以下的架构:
基本思路就是,词(或者字)经过embedding层之后,利用CNN/RNN等结构,提取局部信息、全局信息或上下文信息,利用分类器进行分类,分类器的是由两层全连接层组成的。
在开始介绍每个模型之前,这里先下几个结论:
-
1、如果你的模型分数不够高,试着把模型变得更深更宽更复杂
-
2、当模型复杂到一定程度的时候,不同模型的分数差距很小
-
3、当模型复杂达到一定程度,继续变复杂难以继续提升模型的分数
2、 TextCNN
卷积神经网络(CNN Convolutional Neural Network)最初在图像领域取得了巨大成功,CNN原理就不讲了,核心点在于可以捕捉局部相关性,具体到文本分类任务中可以利用CNN来提取句子中类似 n-gram 的关键信息。
这是最经典的文本分类模型,这里就不细说了,模型架构如下图:
和原始的论文的区别就在于:
-
使用两层卷积
-
使用更多的卷积核,更多尺度的卷积核
-
使用了BatchNorm
-
分类的时候使用了两层的全连接
总之就是更深,更复杂。不过卷积核的尺寸设计的不够合理,导致感受野差距过大。
3、TextRNN
相比于其他人的做法,这里的不同点在于:
-
使用了两层的双向LSTM。
-
分类的时候不是只使用最后一个隐藏元的输出,而是把所有隐藏元的输出做K-MaxPooling再分类。
4、TextRCNN
和RNN类似,也是两层双向LSTM,但是需要和Embedding层的输出Concat(直连)。
5、TextInception
知乎看山杯NLP大赛冠军model,参照TextCNN(多尺度卷积核),模仿Inception的结构设计的,每层Inception结构如下图所示:
【参考】:http://www.360doc.com/content/17/1124/18/40903010_706805642.shtml
https://zhuanlan.zhihu.com/p/25928551