一、 选题背景
机器翻译的发展主要分为三个阶段:基于规则的机器翻译;基于统计的机器翻译;基于人工神经网络的机器翻译。
现在神经机器翻译的主流模型是编码器-解码器模型结构。该模型由编码器与解码器两部分组成,编码器是一个循环神经网络(RNN),输入是一个词语的序列,每次向RNN单元输入一个词语的嵌入表示向量,并根据输入更新循环神经网络中的隐状态向量。输入完成后得到一个最终的定长的状态向量。理论上最后的这个状态向量包换了前面按序列输入的所有语意信息。解码器是一个生成模型,同样通过RNN单元,将状态向量中的信息一步步还原出来,直到输出特殊标记<EOS>时结束输出。在编码器-解码器模型结构的基础上,提出了seq2seq模型结构,该模型适长短关系不确定的场景,例如机器翻译或问答系统。
本实验内容是基于seq2seq模型的英法翻译。在现有seq2seq模型基础上,在解码器端加入注意力机制。在解码器端的注意力机制能够根据模型目标有效的聚焦编码器的输出结果,当其作为解码器的输入时提升效果,改善以往编码器输出是单一定长张量,无法存储过多信息的情况。
二、 开发环境
本实验在Windows 10操作系统上进行,使用python版本为3.6.13,pytorch版本为1.3.1,模型在CPU 11th Gen Intel(R) Core(TM) i7-11370H @ 3.30GHz上训练和评估。导入的工具包有:
# 从io工具包导入open方法
from io import open
# 用于字符规范化
import unicodedata
# 用于正则表达式
import re
# 用于随机生成数据
import random
# 用于构建网络结构和函数的torch工具包
import torch import torch.nn as nn import torch.nn.functional as F
# torch中预定义的优化方法工具包
from torch import optim
三、 数据处理
1. 翻译数据集
本实验使用的是来自pytorch官网的翻译数据集,数据集eng-fra.txt格式如
2. 数据特点
数据中左边是英文,中间使用\t做为分隔,右边是对应的法文。
3. 数据处理
将给定的持久化文件中数据进行处理,以满足模型训练要求。将指定语言中的词汇映射成数值。生成词汇对应自然数值的字典和自然数值对应词汇的字典,其中0,1对应的SOS(开始标志)和EOS(结束标志)。
标签:编码器,译法,模型,torch,seq2seq,机器翻译,解码器,import From: https://blog.51cto.com/u_15473389/8988322