【新手入门】课程10-深度学习进阶NLP-机器翻译

这篇博客介绍了机器翻译的基本概念,使用WMT-14数据集,并详细阐述了从数据准备到模型预测的实践流程,重点讲解了编码器解码器框架和柱搜索算法的应用。
摘要由CSDN通过智能技术生成

任务介绍

机器翻译:即用计算机实现从源语言到目标语言转换的过程,是自然语言处理的重要研究领域之一。

源语言:被翻译的语言

目标语言:翻译后的结果语言

数据集介绍

数据集: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 >表示未登录词
    

实践流程

1、准备数据

2、配置网络

  • 定义网络
    
  •  
  • 定义损失函数
    
  •  
  • 定义优化算法
    

3、训练网络

4、模型评估

5、模型预测

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[ ]

#************************实现编码器*******************
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值