这是indexloc提供的服务,不要输入任何密码
Skip to content

zengyy78/seq2seq-attn

Repository files navigation

中英神经机器翻译系统

基于序列到序列模型和注意力机制的中英文神经机器翻译系统。

项目结构

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                   # 项目说明

模型架构

编码器 (Encoder)

  • 类型: 双向LSTM
  • 功能: 将中文序列编码为上下文表示
  • 输出: 每个时间步的隐藏状态和最终的隐藏状态

解码器 (Decoder)

  • 类型: 单向LSTM + 注意力机制
  • 功能: 基于编码器输出生成英文翻译
  • 注意力: 加性注意力机制,动态关注源序列的不同部分

注意力机制

  • 类型: 加性注意力 (Additive Attention)
  • 作用: 在每个解码时间步计算对源序列的注意力权重
  • 优势: 解决长序列翻译中的信息瓶颈问题

主要特性

  • 双向LSTM编码器: 更好地捕获源序列的上下文信息
  • 注意力机制: 动态关注源序列的相关部分
  • 中文分词: 使用jieba进行中文分词处理
  • 教师强制: 训练时使用教师强制策略加速收敛
  • 梯度裁剪: 防止梯度爆炸问题
  • BLEU评估: 使用BLEU分数评估翻译质量
  • 注意力可视化: 可视化注意力权重分布
  • 检查点保存: 支持模型保存和加载

安装依赖

pip install -r requirements.txt

使用方法

1. 训练模型

python train.py

训练脚本会:

  • 自动生成示例数据(实际使用时需要替换为真实数据)
  • 构建词汇表
  • 训练seq2seq模型
  • 保存最佳模型到 checkpoints/best.pth

2. 评估模型

# 交互式翻译
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

3. 演示系统

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 可以生成注意力热力图,显示模型在翻译时对源序列不同位置的关注程度。

扩展建议

  1. 数据增强: 使用更大规模的中英平行语料
  2. 词表优化: 使用BPE或SentencePiece处理未知词
  3. 模型改进: 尝试Transformer架构
  4. 束搜索: 实现束搜索提高翻译质量
  5. 多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: 训练监控

注意事项

  1. 示例代码使用了小规模的演示数据,实际应用需要大规模平行语料
  2. 模型参数可以根据数据规模和计算资源进行调整
  3. 建议使用GPU进行训练以获得更好的性能

开发环境

  • Python 3.7+
  • PyTorch 1.9+
  • CUDA (可选,用于GPU加速)

这个项目提供了一个完整的中英神经机器翻译系统的实现,包含了从数据预处理到模型训练、评估和部署的完整流程。

About

seq2seq model with additive attention from Chinese to English

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages