赞
踩
机器翻译:即用计算机实现从源语言到目标语言转换的过程,是自然语言处理的重要研究领域之一。
源语言:被翻译的语言
目标语言:翻译后的结果语言
数据集:WMT-14数据集
- 该数据集有193319条训练数据,6003条测试数据,词典长度为30000。
-
- Paddle接口paddle.dataset.wmt14中默认提供了一个经过预处理的较小规模的数据集。
数据预处理:
- 将每个源语言到目标语言的平行语料库文件合并为一个文件,合并每个xxx.src和xxx.trg文件为xxx;xxx中的第i行内容为xxx.src的第i行和xxx.trg中的第i行连接,用“t”分隔。
-
- 创建训练数据的源字典和目标字典。每个字典都有DICSIZE个单词,包括语料中词频最高的DICSIZE-3个单词和三个特殊符号:
< s >表示序列的开始
< e >表示序列的结束
< unk >表示未登录词
定义网络
定义损失函数
定义优化算法
In[ ]
- #导入需要的包
-
- import numpy as np
-
- import paddle as paddle
-
- import paddle.fluid as fluid
-
- from PIL import Image
-
- import os
-
- import paddle.fluid.layers as pd
-
- import sys
In[ ]
- dict_size = 30000#字典维度
-
- source_dict_dim = target_dict_dim = dict_size# source_dict_dim:源语言字典维度 target_dict_dim:目标语言字典维度
-
-
- hidden_dim = 32 #解码中隐层大小
-
- decoder_size = hidden_dim#解码中隐层大小
-
- word_dim = 32 #词向量维度
-
- batch_size = 200 #数据提供器每次读入的数据批次大小
-
- max_length = 8#生成句子的最大长度
-
- topk_size = 50
-
- beam_size = 2 #柱宽度
-
- is_sparse = True#系数矩阵
-
- model_save_dir = "machine_translation.inference.model"
In[ ]
- # *********获取训练数据读取器和测试数据读取器train_reader 和test_reader***************
-
- train_reader = paddle.batch(
-
- paddle.reader.shuffle(
-
- paddle.dataset.wmt14.train(dict_size),buf_size=1000),#dict_size:字典维度 buf_size:乱序时的缓存大小
-
- batch_size=batch_size) #batch_size:批次数据大小
-
- #加载预测的数据
-
- test_reader = paddle.batch(
-
- paddle.reader.shuffle(
-
- paddle.dataset.wmt14.test(dict_size), buf_size=1000),
-
- batch_size=batch_size)
解决的问题:由任意一个长度的原序列到另一个长度的目标序列的变化问题
编码:将整个原序列表征成一个向量
解码:通过最大化预测序列概率,从中解码出整个目标序列
柱搜索算法
启发式搜索算法:在图或树中搜索每一步的最优扩展节点
贪心算法:每一步最优,全局不一定最优
场景:解空间非常大,内存装不下所有展开解的系统
In[ ]
#************************实现编码器*******************
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。