基于序列到序列模型和注意力机制的中英文神经机器翻译系统。
claude_seq2seq/
├── models/
│ ├── __init__.py
│ └── seq2seq_attention.py # 带注意力的seq2seq模型
├── data/
│ ├── __init__.py
│ └── preprocessor.py # 数据预处理模块
├── utils/
│ ├── __init__.py
│ ├── metrics.py # 评估指标
│ └── utils.py # 通用工具
├── config.py # 配置文件
├── train.py # 训练脚本
├── evaluate.py # 评估脚本
├── demo.py # 演示脚本
├── requirements.txt # 依赖包
└── README.md # 项目说明
- 类型: 双向LSTM
- 功能: 将中文序列编码为上下文表示
- 输出: 每个时间步的隐藏状态和最终的隐藏状态
- 类型: 单向LSTM + 注意力机制
- 功能: 基于编码器输出生成英文翻译
- 注意力: 加性注意力机制,动态关注源序列的不同部分
- 类型: 加性注意力 (Additive Attention)
- 作用: 在每个解码时间步计算对源序列的注意力权重
- 优势: 解决长序列翻译中的信息瓶颈问题
- ✅ 双向LSTM编码器: 更好地捕获源序列的上下文信息
- ✅ 注意力机制: 动态关注源序列的相关部分
- ✅ 中文分词: 使用jieba进行中文分词处理
- ✅ 教师强制: 训练时使用教师强制策略加速收敛
- ✅ 梯度裁剪: 防止梯度爆炸问题
- ✅ BLEU评估: 使用BLEU分数评估翻译质量
- ✅ 注意力可视化: 可视化注意力权重分布
- ✅ 检查点保存: 支持模型保存和加载
pip install -r requirements.txt
python train.py
训练脚本会:
- 自动生成示例数据(实际使用时需要替换为真实数据)
- 构建词汇表
- 训练seq2seq模型
- 保存最佳模型到
checkpoints/best.pth
# 交互式翻译
python evaluate.py --checkpoint checkpoints/best.pth --interactive
# 评估测试集
python evaluate.py --checkpoint checkpoints/best.pth --test_src data/test.zh --test_trg data/test.en
# 简单示例
python evaluate.py --checkpoint checkpoints/best.pth
python demo.py
演示脚本提供:
- 模型架构信息
- 翻译示例
- 交互式翻译
- 注意力可视化
在 config.py
中可以调整以下参数:
class Config:
# 模型参数
hidden_size = 512 # LSTM隐藏维度
embedding_dim = 256 # 词嵌入维度
num_layers = 2 # LSTM层数
attention_dim = 256 # 注意力维度
dropout = 0.1 # Dropout比率
# 训练参数
batch_size = 32 # 批大小
learning_rate = 0.001 # 学习率
num_epochs = 10 # 训练轮数
teacher_forcing_ratio = 0.5 # 教师强制比率
# 数据参数
max_length = 50 # 最大序列长度
min_freq = 2 # 最小词频
训练数据应为平行语料,每行一个句子:
中文文件 (train.zh):
你好世界
我爱你
今天天气很好
英文文件 (train.en):
hello world
i love you
the weather is nice today
- BLEU: 机器翻译质量评估的标准指标
- BLEU-1/2/3/4: 不同n-gram的BLEU分数
- METEOR: 基于词级别的评估指标(简化版本)
在交互式模式中输入 viz
可以生成注意力热力图,显示模型在翻译时对源序列不同位置的关注程度。
- 数据增强: 使用更大规模的中英平行语料
- 词表优化: 使用BPE或SentencePiece处理未知词
- 模型改进: 尝试Transformer架构
- 束搜索: 实现束搜索提高翻译质量
- 多GPU训练: 支持分布式训练
models/seq2seq_attention.py
: 核心模型实现data/preprocessor.py
: 数据预处理和词汇表构建utils/metrics.py
: BLEU等评估指标实现utils/utils.py
: 通用工具函数train.py
: 完整的训练流程evaluate.py
: 模型评估工具demo.py
: 交互式演示系统
torch
: 深度学习框架jieba
: 中文分词tqdm
: 进度条显示matplotlib/seaborn
: 注意力可视化tensorboard
: 训练监控
- 示例代码使用了小规模的演示数据,实际应用需要大规模平行语料
- 模型参数可以根据数据规模和计算资源进行调整
- 建议使用GPU进行训练以获得更好的性能
- Python 3.7+
- PyTorch 1.9+
- CUDA (可选,用于GPU加速)
这个项目提供了一个完整的中英神经机器翻译系统的实现,包含了从数据预处理到模型训练、评估和部署的完整流程。