论文Recurrent Convolutional Neural Networks for Text Classification的实验部分

本文介绍了一项使用多种模型和技术进行文本分类的实验研究。实验选取了20Newsgroups、Fudanset等四个不同领域的数据集,并通过对比Bag of Words、LDA、CNN等多种方法评估了RCNN在文本分类任务上的表现。
使用的基本模型结构:
 
实验
实验中使用了四个数据集。
20Newsgroups:qwone.com/˜jason/20Newsgroups/
数据集包含20个新闻组的信息,我们使用日期版本并选择四种主要类别(综合,政治,娱乐和宗教)


Fudan set:2www.datatang.com/data/44139 and 43543
复旦大学文件分类集合是一个中文文件分类集合,包含20个分类,包括艺术教育和能源。


ACL Anthology Network:old-site.clsp.jhu.edu/˜sbergsma/Stylo/
该数据集包含了由ACL和相关组织发布的科学文献。它由五种语言注解:英语,日语,德语,中文和法语。


Stanford Sentiment Treebank:nlp.stanford.edu/sentiment/
这个数据集包含了电影评论解析,和五种标签:非常消极,消极,中立,积极,非常积极。


实验设置
对于英文文件,使用Stanford Tokenizer来获取令牌(nlp.stanford.edu/software/tokenizer.shtml)。对于中文文件,使用ICTCLAS来分词(ictclas.nlpir.org)。
不移除文本中的任何stop words或符号。所有的四个数据集被事先分为训练集和测试集


神经网络的超参数设置取决于使用的数据集。选择先前学习中的一系列常见的超参数。此外,设置随机梯度下降的学习率为 =0.01,隐层的大小为H=100,词嵌入的向量大小为|e|=50.上下文向量的大小为|c|=50.使用word2vec中(使用的Skip-gram算法:code.google.com/p/word2vec)的默认参数训练词嵌入。用英文和中文的维基百科转储来训练单词嵌入。


方法
Bag of Words/Bigrams + LR/SVM
文本分类的基准主要使用单词或双词作为特征的机器学习算法。
分别使用LR和SVM(www.csie.ntu.edu.tw/˜cjlin/liblinear),每个特征的权重为术语出现的频率。
Average Embedding + LR
这个基准使用词嵌入的平均权重,随后应用到一个softmax层。每个单词的权重是它词频-逆向文件频率的值(http://www.cnblogs.com/sddai/p/5660181.html)。
LDA
在集中分类任务中,基于LDA的方法能够较好捕获文本的语义。我们选择两种方法用于比较:ClassifyLDA-EM和Labeled-LDA。
Tree Kernels
使用各种tree kernel作为特征,是ACL母语分类任务中最先进的工作。列举两个主要方法用以比较:the context-free grammar (CFG) produced by the Berkeley parser (Petrov et al. 2006) and the reranking feature set of Charniak and Johnson (2005) (C&J).
RecursiveNN
我们使用两种递归结构比较:the Recursive Neural Network (RecursiveNN) (Socher et al. 2011a) 和它的改进版本 the Recursive Neural Tensor Networks (RNTNs)。
CNN
选择卷积神经网络用于比较。它的卷积内核只是简单的级联了预定义窗口大小的词嵌入。


结果和讨论
 
RCNN使用一个循环结构能够捕获更广的上下文信息。相较于其他模型更为出色。
### 卷积递归神经网络 (CRNN) 概念 卷积递归神经网络(Convolutional Recurrent Neural Network, CRNN)是一种混合型深度学习框架,它结合了卷积神经网络(CNN)的空间特征提取能力和递归神经网络(RNN)的时间序列处理能力。这种架构特别适用于既具有空间结构又存在时间依赖性的复杂数据集。 #### 结构特点 CRNN 的典型结构由三部分组成: 1. **前端卷积层** - 使用多层卷积操作来捕捉输入数据中的局部模式和层次化特征[^1]。 2. **中间循环层** - 将经过卷积变换后的特征图作为输入传递给 RNN 或其变体 LSTM/GRU 层,在这里进行序列建模以理解不同时间步之间的关系。 3. **末端全连接层或其他输出模块** - 负责最终的任务决策,比如分类或回归预测。对于某些特定任务还可以采用 CTC (Connectionist Temporal Classification) 或者 Seq2Seq 加 Attention 机制来进行优化[^2]。 ```python import torch.nn as nn class CRNN(nn.Module): def __init__(self, num_classes=10): super(CRNN, self).__init__() # 定义卷积层 self.cnn = nn.Sequential( nn.Conv2d(in_channels=1, out_channels=64, kernel_size=(3, 3), padding=1), nn.ReLU(), nn.MaxPool2d(kernel_size=(2, 2)), nn.Conv2d(in_channels=64, out_channels=128, kernel_size=(3, 3), padding=1), nn.ReLU(), nn.MaxPool2d(kernel_size=(2, 2)) ) # 定义循环层 self.rnn = nn.LSTM(input_size=128*7*7, hidden_size=512, batch_first=True) # 输出层 self.fc = nn.Linear(512, num_classes) def forward(self, x): cnn_out = self.cnn(x).view(-1, 128 * 7 * 7) rnn_out, _ = self.rnn(cnn_out.unsqueeze(1))[-1] output = self.fc(rnn_out.squeeze()) return output ``` #### 应用场景 - **语音识别**:通过 MFCC 特征表示的心音信号可以通过 CRNN 进行有效分类,其中 CNN 提取音频帧内的频谱特性而 RNN 则负责捕捉跨帧间的动态变化趋势。 - **手写文字识别**:利用图像形式呈现的文字样本能够借助于该模型完成字符级别的转录工作;此时 CNN 主要关注笔画形态学属性,而 RNN 可帮助解析书写顺序逻辑。 - **视频动作检测**:针对连续帧组成的视觉流媒体资料实施行为分析时,先经由 CNN 获取每一时刻的画面信息再交予 RNN 来跟踪随时间演变的动作轨迹[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值