一个使用Pytorch
构建的 Transformer 架构
英译中翻译程序
setting.py
:模型相关参数,文件目录的配置文件。
utils.py
:一些工具函数。
data_pre.py
:数据的预处理,得到输出模型的batch数据和相关的mask矩阵
model.py
:模型文件。
train.py
:进行模型的训练。和最好模型的保存。
test.py
:对测试集句子的测试输出。
bleu_score.py
:对机器翻译评分。
infer.py
:实现单个句子进行翻译。
app.py
:通过使用infer.py封装的单个句子翻译的方法,实现flask api
- 下载nltk依赖
如果之前已经下载过,这一步可以跳过
import nltk
nltk.download('punkt')
- 数据处理/模型训练
python train.py
训练好的模型会存在 ./save 文件夹下
- 模型交互
python infer.py --sentence="I love you"
- Flask API
启动flask服务
python app.py
flask 接口 /translation
post 方法
{
"sentence": "英文句子"
}
返回
{
"result": "翻译结果",
"msg": "success",
"code": 200
}
使用14533条翻译数据进行训练。
数据文件格式:en\t
cn
Anyone can do that. 任何人都可以做到。
How about another piece of cake? 要不要再來一塊蛋糕?
She married him. 她嫁给了他。
I don't like learning irregular verbs. 我不喜欢学习不规则动词。
使用BLEU算法进行翻译效果评估 BLEU算法评价结果:
对399条翻译句子效果进行评估
验证集:0.1075088492716548,n-gram权重:(1,0,0,0)
0.03417978514554449,n-gram权重:(1,0.2,0,0)