本项目为“2025复旦步青计划”中关于循环神经网络(RNN)和LSTM应用的实训项目,分为三个子模块,分别展示了 Simple RNN 和 LSTM 在情感分析与字符生成任务中的不同实践。
.
├── 1.simple-RNN-sentiment
│ └── 使用Simple RNN进行影评情感分析
├── 2.sentiment-analysis-IMDB-Review-using-LSTM
│ └── 使用LSTM进行IMDB影评情感分析
└── 3.name-generation-LSTM
└── 使用LSTM进行美国人名生成
└── 4.seq2seq-translation
└── 使用Seq2Seq进行机器翻译
└── README.md
└── requirements.txt
使用 Simple RNN 模型对影评数据进行训练与预测,判断评论为“正面”或“负面”。
- 模型结构简单,训练速度快
- 能力有限,难以处理长依赖序列
- 适合作为序列建模入门练习
使用 LSTM 模型对 IMDB 影评数据集 进行情感分类。
位于 requirements.txt 中,包括:
pandas
numpy
nltk
scikit-learn
tensorflow
- 加载数据:读取 IMDB 数据集(50K 条影评)。
- 数据清洗:去除 HTML、标点符号、停用词。
- 标签编码:将情感标记为 0(负面)或 1(正面)。
- 数据划分:拆分为训练集和测试集。
- 分词与序列处理:Tokenizer + pad_sequences。
- 构建模型:
model = Sequential() model.add(Embedding(input_dim=total_words, output_dim=32, input_length=130)) model.add(LSTM(64)) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
- 训练评估:使用
model.fit()训练并评估准确率。
相比 Simple RNN,LSTM 显著提高了情感分类的准确率,能够更有效捕捉句子中的长期依赖关系。
构建一个基于字符级语言模型的 LSTM 模型,生成符合美式命名规律的英文名。
-
数据加载:
- 从 CSV 文件中读取英文名字
- 全部转换为小写,构建字符字典
-
训练样本构建:
- 将每个名字拆分为字符序列
- 构建输入张量 X(字符序列)与标签 y(下一个字符)
-
模型训练:
- 使用 PyTorch 的
nn.LSTM构建模型 - 优化器:Adam(学习率=0.005)
- 损失函数:CrossEntropyLoss
- Batch size = 512,Epoch = 20
- 每轮保存最优模型,并绘制 loss 曲线
- 使用 PyTorch 的
使用Seq2Seq模型架构实现简单的翻译任务,展示编码器-解码器结构在序列转换任务中的应用。
- 采用编码器-解码器架构
- 使用注意力机制提升长序列处理能力
- 支持可变长度输入输出
- 适用于机器翻译、文本摘要等任务
-
数据准备:加载平行语料库,进行分词和序列化处理
-
构建模型:
# 编码器 encoder = Sequential() encoder.add(Embedding(input_dim=vocab_size, output_dim=256)) encoder.add(LSTM(256, return_state=True)) # 解码器 decoder = Sequential() decoder.add(Embedding(input_dim=target_vocab_size, output_dim=256)) decoder.add(LSTM(256, return_sequences=True)) decoder.add(Dense(target_vocab_size, activation='softmax'))
-
训练配置 :
- 损失函数:稀疏分类交叉熵
- 优化器:Adam
- 评估指标:准确率
- 推理实现 :使用beam search生成翻译结果
该模块提供完整的 Notebook 文件,用于演示字符生成模型的训练过程,适合教学展示。
| 模型 | 训练速度 | 精度表现 | 长期依赖处理能力 |
|---|---|---|---|
| Simple RNN | 较快 | 中等 | 弱 |
| LSTM | 较慢 | 高 | 强 |
LSTM 在实际表现上优于 Simple RNN,尤其是在需要理解句子上下文含义的自然语言任务中更为有效。
本项目为 2025 年复旦大学“步青计划”项目课程作品,旨在通过实践教学加深对 RNN 及 LSTM 网络的理解与应用,覆盖从文本分类到语言生成的典型任务场景。
欢迎同行使用、参考或提出建议!
如需 Jupyter Notebook 版本或模型权重文件,请查看对应文件夹内的 .ipynb 文件及 checkpoints/ 文件夹。