1. 项目背景与核心价值
诗歌生成一直是自然语言处理领域极具挑战性的课题。传统基于规则或统计的方法生成的文本往往缺乏连贯性和艺术性,而深度学习模型通过学习大量诗歌文本的潜在规律,能够产生更具创造性的输出。GRU(Gated Recurrent Unit)作为RNN的改进变体,在处理序列数据时具有参数更少、训练更稳定的特点,特别适合文本生成任务。
这个选题的价值在于:
- 学术层面:探索GRU在创造性文本生成中的应用边界
- 技术层面:实现从数据预处理到模型部署的完整NLP pipeline
- 实用层面:构建可交互的诗歌生成系统,展示AI的创造力
- 教学层面:涵盖深度学习、自然语言处理、Web开发等多领域知识
我在研究生阶段曾用LSTM做过类似的中文古诗生成项目,发现GRU在短文本生成上往往能达到相近效果但训练更快,这对计算资源有限的毕设场景特别重要。
2. 技术方案设计
2.1 整体架构
系统采用经典的"数据-模型-应用"三层架构:
[文本爬取] → [数据清洗] → [模型训练] → [Web部署]2.2 关键技术选型
GRU vs LSTM 对比
- GRU将LSTM的输入门和遗忘门合并为更新门,参数减少约1/3
- 在诗歌生成这种中等长度序列任务中,二者效果相近
- GRU的简化结构使其更易于调试和优化
文本处理方案
- 使用spaCy进行词性标注和句法分析
- 采用Word2Vec或GloVe预训练词向量
- 考虑BPE(Byte Pair Encoding)处理罕见词
模型增强策略
- 注意力机制捕捉跨行诗句的关联
- Beam Search提升生成质量
- 温度参数控制生成多样性
实践建议:先用小规模数据快速验证模型可行性,再逐步增加复杂度。我曾在一个类似项目中因过早引入注意力机制导致调试困难,建议先完成基础GRU模型再逐步添加功能。
3. 数据集构建
3.1 数据来源
推荐使用以下英文诗歌数据集:
- Gutenberg诗歌集(约5万首)
- Poetry Foundation数据集
- 网络爬取当代诗歌(注意版权)
3.2 数据预处理
关键步骤:
文本清洗
- 去除特殊符号、保留标点
- 统一大小写处理
- 诗句分行标记
特征工程
# 示例:诗句长度分析 import matplotlib.pyplot as plt line_lengths = [len(line.split()) for poem in poems for line in poem] plt.hist(line_lengths, bins=30) plt.xlabel('Words per line') plt.ylabel('Frequency')- 数据增强
- 同义词替换
- 语序调换
- 风格迁移(不同诗人作品混合)
4. 模型实现细节
4.1 GRU网络结构
典型参数配置:
model = Sequential([ Embedding(vocab_size, 256, input_length=max_len), GRU(512, return_sequences=True), Dropout(0.3), GRU(256), Dense(vocab_size, activation='softmax') ])4.2 训练技巧
学习率调度
- 初始学习率0.001
- ReduceLROnPlateau回调
早停策略
- 验证集loss连续3轮不下降则停止
批量大小
- 根据GPU内存选择32-128
踩坑记录:曾因未对输入文本进行足够shuffle导致模型快速过拟合。建议使用Keras的TextVectorization层实现更健壮的数据管道。
5. 评估与优化
5.1 评估指标
定量指标
- Perplexity
- BLEU-4
- 韵律匹配度
定性评估
- 人工评分(1-5分)
- Turing测试(能否区分AI/人类作品)
5.2 常见问题解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 生成重复短语 | 模型保守 | 提高temperature参数 |
| 内容不连贯 | 上下文窗口太小 | 增加GRU单元数 |
| 韵律差 | 未考虑音节特征 | 添加韵律损失函数 |
| 训练震荡 | 学习率过高 | 使用梯度裁剪 |
6. 系统实现
6.1 Web界面设计
推荐技术栈:
- 前端:Vue.js + Element UI
- 后端:Flask/FastAPI
- 部署:Docker + Heroku
关键功能点:
- 主题输入(如"love", "nature")
- 风格选择(十四行诗、自由诗等)
- 生成结果可视化
6.2 性能优化
模型量化
- FP32 → FP16
- 参数量减少40%
缓存机制
- 高频查询结果缓存
- 预生成常见主题诗歌
7. 创新方向建议
多模态扩展
- 根据图像生成诗歌
- 语音朗诵生成结果
交互式创作
- 人工干预生成过程
- 混合创作模式
个性化适应
- 学习用户偏好
- 模仿特定诗人风格
实现这些扩展需要额外2-3周开发时间,但能显著提升项目亮点。我曾指导过一个加入图像识别的变体项目,在答辩时获得了额外加分。
8. 开发路线图
推荐的时间管理方案:
| 阶段 | 周数 | 交付物 |
|---|---|---|
| 文献调研 | 1 | 技术方案文档 |
| 数据准备 | 2 | 清洗后的数据集 |
| 模型开发 | 3 | 训练好的.h5模型 |
| 系统实现 | 2 | 可演示的Web应用 |
| 论文撰写 | 2 | 完整毕业论文 |
关键节点:
- 第4周完成最小可行模型
- 第6周进行中期检查
- 第10周完成系统集成
9. 答辩准备建议
演示设计
- 准备对比样例(不同参数生成结果)
- 实时生成演示
- 失败案例分析(展示debug过程)
问题准备
- 为什么选择GRU而非Transformer?
- 如何处理生成内容的伦理问题?
- 系统的局限性是什么?
视觉辅助
- 模型结构图
- 训练曲线图
- 评估指标对比表
我在评审毕业设计时,最欣赏那些能清晰解释技术选择背后思考、同时诚实讨论局限性的答辩。建议用10%的篇幅讨论改进方向,这往往能展现批判性思维。