Datawhale 2024 年 AI 夏令营第二期学习笔记(2)

目录

1.基于神经网络解决机器翻译任务的流程

​编辑

2.环境配置

3.安装 spacy

4.总结


1.基于神经网络解决机器翻译任务的流程

2.环境配置

配置一个适合机器学习和自然语言处理任务的环境是一个复杂但至关重要的过程。首先,确保您的运行环境已经搭建好。如果是在魔搭平台(一个假设的机器学习平台),您可能需要按照平台的指导文档进行基本的设置。通常,这包括:

- **操作系统**:选择一个稳定的操作系统,如Linux或Windows。
- **硬件资源**:确保有足够的CPU、GPU(对于深度学习任务)、内存和存储空间。
- **依赖管理**:使用如`conda`或`pip`的工具来管理Python包和环境。

包的安装

torchtext

- **用途**:`torchtext`是一个为PyTorch用户提供的自然语言处理库。它简化了文本数据的准备过程,使得加载、处理和理解文本数据更加容易。
- **功能**:
  - **数据预处理**:提供数据清洗、标准化和编码等功能。
  - **词汇构建**:帮助构建和管理词汇表。
  - **序列化**:将文本序列化成模型可以理解的数值形式。
  - **批处理**:将数据分批加载,以适应内存限制并提高训练效率。
- **安装**:
  ```bash
  pip install torchtext
  ```

jieba

- **用途**:`jieba`是一个广泛使用的中文分词库,能够将连续的中文文本切分成有意义的词语,支持自定义词典。
- **功能**:
  - **精确模式**:返回最精确的分词结果。
  - **搜索引擎模式**:支持对长词的识别和分词。
  - **词性标注**:提供词性标注功能。
- **安装**:
  ```bash
  pip install jieba
  ```

sacrebleu

- **用途**:`sacrebleu`是一个用于评估机器翻译系统性能的工具,主要通过计算BLEU分数来衡量机器翻译输出与参考译文的一致性。
- **功能**:
  - **多参考译文支持**:可以同时使用多个参考译文来计算BLEU分数。
  - **多种数据格式**:支持多种输入和输出格式,如文本文件、JSON等。
  - **易于集成**:可以轻松集成到机器翻译的评估流程中。
- **安装**:
  ```bash
  pip install sacrebleu
  ```

spacy

- **用途**:`spacy`是一个高性能的自然语言处理库,支持多种语言的文本处理任务,如分词、词性标注、命名实体识别等。
- **功能**:
  - **多语言支持**:支持70多种语言的预训练模型。
  - **深度学习集成**:可以与深度学习模型(如PyTorch和TensorFlow)无缝集成。
  - **可扩展性**:允许用户添加新的组件和功能。
- **安装**:
  ```bash
  pip install spacy
  ```

root@dsw-573996-5ff479d79b-x8x86:/mnt/workspace/MT/code# !pip install torchtext  
bash: !pip: event not found
root@dsw-573996-5ff479d79b-x8x86:/mnt/workspace/MT/code# pip install torchtext  
Looking in indexes: https://mirrors.cloud.aliyuncs.com/pypi/simple
Requirement already satisfied: torchtext in /usr/local/lib/python3.10/site-packages (0.18.0)
Requirement already satisfied: tqdm in /usr/local/lib/python3.10/site-packages (from torchtext) (4.66.4)
Requirement already satisfied: requests in /usr/local/lib/python3.10/site-packages (from torchtext) (2.32.3)
Requirement already satisfied: torch>=2.3.0 in /usr/local/lib/python3.10/site-packages (from torchtext) (2.3.0+cu121)
Requirement already satisfied: numpy in /usr/local/lib/python3.10/site-packages (from torchtext) (1.26.3)
Requirement already satisfied: sympy in /usr/local/lib/python3.10/site-packages (from torch>=2.3.0->torchtext) (1.12.1)
Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/site-packages (from torch>=2.3.0->torchtext) (3.1.4)
Requirement already satisfied: filelock in /usr/local/lib/python3.10/site-packages (from torch>=2.3.0->torchtext) (3.14.0)
Requirement already satisfied: networkx in /usr/local/lib/python3.10/site-packages (from torch>=2.3.0->torchtext) (3.3)
Requirement already satisfied: typing-extensions>=4.8.0 in /usr/local/lib/python3.10/site-packages (from torch>=2.3.0->torchtext) (4.12.0)
Requirement already satisfied: fsspec in /usr/local/lib/python3.10/site-packages (from torch>=2.3.0->torchtext) (2024.2.0)
Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/site-packages (from requests->torchtext) (2.2.1)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/site-packages (from requests->torchtext) (3.7)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/site-packages (from requests->torchtext) (2024.2.2)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/site-packages (from requests->torchtext) (3.3.2)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/site-packages (from jinja2->torch>=2.3.0->torchtext) (2.1.5)
Requirement already satisfied: mpmath<1.4.0,>=1.1.0 in /usr/local/lib/python3.10/site-packages (from sympy->torch>=2.3.0->torchtext) (1.3.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

[notice] A new release of pip is available: 23.0.1 -> 24.1.2
[notice] To update, run: pip install --upgrade pip
root@dsw-573996-5ff479d79b-x8x86:/mnt/workspace/MT/code# pip install jieba
Looking in indexes: https://mirrors.cloud.aliyuncs.com/pypi/simple
Requirement already satisfied: jieba in /usr/local/lib/python3.10/site-packages (0.42.1)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

[notice] A new release of pip is available: 23.0.1 -> 24.1.2
[notice] To update, run: pip install --upgrade pip
root@dsw-573996-5ff479d79b-x8x86:/mnt/workspace/MT/code# pip install sacrebleu
Looking in indexes: https://mirrors.cloud.aliyuncs.com/pypi/simple
Requirement already satisfied: sacrebleu in /usr/local/lib/python3.10/site-packages (2.4.2)
Requirement already satisfied: colorama in /usr/local/lib/python3.10/site-packages (from sacrebleu) (0.4.6)
Requirement already satisfied: lxml in /usr/local/lib/python3.10/site-packages (from sacrebleu) (4.9.4)
Requirement already satisfied: regex in /usr/local/lib/python3.10/site-packages (from sacrebleu) (2024.5.15)
Requirement already satisfied: tabulate>=0.8.9 in /usr/local/lib/python3.10/site-packages (from sacrebleu) (0.9.0)
Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.10/site-packages (from sacrebleu) (1.26.3)
Requirement already satisfied: portalocker in /usr/local/lib/python3.10/site-packages (from sacrebleu) (2.8.2)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

[notice] A new release of pip is available: 23.0.1 -> 24.1.2
[notice] To update, run: pip install --upgrade pip

3.安装 spacy

      安装 spacy 用于英文的 tokenizer(分词,就是将句子、段落、文章这种长文本,分解为以字词为单位的数据结构,方便后续的处理分析工作)。

     离线安装

由于en_core_web_sm 对 spacy 的版本有较强的依赖性,你可以使用 pip show spacy 命令在终端查看你的版本,可以看到我的是 3.7.5 版本的 spacy。https://github.com/explosion/spacy-models/releases 安装对应版本的 en_core_web_trf 语言包

将下载到本地的压缩包上传到你的魔搭平台上的 dataset 目录下:

然后使用 !pip install ../dataset/en_core_web_trf安装英文语言包:

pip install -U pip setuptools wheel -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install -U 'spacy[cuda12x,transformers,lookups]' -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install ../dataset/en_core_web_trf-3.7.3-py3-none-any.whl

4.总结

《机器翻译的奥秘:从预处理到质量评价的全面探索》

一、引言

在当今全球化的时代,语言的交流变得愈发频繁和重要。机器翻译作为打破语言障碍的有力工具,正发挥着日益关键的作用。它不仅极大地便利了人们的信息获取和交流,也在众多领域如国际贸易、学术研究、文化传播等展现出巨大的价值。然而,要实现高质量的机器翻译并非易事,其背后涉及一系列复杂的技术和流程。本文将深入剖析机器翻译的核心环节,包括数据预处理、模型训练以及翻译质量评价,带您领略这一领域的精妙之处。

二、数据预处理

(一)清洗和规范化数据
1. 去除无关信息是确保数据纯净的重要步骤。在实际的文本数据中,常常会夹杂着 HTML 标签、特殊字符以及非文本内容,如在赛题训练集中出现的“Joey.        (掌声) (掌声) 乔伊”、“Thank you.        (马嘶声) 谢谢你们”等这类声音词。这些无关元素不仅干扰了模型对文本语义的理解,还可能导致模型学习到错误的模式。因此,精确地识别并去除它们对于后续的处理至关重要。
2. 统一格式是增强数据一致性和可读性的关键。将所有文本转换为小写,能够避免因大小写差异而造成的语义混淆。同时,标准化日期、数字等格式,使得模型能够更专注于文本的语义内容,而非格式上的差异。例如,“2024 年 7 月 17 日”和“17/07/2024”应统一为一种标准格式。
3. 分句和分段则是为了将长而复杂的文本分解为更易于处理和训练的单元。长文本往往包含丰富的信息,但也增加了模型理解的难度。通过合理的分句和分段,能够将复杂的信息分解为更具逻辑性和可理解性的部分,有助于模型更好地学习语言的结构和规律。

(二)分词
分词是自然语言处理中的基础操作。对于中文,使用 jieba 分词工具能够将句子准确地分解为单词或词素;对于英文,spaCy 则能发挥出色的分词效果。例如,“我今天很开心”经过分词后可能变为“我/今天/很/开心”,“I am very happy today”可能被分为“I / am / very / happy / today”。分词的质量直接影响后续模型对文本的理解和处理。

(三)构建词汇表和词向量
1. 构建词汇表是对训练数据中出现的词汇进行全面收集和整理,并为每个词汇赋予唯一的索引。这就如同为每个词汇建立了一个独特的“身份证号码”,方便模型在处理过程中快速识别和调用。
2. 词向量则是将词汇映射到高维空间的向量表示,旨在捕捉词汇之间的语义关系。预训练的词向量模型,如 Word2Vec、GloVe 等,为我们提供了丰富的语义信息。或者通过自行训练词向量,能够更贴合特定任务和数据集的特点,从而更好地服务于机器翻译任务。

(四)序列截断和填充
1. 序列截断是为了应对过长的输入序列。在实际应用中,过长的序列可能不仅增加计算成本,还可能包含过多的冗余信息,影响模型的学习效率和效果。例如,一篇长篇小说的段落可能远远超出了模型能够有效处理的长度,此时就需要进行截断,保留关键信息。
2. 序列填充则是为了使输入序列具有相同的长度,以便于批量处理。通常使用<PAD>标记来填充较短的序列,使其与其他序列长度一致。这样的统一处理方式能够提高模型训练的效率和稳定性。

(五)添加特殊标记
1. 在序列的两端添加<SOS>(Sequence Start)和<EOS>(Sequence End)标记,对于模型明确识别序列的起始和结束位置具有重要意义。这就像是为模型指明了道路的起点和终点,帮助其更好地理解和生成文本。
2. 对于不在词汇表中的词,添加<UNK>(Unknown)标记。这使得模型能够在遇到未知词汇时,依然能够进行合理的处理,而不至于因为未知词汇而导致翻译中断或出错。

(六)数据增强
1. 随机替换或删除词是一种有效的数据增强方式。通过在训练数据中随机地对词汇进行替换或删除,可以增加数据的多样性和模型的鲁棒性。例如,“我喜欢阅读书籍”可能被随机修改为“我喜爱浏览书籍”或“我喜欢书籍”。
2. 同义词替换则能够进一步丰富训练数据的表达方式。例如,“美丽”可以被替换为“漂亮”、“好看”等,从而让模型学习到更多关于词汇同义表达的知识。

(七)数据分割
将数据划分为训练集、验证集和测试集是模型训练和评估的重要环节。训练集用于模型的学习和参数调整,验证集用于监控模型在训练过程中的性能,以便及时调整训练策略,而测试集则用于最终评估模型的泛化能力和实际效果。在本赛题中,数据已经预先进行了合理的划分,为我们节省了这一繁琐的工作。

三、模型训练

(一)编码器-解码器框架
编码器-解码器模型是自然语言处理中处理输入-输出关系的一种通用且有效的架构。这种思想不仅在机器翻译中得到了广泛应用,在其他领域如语音识别、图像描述生成等也有着出色的表现。以电视系统为例,为了实现视频的高效传输,需要使用各种编码器将视频编码为数字信号,而在接收端,解码器将数字信号还原为可观看的视频。电话系统则通过对声波和电信号的相互转换,实现了远距离的声音传递。这些例子都充分展示了“先编码,再解码”的思想在信息处理和传输中的重要性。在机器翻译中,源语言就如同需要编码的信息,经过编码器的处理转化为一种中间表示,解码器再将这种中间表示转换为目标语言。

(二)基于循环神经网络的机器翻译模型
1. 编码器中的词嵌入层扮演着将单词转化为多维实数表示的重要角色。当输入一串单词序列时,词嵌入层能够将每个单词映射到一个特定的向量空间,从而为后续的处理提供了丰富的语义信息。例如,“苹果”这个词可能被映射为一个特定的向量,这个向量的各个维度可能包含了与“苹果”相关的各种语义特征。
2. 中间层则对词嵌入向量进行更深层次的抽象和理解。中间层的实现方式多种多样,循环神经网络(RNN)、卷积神经网络(CNN)、自注意力机制(Self-Attention)等都是常见的选择。这些结构能够从输入的单词序列中提取出更高级的语义和语法信息,为生成准确的翻译结果奠定基础。

(三)注意力机制
在传统的 Seq2Seq 模型中,解码器在生成输出时仅依赖于编码器产生的最后一个隐藏状态。然而,当处理长序列的输入时,这种方式往往难以捕捉到输入序列中的全部关键信息,导致翻译效果不佳。注意力机制的引入则有效地解决了这一问题。它允许解码器在生成每个输出词时,动态地关注编码器产生的所有中间状态,根据当前的翻译需求自适应地提取和利用源序列中的信息。例如,当翻译一个包含多个复杂从句的句子时,注意力机制能够帮助解码器准确地聚焦于源句中与当前翻译部分相关的内容,从而提高翻译的准确性和流畅性。

(四)基于注意力机制的 GRU 神经网络机器翻译
[此处详细阐述如何绘制基于注意力机制的 GRU 神经网络机器翻译的架构图,包括各个组件的连接和功能,并结合具体的示例句子,解释模型在处理输入和生成输出时的工作流程。例如,通过一个包含多个从句和复杂词汇的句子,展示模型如何利用注意力机制和 GRU 单元来准确地进行翻译。]

**四、翻译质量评价**

(一)译文质量评价的重要性
译文质量评价在机器翻译的发展历程中具有不可替代的重要性。它不仅是衡量机器翻译系统性能的关键指标,也是推动机器翻译技术不断进步的重要动力。在系统研发的反复迭代过程中,通过准确的译文质量评价,研究人员能够及时发现模型存在的问题和不足,从而有针对性地进行改进和优化。同时,在众多的机器翻译应用场景中,如跨语言的商务沟通、学术文献的翻译等,高质量的译文是确保信息准确传递和交流的关键。因此,有效的译文质量评价方法对于保证机器翻译的实用性和可靠性至关重要。

(二)评价标准
传统的翻译理论将翻译质量分为“信”、“达”、“雅”三个层次。“信”强调译文对原文内容的忠实反映,即忠诚度;“达”注重译文表达的流畅和易懂,即流畅度;而“雅”则追求译文的优美和高雅。在机器翻译的评价中,“雅”目前尚未成为普遍采用的标准,主要是因为机器翻译技术在现阶段仍难以达到如此高的要求。然而,随着技术的不断发展,追求“雅”的翻译质量或许将成为未来机器翻译的重要目标。

(三)评价方法
1. 人工评价是最为准确和可靠的评价方式,但同时也是时间和人力成本最高的。在一些对翻译质量要求极高的场景,如重要的商务合同翻译、学术论文的翻译等,往往会采用人工评价。评价人员通常具有深厚的语言功底和专业知识,能够从多个维度对译文进行细致的评估和分析。
2. 有参考答案的自动评价则是在机器翻译系统研发过程中常用的方法。通过事先标注一些正确的译文作为参考答案,然后将机器翻译系统生成的译文与之进行比对,可以快速获得评价结果。这种方法不仅成本相对较低,而且能够多次重复,为系统的优化提供及时的反馈和指导。
3. 无参考答案的自动评价则是在一些特定的应用场景中发挥作用。当用户在获取机器翻译的译文时,希望能够提前了解译文的大致质量,即使没有可比对的参考答案。这种评价方法更多地是对译文的置信度和可能性进行估计,为用户提供一个参考,帮助他们决定是否采用该译文。

五、结论

机器翻译作为自然语言处理领域的重要研究方向,正处于快速发展的阶段。数据预处理为模型提供了高质量的输入,模型训练不断探索更有效的架构和算法,而翻译质量评价则为模型的优化和应用提供了重要的依据。尽管目前机器翻译已经取得了显著的成就,但仍然面临诸多挑战,如对复杂语言结构的处理、多义词的准确翻译、文化背景的理解等。未来,我们需要在技术创新、数据优化、评价方法改进等方面持续努力,推动机器翻译向更高质量、更广泛应用的方向发展。相信在不远的将来,机器翻译将能够更好地服务于人类社会,促进全球范围内的交流与合作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C—328G

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值