《动手学深度学习》-学习笔记task4


《动手学深度学习》的学习内容链接在github上:
Dive-into-DL-PyTorch. 本次学习过程的coding 是用PyTorch实现。

0. 学习任务

机器翻译及相关技术;注意力机制与Seq2Seq模型;Transformer

1. 机器翻译

机器翻译(machine translation) : 将一段文本从一种语言翻译到另一种语言,输入和输出都是一段单词序列。
主要特征: 输入序列和输出序列长度可能不同

1.1 机器翻译任务的步骤

数据预处理

读取数据,并将数据集清洗、转化为神经网络输入的minbatch

  • 读取数据 ,并进行数据清洗
def preprocess_raw(text):
    text = text.replace('\u202f', ' ').replace('\xa0', ' ')   # 数据清洗
    out = ''
    for i, char in enumerate(text.lower()):
        if char in (',', '!', '.') and i > 0 and text[i-1] != ' ':
            out += ' '
        out += char
    return out

字符在计算机里是以编码的形式存在,我们通常所用的空格是 \x20 ,是在标准ASCII可见字符 0x20~0x7e 范围内。
而 \xa0 属于 latin1 (ISO/IEC_8859-1)中的扩展字符集字符,代表不间断空白符nbsp(non-breaking space),超出gbk编码范围,是需要去除的特殊字符。再数据预处理的过程中,我们首先需要对数据进行清洗。

  • 分词: 将字符串转成单词组成的列表
  • 建立字典
    1. 统计词频并去重
    2. 处理特殊tokens, 比如:padding, begin of sentence, end of sentence, unknown
    3. 构建一个list列表,建立index to token,用列表的下标表示index
    4. 将lists转为dict,从而 实现token to index,实现 每个词映射到一个唯一的索引编号。
  • 制作数据生成器

1.2 Seq2Seq 模型

Seq2Seq模型是输出的长度不确定时采用的模型,常应用于机器翻译,其输入是一段序列文本,输出也是序列文本,值得注意的是:输入序列和输出序列长度可能不同。 Seq2Seq模型 通过Encoder-Decoder框架 实现。

Encoder-Decoder

文本处理领域的Encoder-Decoder框架可以这么直观地去理解:可以把它看作适合处理由一个句子(或篇章)生成另外一个句子(或篇章)的通用处理模型。对于句子对<Source,Target>,我们的目标是给定输入句子Source,期待通过Encoder-Decoder框架来生成目标句子Target。Source和Target可以是同一种语言,也可以是两种不同的语言。而Source和Target分别由各自的单词序列构成:
S o u r c e = [ x 1 , x 2 , . . . , x m ] T a r g e t = [ y 1 , y 2 , . . . , y n ] Source=[x_1,x_2,...,x_m] \\ Target=[y_1,y_2,...,y_n] Source=[x1,x2,...,xm]Target=[y1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值