【datawhale AI夏令营】 NLP赛事入门 task2笔记

NLP——baseline精读

数据预处理

机器翻译任务的预处理是确保模型能够有效学习源语言到目标语言映射的关键步骤。预处理阶段通常包括多个步骤,旨在清理、标准化和转换数据,使之适合模型训练。以下是机器翻译任务预处理中常见的几个处理步骤:

  • 清洗和规范化数据
    • 去除无关信息:删除HTML标签、特殊字符、非文本内容等,确保文本的纯净性(本赛题的训练集中出现了非常多的脏数据,如“Joey. (掌声) (掌声) 乔伊”、“Thank you. (马嘶声) 谢谢你们”等这种声音词)
    • 统一格式:转换所有文本为小写,确保一致性;标准化日期、数字等格式。
    • 分句和分段:将长文本分割成句子或段落,便于处理和训练。
  • 分词
    • 分词:将句子分解成单词或词素(构成单词的基本组成部分,一个词素可以是一个完整的单词,也可以是单词的一部分,但每一个词素都至少携带一部分语义或语法信息),这是NLP中最基本的步骤之一。可以使用jieba 对中文进行分词,使用spaCy对英文进行分词。
  • 构建词汇表和词向量
    • 词汇表构建:从训练数据中收集所有出现过的词汇,构建词汇表,并为每个词分配一个唯一的索引
    • 词向量:使用预训练的词向量或自己训练词向量,将词汇表中的词映射到高维空间中的向量,以捕捉语义信息(当前大模型领域训练的 embedding 模型就是用来完成此任务的)。
  • 序列截断和填充: 保证序列的一致性
    • 序列截断:限制输入序列的长度,过长的序列可能增加计算成本,同时也可能包含冗余信息。
    • 序列填充:将所有序列填充至相同的长度,便于批量处理。通常使用<PAD>标记填充。
  • 添加特殊标记
    • 序列开始和结束标记:在序列两端添加<SOS>(Sequence Start)和<EOS>(Sequence End)标记,帮助模型识别序列的起始和结束
    • 未知词标记:为不在词汇表中的词添加<UNK>(Unknown)标记,使模型能够处理未见过的词汇
  • 数据增强
    • 随机替换或删除词:在训练数据中随机替换或删除一些词,增强模型的鲁棒性。
    • 同义词替换:使用同义词替换原文中的词,增加训练数据的多样性。
  • 数据分割
    • 划分数据集:将数据划分为训练集、验证集和测试集,分别用于模型训练、参数调整和最终性能评估。

模型训练

说到神经机器翻译就不得不提编码器-解码器模型,或编码器-解码器框架(EncoderDecoder Paradigm)。本质上,编码器­解码器模型是描述输入­输出之间关系的一种方式。

例如,在电视系统上为了便于视频的传播,会使用各种编码器将视频编码成数字信号,在客户端,相应的解码器组件会把收到的数字信号解码为视频。另外一个更贴近生活的例子是电话,它通过对声波和电信号进行相互转换,达到传递声音的目的。

这种“先编码,再解码”的思想被应用到密码学、信息论等多个领域。机器翻译问题也完美的贴合编码器­解码器结构的特点。可以将源语言编码为类似信息传输中的数字信号,然后利用解码器对其进行转换,生成目标语言。

在这里插入图片描述

在源语言句子的表示形式确定之后,需要设计相应的编码器和解码器结构。在当今主流的神经机器翻译系统中,编码器由词嵌入层和中间网络层组成:

  • 当输入一串单词序列时,词嵌入层(embedding)会将每个单词映射到多维实数表示空间,这个过程也被称为词嵌入
  • 之后中间层会对词嵌入向量进行更深层的抽象,得到输入单词序列的中间表示。中间层的实现方式有很多,比如:循环神经网络、卷积神经网络、自注意力机制等都是模型常用的结构。

解码器的结构基本上和编码器是一致的,在基于循环神经网络的翻译模型中,解码器只比编码器多了输出层,用于输出每个目标语言位置的单词生成概率,而在基于自注意力机制的翻译模型中,除了输出层,解码器还比编码器多一个编码­解码注意力子层,用于帮助模型更好地利用源语言信息。

基于循环神经网络的机器翻译

在这里插入图片描述

隐藏层的状态根据输入单元逐个更新,即隐藏层A在t时刻的状态h(t)不仅受输入x(t)的影响,还受t之前的x的影响,m个输入全部进入编码器后,h(m)可以看作包含了源语言序列的全部信息。

h(m)在解码器作为初始隐状态s(0),由于 RNN 的循环过程在每个时间步都要求一个输入单词,为了启动解码过程,一般会使用一个保留的特殊符号 “[Start]” 作为翻译开始的标记送入到 RNN 解码器当中,产生s(1)并解码出目标语言序列的第一个单词z(1),z(1)继续返回输入到解码器中影响解码器的状态并得到新的输出结果z(2)。由于目标语言序列的长度无法被提前预知,因此使用另一个保留符号 “[Stop]” 作为预测结束的标志。当某一个时刻 t 预测出的目标语言单词为 zt =“[Stop]” 时,解码过程动态地停止。

在上述过程当中,主要涉及到两步运算,第一步是 RNN 接收前一时刻隐状态s(t-1)并依据当前时刻输入 z(t-1)(目标语言单词 z(t-1)对应的语义嵌入)对隐状态进行维护并生成s(t)的运算过程,第二步是依据当前时刻隐状态生成目标语言单词的过程:
在这里插入图片描述

注意力机制的加入

在这里插入图片描述

优势在于加入s(0)模块,使得解码器能够自适应地查找编码器中h(1)到h(m)的全部信息。优化了翻译性能在文本序列增长的情景下减退的问题。

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值