[关闭]
@mymy 2022-10-28T08:38:12.000000Z 字数 2254 阅读 5848

基于序列模型的中英文翻译机

机器学习 实验


You can click here to get the English version.

实验目的

  1. 探索自然语言处理
  2. 理解经典的Sequence-to-Sequence机器翻译模型
  3. 掌握Attention机制在机器翻译模型上的应用
  4. 搭建机器翻译模型,在简单小规模数据集上验证模型性能,培养工程能力
  5. 了解Transformer在机器翻译任务上的应用

数据集描述

  1. 本教程采用中英文翻译数据集,更多翻译数据集可在该网站上下载
  2. 共有23,610个翻译数据对,每对翻译数据在同一行:左边是英文,中间是中文,右边是其他属性信息,分割符是\t

实验环境

实验时间及地点

2022-10-29 B7-231 238 (谭明奎老师、吴庆耀老师)

提交截止时间

2022-11-25 11.59 AM

实验形式

团队协作完成

实验步骤

基于注意力机制的机器翻译模型的示例代码可参考Pytorch 教程,详细步骤如下:

  1. 下载中英文翻译数据集,并解压为./data/eng-cmn.txt

  2. 按行读取数据集,构建训练数据对时注意移除属性信息(每行只取前两个数据),否则会报错

    1. pairs = [[normalizeString(s) for s in l.split('\t')[:2]] for l in lines]
    2. # 其中normalizeString函数中的正则表达式需对应更改,否则会将中文单词替换成空格
    3. def normalizeString(s):
    4. s = s.lower().strip()
    5. if ' ' not in s:
    6. s = list(s)
    7. s = ' '.join(s)
    8. s = unicodeToAscii(s)
    9. s = re.sub(r"([.!?])", r" \1", s)
    10. return s
  3. 从训练句子中拆分出单词,构建数据集的中英文单词对照表

    注意: 默认reverse==True构建“中文-->英文”数据集;感兴趣的同学也可尝试构建“英文-->中文”数据集

  4. 构建机器翻译模型:

    • 构建编码器(Encoder)
    • 构建基于注意力机制的解码器(Attention Decoder)
  5. 定义损失函数,训练机器翻译模型

  6. 使用BLEU等机器翻译指标评估已训练好的模型,可使用 nltk 库

    1. # pip install nltk
    2. from nltk.translate.bleu_score import sentence_bleu
    3. bleu_score = sentence_bleu([reference1, reference2, reference3], hypothesis1)
  7. 可视化测试结果,整理实验结果并完成实验报告(实验报告模板将包含在示例仓库中)

    可视化结果示意图

[可选1] 感兴趣的同学可自行调整参数,如调整句子最大长度MAX_LENGTH,总训练次数n_iters,特征维度hidden_size

[可选2] 感兴趣的同学可自行划分训练集/测试集,推荐的划分比例是 7:3,根据定性及定量的实验结果进一步分析模型性能

[可选3] 感兴趣的同学可自行探索使用Transformer完成任务,示例代码可参考The Annotated Transformer bloggithub仓库 (注意:同样需要自行处理中英文翻译数据集)

扩展建议

[扩展1] 感兴趣的同学可以自己搜索高考试卷或者四六级试卷的资料对数据集进行扩充

[扩展2] 感兴趣的同学可以自己设计个软件(简单的手机APP或者网页),例如页面有一个输入框和一个输出框,输入中文或英文,输出对应的翻译的文本

[扩展3] 同学也可以展示一些失败的例子,比如翻译的文本质量很差等

评分标准

评分项 占比 说明
出勤 40% 特殊情况可向学院请假
代码有效 20% 代码可以编译通过,没有任何编译错误
实验报告 30% 是否按照实验模板填写
代码规范 10% 主要考核代码变量命名是否规范

提交方式

  1. 访问ml-lab.scut-smil.cn/
  2. 点击对应的提交入口
  3. 填写自己的姓名、学号,上传pdf格式的报告和zip格式的代码压缩包

注意事项


有任何的意见或者建议都可以直接在qq群中向助教反映。

参考资料

[1] Seq2Seq机器翻译 Pytorch 教程

[2] 基于Transformer的机器翻译模型原理及实现代码注解 The Annotated Transformer

[3] Sutskever, Ilya, Oriol Vinyals and Quoc V. Le.2014. “Sequence to Sequence Learning with Neural Networks.” In NeurIPS, 3104-3112.

[4] Vaswani, Ashish, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, L. Kaiser and Illia Polosukhin. 2017.“Attention is All you Need.” In NeurIPS, 5998–6008.

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注