记录自己参加Datawhale AI 夏令营的学习心得,欢迎讨论!
机器翻译任务
1.配置环境
运行环境是基于魔塔平台进行模型训练。
详情可参考:从零入门NLP竞赛 - 飞书云文档 (feishu.cn)https://datawhaler.feishu.cn/wiki/TObSwHZdFi2y0XktauWcolpcnyf
2.数据预处理
在预处理阶段,我们要保证数据的简洁、有效,这样有利于源语言到目标语言的映射。预处理阶段有多个步骤来处理数据:
清洗和规范化数据
去除无关数据:删除一些非文本数据、无关数据等。
统一格式:标准化数字、日期、时间等,将英文全部转换为小写。
分局和分段:将长文本分割成短文本。
分词
分词:将句子分成不同的单词或词素(什么是词素?词素是构成单词的基本组成,一个词素可以是一个完整的单词,也可以是单词的一部分,但每一个词素都至少携带一部分语义或语法信息)。可以使用spacy对英文分词,使用jieba对中文分词(记得在配置环境阶段安装对应的包)。
构建词汇表和词向量
词汇表:从训练集数据中抽取所有出现过的词汇,构成词汇表,并为每一个词汇构造一个唯一的索引,可以通过这个唯一的索引找到对应的词汇,相当于字典的目录。
如何为每一个词汇构造唯一的索引?
排序法:为每一个词汇按照某种顺序(字典序或词频)排序,按照递增顺序添加索引。
哈希函数:使用哈希函数将词汇映射到索引,注意哈希冲突。
哈夫曼编码:按照词频,为每个词汇构造哈夫曼编码。
词向量:将词汇表中的词映射到高维空间中的向量,以捕捉语义信息(当前大模型领域训练的 embedding 模型就是用来完成此任务的)。例如,“苹果”->(1,1,2),第一个维度可能代表"水果"的概念,第二个维度可能代表"颜色",第三个维度可能代表"大小"。
序列截断和填充
序列截断:限制输入序列的长度,过长的序列可能增加计算成本,同时也可能包含冗余信息。
序列填充:将所有序列填充到一个指定长度,便于批量处理。通常使用
<PAD>
标记填充。
添加特殊标记
序列开始和结束标记:在序列两端添加
<SOS>
(Sequence Start)和
<EOS>
(Sequence End)标记,帮助模型识别序列的起始和结束。
未知词标记:为不在词汇表中的词添加
<UNK>
(Unknown)标记,使模型能够处理未见过的词汇。
数据增强
** **随机替换或删除词:在训练数据中随机替换或删除一些词,增强模型的鲁棒性。
同义词替换:使用同义词替换原文中的词,增加训练数据的多样性。
数据分割
划分数据集:将数据划分为训练集、验证集和测试集,分别用于模型训练、参数调整和最终性能评估。
3.模型训练
图一
将本段内容写成了思维导图,如图一。
4.翻译质量评价
人们在使用机器翻译系统时需要评估系统输出结果的质量。这个过程也被称作机器翻译译文质量评价,简称为译文质量评价(Quality Evaluation of Translation)。翻译分为三个层次“信”、“达”、“雅”。“信”是忠诚度,“雅”是流畅度、“雅”则是翻译的优雅,目前机器还做不到,是未来的目标。译文质量评价有很多实现方式:
人工评价:当需要对系统进行准确的评估时,往往采用人工评价。比如,对于机器翻译的一些互联网应用,在系统上线前都会采用人工评价对机器翻译系统性能进行测试。当然,这种方法的时间和人力成本是最高的。
有参考答案的自动评价:由于机器翻译系统研发过程中需要频繁地对系统性能进行评价,这时可以让人标注一些正确的译文,之后把这些译文作为参考答案与机器翻译系统输出的结果进行比对。这种自动评价的结果获取成本低,可以多次重复,而且可以用于对系统结果的快速反馈,指导系统优化的方向。
无参考答案的自动评价:在很多应用场景中,在系统输出译文时,使用者希望提前知道译文的质量,即使这时并没有可比对的参考答案。这样,系统使用者可以根据这个对质量的“估计”结果有选择地使用机器翻译译文。严格意义上说,这并不是一个传统的译文质量评价方法,而是一种对译文置信度和可能性的估计。
参考:
Task2:从baseline代码详解入门深度学习 - 飞书云文档 (feishu.cn)
9.1. 门控循环单元(GRU) — 动手学深度学习 2.0.0 documentation (d2l.ai)
版权归原作者 lbl_Waterrop 所有, 如有侵权,请联系我们删除。