当前位置:   article > 正文

Datawhale AI夏令营 NLP task2

Datawhale AI夏令营 NLP task2

基于 Seq2Seq 的 Baseline 详解

在 task1 中我们已经提到了,当前机器翻译任务的主流解决方案是基于神经网络进行建模,依据赛题背景中意思,也是希望我们能用神经网络解决此英文翻译中文的任务。

通常我们基于神经网络解决机器翻译任务的流程如下:

  1. 配置环境

运行环境我们还是基于魔搭平台进行模型训练,这里不再重复说明。另外,有几个包需要额外安装:

  • torchtext :是一个用于自然语言处理(NLP)任务的库,它提供了丰富的功能,包括数据预处理、词汇构建、序列化和批处理等,特别适合于文本分类、情感分析、机器翻译等任务

  • jieba是一个中文分词库,用于将中文文本切分成有意义的词语

  • sacrebleu:用于评估机器翻译质量的工具,主要通过计算BLEU(Bilingual Evaluation Understudy)得分来衡量生成文本与参考译文之间的相似度

  • spacy:是一个强大的自然语言处理库,支持70+语言的分词与训练、

这里,我们需要安装 spacy 用于英文的 tokenizer(分词,就是将句子、段落、文章这种长文本,分解为以字词为单位的数据结构,方便后续的处理分析工作),不同环境的安装请参考:https://spacy.io/usage,如果使用魔搭平台,可按照下图中的配置进行安装:

  1. 数据预处理

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

  • 清洗和规范化数据

    • 去除无关信息:删除HTML标签、特殊字符、非文本内容等,确保文本的纯净性(本赛题的训练集中出现了非常多的脏数据,如“Joey. (掌声) (掌声) 乔伊”、“Thank you. (马嘶声) 谢谢你们”等这种声音词)

    • 统一格式:转换所有文本为小写,确保一致性;标准化日期、数字等格式。

    • 分句和分段:将长文本分割成句子或段落,便于处理和训练。

  • 分词

    • 分词:将句子分解成单词或词素(构成单词的基本组成部分,一个词素可以是一个完整的单词,也可以是单词的一部分,但每一个词素都至少携带一部分语义或语法信息),这是NLP中最基本的步骤之一。我们这里使用了使用jieba 对中文进行分词,使用spaCy对英文进行分词。

  • 构建词汇表和词向量

    • 词汇表构建:从训练数据中收集所有出现过的词汇,构建词汇表,并为每个词分配一个唯一的索引

    • 词向量:使用预训练的词向量或自己训练词向量,将词汇表中的词映射到高维空间中的向量,以捕捉语义信息(当前大模型领域训练的 embedding 模型就是用来完成此任务的)。

  • 序列截断和填充

    • 序列截断:限制输入序列的长度,过长的序列可能增加计算成本,同时也可能包含冗余信息。

    • 序列填充:将所有序列填充至相同的长度,便于批量处理。通常使用<PAD>标记填充。

  • 添加特殊标记

    • 序列开始和结束标记:在序列两端添加<SOS>(Sequence Start)和<EOS>(Sequence End)标记,帮助模型识别序列的起始和结束

    • 未知词标记:为不在词汇表中的词添加<UNK>(Unknown)标记,使模型能够处理未见过的词汇

  • 数据增强

    • 随机替换或删除词:在训练数据中随机替换或删除一些词,增强模型的鲁棒性。

    • 同义词替换:使用同义词替换原文中的词,增加训练数据的多样性。

  • 数据分割

    • 划分数据集:将数据划分为训练集、验证集和测试集,分别用于模型训练、参数调整和最终性能评估(该赛题中已划分好,不需要自己进行划分)

  1. 模型训练

说到神经机器翻译就不得不提编码器-解码器模型,或编码器-解码器框架(EncoderDecoder Paradigm)。本质上,编码器­解码器模型是描述输入­输出之间关系的一种方式。编码器­解码器这个概念在日常生活中并不少见。

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

这种“先编码,再解码”的思想被应用到密码学、信息论等多个领域。不难看出,机器翻译问题也完美的贴合编码器­解码器结构的特点。可以将源语言编码为类似信息传输中的数字信号,然后利用解码器对其进行转换,生成目标语言。下面就来看一下神经机器翻译是如何在编码器­解码器框架下进行工作的。

心得体会

在完成该任务时遇到的困难颇多,总是在一些意想不到的位置上报错,例如在安装en_core_web_trf-3.7.3-py3-none-any.whl

使用以下命令会报错

pip install ../dataset/en_core_web_trf-3.7.3-py3-none-any.whl

改成pip install ./dataset/en_core_web_trf-3.7.3-py3-none-any.whl就能解决问题

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/1013407
推荐阅读
相关标签
  

闽ICP备14008679号