zl程序教程

您现在的位置是:首页 >  其他

当前栏目

【文本分类】A C-LSTM Neural Network for Text Classification

2023-03-14 22:52:43 时间

·摘要:

 本文作者将CNN和RNN(LSTM)结合使用,应用到了NLP的文本分类任务中。

·参考文献:

 [1] A C-LSTM Neural Network for Text Classification 论文链接:https://arxiv.org/abs/1511.08630

[1] 摘要


  · 论文结合CNN和RNN(LSTM)模型提出了C-LSTM模型,应用于文本分类。

  · C-LSTM利用CNN提取抽象的高级特征,并将其送入长短期记忆递归神经网络(LSTM)中得到句子表示。最终通过全连接层来做分类任务。

 · C-LSTM既能捕捉短语的局部特征(CNN),也能捕捉句子的序列信息(LSTM)。

[2] 介绍


  2.1、NLP中CNN与RNN的优缺点:

  CNN能够从时间或空间数据中学习局部响应,但缺乏学习序列相关性的能力;另一方面,RNN专门用于序列建模,但不能并行提取特征。

  2.2、C-LSTM核心思想:

CNNLSTMC-LSTM
嵌入层嵌入层嵌入层
卷积层LSTM层卷积层
池化层全连接层LSTM层
全连接层全连接层

  C-LSTM模型将CNN卷出来的窗口特征,组织成序列化窗口特征作为LSTM的输入。通过这种方式,不是直接从输入的句子构建LSTM,而是首先将每个句子转换为连续的窗口(n-gram)特征。

在网络结构中的全连接层之前,所做的工作都是在寻找一种最好的文本向量化表示方法。

  2.3、C-LSTM模型图:

  官方图:

image.png

  如上图,设有一个batch中的一个文本[“The”,“movie”,“is”,“awesome”,"!"]。卷积核边长为3 x 4,卷积通道为4。那么对于初始的文本向量,会产生出4通道的3 x 1维feature map。然后再把多通道的feature map中对应位置提取在一起,作为LSTM的输入。

 池化层会破坏卷积后的序列性,所以模型中没有池化。

【注一】这里卷积核宽度为embedding层维度,这样卷积后的一个通道的size为n行一列,转置一下就是个一维数组了。

【注二】 在torchtext中,如果想把卷积层的输出作为LSTM层的输入的话,需要设置LSTM层的input_size等于卷积层的filter_num(卷积通道数)。

[3] 疑问?


  1、CNN中卷积核的长宽设置问题,宽不等于embedding_dims时,时什么情况?

  2、如何比较不同模型之间的精度?同一模型每次运行的精度都不一样。