RNN实现情感分类
二分类问题:Positive和Negative两类
步骤:
1.加载IMDB数据集
2.加载预训练词向量:预训练词向量是对输入单词的数值化表示,通过nn.Embedding层,采用查表的方式,输入单词对应词表中的index,获得对应的表达向量。
3.数据集预处理
通过加载器加载的IMDB数据集进行了分词处理,但不满足构造训练数据的需要,因此要对其进行额外的预处理。其中包含的预处理如下:通过Vocab将所有的Token处理为index id;将文本序列统一长度,不足的使用补齐,超出的进行截断。
4.模型构建
nn.Embedding层加载Glove词向量;然后使用RNN循环神经网络做特征提取;最后将RNN连接至一个全连接层,即nn.Dense,将特征转化为与分类数量相同的size.
5.预测Positive或Negative的二分类问题,选择nn.BCEWithLogitsLoss(二分类交叉熵损失函数)。
6.训练逻辑
- 读取一个Batch的数据;
- 送入网络,进行正向计算和反向传播,更新权重;
- 返回loss。
7.评估逻辑:
- 读取一个Batch的数据;
- 送入网络,进行正向计算,获得预测结果;
- 计算准确率。
8.模型训练与保存
9.模型加载与测试
自定义输入测试:
- 将输入句子进行分词;
- 使用词表获取对应的index id序列;
- index id序列转为Tensor;
- 送入模型获得预测结果;
- 打印输出预测结果。
出现jupyter崩溃,清理内存重新运行
结果: