@mymy
2022-10-28T08:38:12.000000Z
字数 2254
阅读 5848
机器学习
实验
You can click here to get the English version.
2022-10-29 B7-231 238 (谭明奎老师、吴庆耀老师)
2022-11-25 11.59 AM
团队协作完成
基于注意力机制的机器翻译模型的示例代码可参考Pytorch 教程,详细步骤如下:
下载中英文翻译数据集,并解压为./data/eng-cmn.txt
按行读取数据集,构建训练数据对时注意移除属性信息(每行只取前两个数据),否则会报错
pairs = [[normalizeString(s) for s in l.split('\t')[:2]] for l in lines]
# 其中normalizeString函数中的正则表达式需对应更改,否则会将中文单词替换成空格
def normalizeString(s):
s = s.lower().strip()
if ' ' not in s:
s = list(s)
s = ' '.join(s)
s = unicodeToAscii(s)
s = re.sub(r"([.!?])", r" \1", s)
return s
从训练句子中拆分出单词,构建数据集的中英文单词对照表
注意: 默认reverse==True
构建“中文-->英文”数据集;感兴趣的同学也可尝试构建“英文-->中文”数据集
构建机器翻译模型:
定义损失函数,训练机器翻译模型
使用BLEU
等机器翻译指标评估已训练好的模型,可使用 nltk 库
# pip install nltk
from nltk.translate.bleu_score import sentence_bleu
bleu_score = sentence_bleu([reference1, reference2, reference3], hypothesis1)
可视化测试结果,整理实验结果并完成实验报告(实验报告模板将包含在示例仓库中)
[可选1] 感兴趣的同学可自行调整参数,如调整句子最大长度MAX_LENGTH
,总训练次数n_iters
,特征维度hidden_size
等
[可选2] 感兴趣的同学可自行划分训练集/测试集,推荐的划分比例是 7:3,根据定性及定量的实验结果进一步分析模型性能
[可选3] 感兴趣的同学可自行探索使用Transformer完成任务,示例代码可参考The Annotated Transformer blog和github仓库 (注意:同样需要自行处理中英文翻译数据集)
扩展建议:
[扩展1] 感兴趣的同学可以自己搜索高考试卷或者四六级试卷的资料对数据集进行扩充
[扩展2] 感兴趣的同学可以自己设计个软件(简单的手机APP或者网页),例如页面有一个输入框和一个输出框,输入中文或英文,输出对应的翻译的文本
[扩展3] 同学也可以展示一些失败的例子,比如翻译的文本质量很差等
评分项 | 占比 | 说明 |
---|---|---|
出勤 | 40% | 特殊情况可向学院请假 |
代码有效 | 20% | 代码可以编译通过,没有任何编译错误 |
实验报告 | 30% | 是否按照实验模板填写 |
代码规范 | 10% | 主要考核代码变量命名是否规范 |
有任何的意见或者建议都可以直接在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.