textRNN&textCNN&textRCNN
textRNN
一般取前向/反向LSTM在最后一个时间步长上隐藏状态,然后进行拼接,在经过一个softmax层(输出层使用softmax激活函数)进行一个多分类;或者取前向/反向LSTM在每一个时间步长上的隐藏状态,对每一个时间步长上的两个隐藏状态进行拼接,然后对所有时间步长上拼接后的隐藏状态取均值,再经过一个softmax层(输出层使用softmax激活函数)进行一个多分类(2分类的话使用sigmoid激活函数)。
textCNN
TextCNN中采用的是一维卷积,每个卷积核的大小为
TextRCNN
该模型的主要思想如下:
- 首先获得词向量表示
e ( w i ) ">e(wi)e(wi) - 其次将词向量通过双向RNN(实践中可以是LSTM或GRU)得到
c l ( w i ) ">cl(wi)cl(wi)和c r ( w i ) ">cr(wi)cr(wi) - 将
c l ( w i ) ">cl(wi)cl(wi),e ( w i ) ">e(wi)e(wi)以及c r ( w i ) ">cr(wi)cr(wi)拼接得到新的向量,将其输入到全连接网络对其进行整合,激活函数为tanh - 再将全连接网络的输出进行MaxPooling
- 最后将其输入一个全连接分类器中实现分类
FastText
FastText是Facebook于2016年发布的文本分类模型,其主要思想基于word2vec中的skip-gram模型(关于skip-gram模型参考我之前词向量的博客,这里也就不再赘述),在训练文本分类模型的同时,也将训练出字符级n-gram词向量。对比skip-gram模型,可以FastText的词典规模会更大,模型参数会更多。但每一个词的词向量都是子词向量的和,使得一些生僻词或未出现的单词能够从形态相近的单词中得到较好的词向量表示,从而在一定程度上能够解决OOV问题