该仓库记录了我从 TensorFlow 转向 Pytorch 时做的小项目, 主要针对 NLP 初学者,分为三个难度:
- Easy 级别简单实现了一下常见基础模型:逻辑回归, 线性回归, 前馈神经网络, 卷积神经网络。
- Medium 级别针对NLP初学者,采用最简单的文本分类任务, 实现了一些经典模型,如TextCNN, TextRNN, LSTM+Attentioon等。
- Hard 级别中实现了一些阅读理解模型,如BiDAF,QANet 等。 这部分难度会很高,阅读理解模型的复杂度应该是NLP任务中最复杂的了,但我人为理解阅读理解领域对NLP的学习是很有帮助的。
本仓库主要实现Bert之前相关的模型,如果想看看 Bert 之后的相关实现,可以看看我其他仓库。
- python 3.6
- numpy
- pytorch = 1.0
- torchvision
- torchtext
- tqdm
本仓库分别采用三个数据集: Mnist 手写数字识别, SST-2情感分类,SQuAD阅读理解数据集。 其中, SST-2数据集来自Glue, 考虑到 SST-2 并没有给出测试集,因此我将训练集的2000多个样本划分出来形成测试集。 SQuAD 数据集可以从 SQuAD下载。
不过,推荐从我的百度云下载,后续我会给出连接。
python RUN_mnist.py --model_name=LR or CNN or FNN
Dataset | LR | FNN | CNN |
---|---|---|---|
Mnist 手写数字识别 | 92% | 98% | 99% |
注意: 由于这是实验性质的数据,因此没有死扣参数细节,主要专注于模型的实现,且考虑到词向量的方式可能将被淘汰,因此许多小的Trick 就没有实现,如 Highway Networks 等。
python run_SST.py # 需要在该文件下更改你要运行的模型名字,我将每个模型的参数独立了出来,便于理解调试
model name | acc | F1 | loss |
---|---|---|---|
TextCNN | 92.53% | 0.925 | 0.195 |
TextRNN | 92.13% | 0.924 | 0.207 |
LSTM_ATT | 93.07 | 0.930 | 0.285 |
TextRCNN | 94.06 | 0.940 | 0.165 |
[1] TextCNN: Convolutional Neural Networks for Sentence Classification [3] A Sensitivity Analysis of (and Practitioners' Guide to) Convolutional Neural Networks for Sentence Classification [4] Recurrent Convolutional Neural Network for Text Classification [5] Hierarchical Attention Networks for Document Classification [n] Large Scale Multi-label Text Classification With Deep Learning