Datawhale AI 夏令营 Task02 笔记
所谓幕落 2024-08-12 13:01:02 阅读 96
一、环境配置
1. 安装所需库
pip install torchtext
pip install jieba
pip install sacrebleu
pip install spacy
2. 下载并安装 en_core_web_trf 语言包
pip install ../dataset/en_core_web_trf-3.7.3-py3-none-any.whl
二、数据预处理
数据预处理是确保模型能够有效学习源语言到目标语言映射的关键步骤。预处理阶段通常包括多个步骤,旨在清理、标准化和转换数据,使之适合模型训练。以下是机器翻译任务预处理中常见的几个处理步骤:
1. 数据清洗与规范化
去除无关信息:删除HTML标签、特殊字符、非文本内容,确保文本的纯净性。例如,去除训练集中出现的脏数据如“Joey.(掌声)(掌声)乔伊”、“Thank you.(马嘶声)谢谢你们”等。
统一格式:将所有文本转换为小写,确保一致性。标准化日期、数字等格式。
2. 分句与分段
分句和分段:将长文本分割成句子或段落,便于处理和训练。这一步骤可以使用正则表达式或专门的分句工具实现。
3. 分词
中文分词:使用 jieba 库对中文文本进行分词,将文本切分成有意义的词语。
英文分词:使用 spaCy 库对英文文本进行分词。
4. 构建词汇表和词向量
词汇表构建:从训练数据中收集所有出现过的词汇,构建词汇表,并为每个词分配一个唯一的索引。
词向量:使用预训练的词向量或自己训练词向量,将词汇表中的词映射到高维空间中的向量,以捕捉语义信息。可以使用 GloVe、Word2Vec 或 FastText 等预训练词向量。
5. 序列截断与填充
序列截断:限制输入序列的长度,过长的序列可能增加计算成本,同时也可能包含冗余信息。
序列填充:将所有序列填充至相同的长度,便于批量处理。通常使用 <PAD>
标记填充。
6. 添加特殊标记
序列开始和结束标记:在序列两端添加 <SOS>
(Sequence Start)和 <EOS>
(Sequence End)标记,帮助模型识别序列的起始和结束。
未知词标记:为不在词汇表中的词添加 <UNK>
(Unknown)标记,使模型能够处理未见过的词汇。
7. 数据增强
随机替换或删除词:在训练数据中随机替换或删除一些词,增强模型的鲁棒性。
同义词替换:使用同义词替换原文中的词,增加训练数据的多样性。
8. 数据分割
划分数据集:将数据划分为训练集、验证集和测试集,分别用于模型训练、参数调整和最终性能评估。这一步骤有助于评估模型的泛化能力和优化性能。
三、模型训练
1. 编码器-解码器模型
编码器:将源语言句子编码成一个实数向量,使用词嵌入层和循环神经网络(RNN)。
解码器:接收编码器的向量,逐词生成目标语言句子。
下面是一个应用编码器解码器结构来解决汉译英的例子:
2. 基于 GRU 的序列到序列模型
使用门控循环单元(GRU)作为中间层,并加入注意力机制。
3. 基于注意力机制的循环神经网络
传统的 Seq2Seq 模型在解码阶段仅依赖于编码器产生的最后一个隐藏状态,这在处理长序列时效果不佳。注意力机制允许解码器在生成每个输出词时,关注编码器产生的所有中间状态,从而更好地利用源序列的信息。给定源语言序列经过编码器输出的向量序列 h1, h2, h3, ..., hm,注意力机制旨在依据解码端翻译的需要,自适应地从这个向量序列中查找对应的信息。
我们的 baseline 代码中实现了一个经典的序列到序列(Seq2Seq)模型,中间层使用的 GRU 网络,并且网络中加入了注意力机制(Attention Mechanism)。
4. 编码器-解码器结构
在源语言句子的表示形式确定之后,需要设计相应的编码器和解码器结构。在当今主流的神经机器翻译系统中,编码器由词嵌入层和中间网络层组成:
词嵌入层(embedding):将每个单词映射到多维实数表示空间,这个过程也被称为词嵌入。
中间层:对词嵌入向量进行更深层的抽象,得到输入单词序列的中间表示。实现方式有很多,比如:循环神经网络、卷积神经网络、自注意力机制等。
解码器的结构基本上和编码器是一致的,在基于循环神经网络的翻译模型中,解码器只比编码器多了输出层,用于输出每个目标语言位置的单词生成概率。
5. 训练流程
初始化模型、损失函数、优化器。
迭代训练过程:前向传播计算损失,后向传播更新权重。
监控训练和验证损失,防止过拟合。
四、翻译质量评价
1. 人工评价
准确度:人工评价的重点在于翻译结果的准确度。评估人员根据翻译是否准确传达原文意思进行评分。
流畅度:检查翻译是否自然流畅,是否符合目标语言的语法和表达习惯。
2. 自动评价
BLEU(Bilingual Evaluation Understudy):
BLEU 是一种基于 n-gram 的方法,通过比较机器翻译结果与参考译文的 n-gram 的匹配程度来评估翻译质量。BLEU 分数越高,表示翻译结果与参考译文越接近。
ROUGE(Recall-Oriented Understudy for Gisting Evaluation):
ROUGE 是另一种常用的评估指标,特别适用于摘要生成任务。ROUGE 主要计算翻译结果和参考译文之间的重叠情况,包括 ROUGE-N、ROUGE-L 等多种变体。
METEOR(Metric for Evaluation of Translation with Explicit ORdering):
METEOR 通过词汇匹配、词形变换和语义匹配等多维度对翻译结果进行评估,进一步提高了评估的准确性。
TER(Translation Edit Rate):
TER 通过计算将机器翻译结果转换为参考译文所需的编辑操作次数来评估翻译质量。编辑操作包括插入、删除、替换和移动。
无参考答案的自动评价:
在很多应用场景中,没有可比对的参考答案时,可以使用无参考答案的自动评价方法,如基于语言模型的置信度评估。
3. 综合评估
多指标综合评估:为了全面评估机器翻译的质量,通常会结合多个评估指标,包括 BLEU、ROUGE、METEOR 和 TER 等。这些指标从不同角度对翻译结果进行评估,确保评估的全面性和准确性。
案例分析:针对模型的实际翻译结果,进行详细的案例分析,找出翻译中的典型问题和改进点。
总结
通过本次学习,我掌握了基于 Seq2Seq 的 Baseline 模型结构、中英文分词、循环神经网络(RNN)、门控循环单元(GRU)及注意力机制等知识点,了解了机器翻译任务的整个流程,包括数据预处理、模型训练和翻译质量评价。
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。