中英文翻译

实验任务

(1)基于序列到序列(Seq2Seq)学习框架,设计并训练一个中英文机器翻译模型,完成中译英和英译中翻译任务。具体模型选择可以参考如LSTM,GRU,Transformer等,但不做限制;

(2)实验数据集为WMT18新闻评论数据集News Commentary v13,整个语料库分训练集(约252,700条)、验证集和测试集(分别约2,000条)三部分,每部分包含中英文平行语料两个文件,全部语料已预分词处理;

(3)根据指定的评价指标和测试集数据评价模型性能。

实验知识

由于网络上有很多关于seq2seq的详细知识这里只是简单介绍,不是本实验的重点部分

seq2seq

seq2seq 是一个 Encoder–Decoder 结构的网络,它的输入是一个序列,输出也是一个序列, Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。

这个结构最重要的地方在于输入序列和输出序列的长度是可变的,可以用于翻译,聊天机器人,句法分析,文本摘要等。

 

Encoder-Decoder结构

 

(其中的 RNNCell 可以用 RNN ,GRU,LSTM 等结构)

Encoder

Encoder 部分是一个RNNCell(RNN ,GRU,LSTM 等)结构

每个 timestep, 我们向 Encoder 中输入一个字/词,直到我们输入这个句子的最后一个字/词。然后输出整个句子的语义向量 c

  • 每个时刻输入一个词,隐藏层状态根据公式改变。其中激活函数f可以是sigmod,tanh,ReLU,sotfplus,LSTM等。

  • 读完序列的每一个词之后,会得到一个固定长度向量

Decoder

Decoder 根据 Encoder 得到的句向量c,一分析得出信息

本次实验我们使用的是双层的LSTM模型,所以下面简介一下LSTM

LSTM

长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。

相比RNN只有一个传递状态 ,LSTM有两个传输状态,一个 (cell state),和一个 (hidden state)。(Tips:RNN中的 对于LSTM中的 )

实验设计

Step1:构造字典

统计单词出现频率

 

根据单词出现频率构造字典

 

字典构造结果

 

Step2:数据处理

实现词汇映射到数字的过程

 

数据处理结果

 

Step3:模型搭建

Step3.1:init初始化

 

Step3.2:encoder

 

Step3.3:decoder

解码器,输出outputs为每一步顶层LSTM的输出

 

Step3.4:优化部分

梯度下降优化

tf.train.GradientDescentOptimizer

Step4:训练数据

获取单词ID

 

根据中文词汇表获取中文ID,计算bleu值

 

计算perplexity值

 

 

训练结果

训练平台:google drive

训练数据:20000train集合

总共训练了10000步

 

训练次数较少时

 

英译中bleu大小仅能保持在0.2-0.3

 

perplexity值在700-800

训练次数增大

 

英译中bleu大小为0.4-0.5

 

perplexity值在100-200

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
去年,谷歌发布了 Google Neural Machine Translation (GNMT),即谷歌神经机器翻译,一个 sequence-to-sequence (“seq2seq”) 的模型。现在,它已经用于谷歌翻译的产品系统。   虽然消费者感受到的提升并不十分明显,谷歌宣称,GNMT 对翻译质量带来了巨大飞跃。   但谷歌想做的显然不止于此。其在官方博客表示:“由于外部研究人员无法获取训练这些模型的框架,GNMT 的影响力受到了束缚。”   如何把该技术的影响力最大化?答案只有一个——开源。   因而,谷歌于昨晚发布了 tf-seq2seq —— 基于 TensorFlow 的 seq2seq 框架。谷歌表示,它使开发者试验 seq2seq 模型变得更方便,更容易达到一流的效果。另外,tf-seq2seq 的代码库很干净并且模块化,保留了全部的测试覆盖,并把所有功能写入文件。   该框架支持标准 seq2seq 模型的多种配置,比如编码器/解码器的深度、注意力机制(attention mechanism)、RNN 单元类型以及 beam size。这样的多功能性,能帮助研究人员找到最优的超参数,也使它超过了其他框架。详情请参考谷歌论文《Massive Exploration of Neural Machine Translation Architectures》。   上图所示,是一个从文到英文的 seq2seq 翻译模型。每一个时间步骤,编码器接收一个汉字以及它的上一个状态(黑色箭头),然后生成输出矢量(蓝色箭头)。下一步,解码器一个词一个词地生成英语翻译。在每一个时间步骤,解码器接收上一个字词、上一个状态、所有编码器的加权输出和,以生成下一个英语词汇。雷锋网(公众号:雷锋网)提醒,在谷歌的执行,他们使用 wordpieces 来处理生僻字词。   据雷锋网了解,除了机器翻译,tf-seq2seq 还能被应用到其他 sequence-to-sequence 任务上;即任何给定输入顺序、需要学习输出顺序的任务。这包括 machine summarization、图像抓取、语音识别、对话建模。谷歌自承,在设计该框架时可以说是十分地仔细,才能维持这个层次的广适性,并提供人性化的教程、预处理数据以及其他的机器翻译功能。   谷歌在博客表示: “我们希望,你会用 tf-seq2seq 来加速(或起步)你的深度学习研究。我们欢迎你对 GitHub 资源库的贡献。有一系列公开的问题需要你的帮助!”   GitHub 地址:https://github.com/google/seq2seq   GitHub 资源库:https://google.github.io/seq2seq/nmt/ 标签:tensorflow  seq2seq  谷歌  机器学习
Transformer是一种用于序列到序列(sequence-to-sequence)任务的模型架构,其包括了编码器(Encoder)和解码器(Decoder)。它在机器翻译任务取得了很好的效果。 下面是一个基于Transformer的英文翻译模型的简单介绍: 1. 数据预处理:首先,需要将文数据转换为简体字。可以使用langconv库的Converter类来实现这一转换。具体的代码如下所示: ```python from langconv import Converter def cht_to_chs(sent): sent = Converter("zh-hans").convert(sent) sent.encode("utf-8") return sent ``` 2. 模型结构:Transformer的模型结构包括了嵌入层(Embedding)、位置编码(Position Encoding)、码器(Encoder)和解码器(Decoder)。 - 嵌入层:将输入的词汇转换为向量表示,可以使用预训练的词向量模型,如Word2Vec或GloVe。 - 位置编码:为了保留输入序列的位置信息,需要对输入序列的每个位置进行编码。可以使用固定编码或动态训练编码。 - 编码器:将输入序列转换为一系列的隐藏状态表示,其包括了自注意力(Self-Attention)和前馈神经网络(Feed Forward)。 -Head Attention)。 3. 模型训练:在训练过程,可以使用交叉熵损失函数和优化算法(如Adam)来优化模型参数。此外,还可以使用标签平滑(Label Smoothing)技术来改善模型的泛化能力。 以上是基于Transformer的英文翻译模型的简要介绍。具体的实现细节和代码可以根据具体的任务需求进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值