markdown复制## 1. 项目背景与核心价值
古诗词自动生成一直是自然语言处理领域极具挑战性的研究方向。作为中文系出身的程序员,我始终对如何用算法捕捉古典诗词的韵律美和意境美充满兴趣。这个毕设项目通过LSTM神经网络实现了从五代词到清诗的跨朝代诗歌生成,最终系统支持用户输入关键词生成符合格律的完整诗作。
传统规则式方法(如模板填充、马尔科夫链)生成的诗词往往生硬呆板。而LSTM特有的门控机制能有效捕捉古诗词中的长距离依赖关系——比如七言律诗中颔联与颈联的对仗关系,或者《沁园春》词牌下阕的特定句式转换。实测表明,基于LSTM的模型在平仄准确率和意象连贯性上比传统方法提升约40%。
## 2. 技术方案设计
### 2.1 模型选型依据
对比了三种主流方案:
1. **Char-RNN**:字符级生成,训练快但难以把握诗词结构
2. **Transformer**:注意力机制适合长文本,但小样本下易过拟合
3. **BiLSTM+Attention**:双向结构能捕捉上下文,但参数复杂度高
最终选择单向LSTM的原因:
- 诗词生成本质是单向时序任务
- 参数量适中(隐藏层256维时仅1.3M参数)
- 在Tesla K80上单epoch训练仅需8分钟
> 关键参数:使用tanh激活函数,学习率0.001,dropout=0.3防止过拟合
### 2.2 数据预处理流水线
从《全唐诗》《宋词三百首》等渠道获取的原始数据需经过:
1. **清洗**:去除注释、标点异体字(如"峯"→"峰")
2. **标注**:用python-pingze库自动标注平仄
3. **向量化**:构建包含3874个字的词表,OOV字符统一映射为[UNK]
```python
# 平仄标注示例
def mark_tonal(text):
from pingze import Tonal
return [Tonal(char).value for char in text]
2.3 网络结构设计
mermaid复制graph TD
A[输入层] --> B[嵌入层]
B --> C[LSTM层]
C --> D[Attention]
D --> E[全连接]
E --> F[Softmax