基于术语词典干预的机器翻译挑战赛笔记Task2 #Datawhale AI 夏令营

上回:

基于术语词典干预的机器翻译挑战赛笔记Task1 跑通baseline Datawhale AI 夏令营-CSDN博客文章浏览阅读718次,点赞11次,收藏8次。基于术语词典干预的机器翻译挑战赛笔记Task1 跑通baselinehttps://blog.csdn.net/qq_23311271/article/details/140357529?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22140357529%22%2C%22source%22%3A%22qq_23311271%22%7D

书接上回:

导入库

Spacy

Spacy是一个流行的自然语言处理(NLP)库,用于文本预处理、实体识别、句法分析、词向量表示等任务。

Spacy支持多种语言,并且具有高效的性能和易于使用的接口。它被广泛用于构建智能语言处理应用程序、信息提取和文本分析等领域。

用于英文的 tokenizer(分词,就是将句子、段落、文章这种长文本,分解为以字词为单位的数据结构,方便后续的处理分析工作),不同环境的安装请参考:https://spacy.io/usage

Install spaCy · spaCy Usage DocumentationspaCy is a free open-source library for Natural Language Processing in Python. It features NER, POS tagging, dependency parsing, word vectors and more.icon-default.png?t=N7T8https://spacy.io/usage 

安装库的命令 

pip install -U pip setuptools wheel
pip install -U 'spacy[cuda12x]'
python -m spacy download en_core_web_sm

创建新文件夹为task2并导入文件,在这个文件夹打开终端

打开终端粘贴复制好的命令...

等待安装完成

torchtext

一个用于自然语言处理(NLP)的Python库,它为NLP任务提供了一些常用的数据集和文本预处理功能。

torchtext可以帮助开发人员加载和处理文本数据集,并将其转换为适合机器学习模型训练的格式。它还提供了一些方便的功能,例如构建词汇表、创建数据迭代器等

jieba

是一个流行的中文分词工具。

它可以将连续的中文文本切分成单独的词语,将文本转化为可以进一步处理的形式。jieba具有高效的分词速度和较好的分词准确性,因此在中文文本处理和NLP任务中被广泛使用。

sacrebleu

是一个用于机器翻译评估的Python库。

它提供了计算机翻译质量指标(如BLEU指标)的功能,用于衡量机器翻译系统的性能

安装库的命令 

!pip install torchtext    
!pip install jieba
!pip install sacrebleu

数据预处理

上传数据

数据清洗与规范化

去除无关信息清除文本中的 HTML 标签、特殊字符和非文本内容,如 “Joey. (掌声) (掌声) 乔伊” 中的 “(掌声)”。

统一格式将所有文本转换为小写,统一日期和数字的表示方式,确保数据一致性。

文本分割

分句和分段:将长文本分割成句子或段落,以便于后续处理和模型训练。

分词

定义tokenizer

中文分词:使用 jieba 等工具将中文文本分解成单词或词素。

zh_tokenizer = lambda x: list(jieba.cut(x))  # 使用jieba分词

英文分词:使用 Spacy等工具将英文文本分解成单词或词素。

en_tokenizer = get_tokenizer('spacy', language='en_core_web_trf')

对英文和中文文本数据进行预处理,以便用于机器翻译。 

from typing import List, Tuple  # 导入List和Tuple类型,用于类型注解# 定义数据预处理函数,输入参数为英文数据列表和中文数据列表,返回值为处理后的数据列表
def preprocess_data(en_data: List[str], zh_data: List[str]) -> List[Tuple[List[str], List[str]]]:processed_data = []  # 初始化一个空列表,用于存储处理后的数据for en, zh in zip(en_data, zh_data):  # 使用zip函数同时遍历英文和中文数据列表en_tokens = en_tokenizer(en.lower())[:MAX_LENGTH]  # 对英文文本进行小写转换和分词,并截断到最大长度zh_tokens = zh_tokenizer(zh)[:MAX_LENGTH]  # 对中文文本进行分词,并截断到最大长度if en_tokens and zh_tokens:  # 确保两个序列都不为空processed_data.append((en_tokens, zh_tokens))  # 将处理后的英文和中文序列添加到processed_data列表中return processed_data  # 返回处理后的数据列表

词汇表与词向量构建

词汇表构建:从训练数据中提取所有词汇,构建一个包含所有词汇的列表,并为每个词分配一个唯一索引。

词向量利用预训练的词向量或自训练词向量,将词汇表中的词映射到高维空间中的向量以捕捉词的语义信息。

# 导入build_vocab_from_iterator函数
from torchtext.vocab import build_vocab_from_iterator  # 定义构建词汇表的函数,输入参数为处理后的数据列表,返回值为英文和中文的词汇表
def build_vocab(data: List[Tuple[List[str], List[str]]]):# 使用build_vocab_from_iterator函数从英文数据中构建词汇表# specials参数指定了特殊字符,包括未知词('<unk>'),填充('<pad>'),开始('<bos>')和结束('<eos>')en_vocab = build_vocab_from_iterator((en for en, _ in data),  # 生成器表达式,只提取英文序列specials=['<unk>', '<pad>', '<bos>', '<eos>'])# 使用build_vocab_from_iterator函数从中文数据中构建词汇表zh_vocab = build_vocab_from_iterator((zh for _, zh in data),  # 生成器表达式,只提取中文序列specials=['<unk>', '<pad>', '<bos>', '<eos>'])# 设置词汇表的默认索引为未知词('<unk>')的索引en_vocab.set_default_index(en_vocab['<unk>'])zh_vocab.set_default_index(zh_vocab['<unk>'])# 返回构建好的英文和中文词汇表return en_vocab, zh_vocab

序列处理

序列截断:限制输入序列的长度,避免过长的序列增加计算成本和冗余信息。

序列填充:将所有序列填充至统一长度,通常使用 <PAD> 标记进行填充,以便于批量处理。

特殊标记添加

序列开始和结束标记:在序列的开始和结束处添加 <SOS> 和 <EOS> 标记,帮助模型识别序列的边界。

未知词标记:对不在词汇表中的词添加 <UNK> 标记,使模型能够处理未见过的词汇。

数据增强

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

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

数据集划分

数据分割:虽然本赛题中数据集已经划分好,但了解将数据划分为训练集、验证集和测试集的重要性是必要的,这有助于模型训练、参数调整和最终性能评估。

模型训练

在神经机器翻译中,编码器-解码器模型是一种常用的框架,用于描述源语言和目标语言之间的关系。这个框架由两个主要组件组成:编码器和解码器。

编码器的作用是将源语言句子编码为一个固定长度的向量,捕捉句子的语义和信息。

编码器通常是一个循环神经网络(RNN)或者是变种,长短时记忆网络(LSTM)或门控循环单元(GRU)。编码器逐步读取源语言句子的每个单词或者字符,每一步都更新其内部状态,最终输出一个表示整个句子语义的向量。

解码器的作用是基于编码器的输出向量,逐步生成目标语言的翻译结果。

解码器也是一个循环神经网络,接收编码器的输出向量作为初始隐藏状态,并根据之前生成的翻译结果和当前的隐藏状态生成下一个单词或者字符。解码器不断迭代,直到生成完整的目标语言句子。

训练阶段,编码器和解码器需要通过最大似然估计或其他损失函数进行参数优化,以最大限度地减少源语言和目标语言之间的翻译误差。推断阶段,只需要使用已训练好的编码器和解码器将源语言句子输入,然后通过解码器逐步生成目标语言翻译结果。

编码器-解码器模型提供了一种将源语言翻译为目标语言的框架,通过编码器捕捉源语言句子的语义信息,并通过解码器生成目标语言的翻译结果。

主流:编码器由词嵌入层和中间网络层组成

  • 当输入一串单词序列时,词嵌入层(embedding)会将每个单词映射到多维实数表示空间,这个过程也被称为词嵌入

  • 之后中间层会对词嵌入向量进行更深层的抽象,得到输入单词序列的中间表示。中间层的实现方式有很多,比如:循环神经网络、卷积神经网络、自注意力机制等都是模型常用的结构。

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

我以基于循环神经网络的机器翻译模型为例,说明其整体结构。

其中,左侧为编码器部分,源语言单词按照其在文本序列中的先后顺序被依次送入到循环神经网络(RNN)当中。在每入时间步t中,模型依据送入的源语言单语 xt对应修改并维护其模型内部的隐状态ht,这个隐状态编码了输入的源语言序列前t个时刻的所有必要信息。按照这种方式当m输入全部被送入到编码器之后,所对应的hm可以认为包含了源语言序列的所有信息。

右半部分是RNN解码器部分,它接收编码器输出的编码源语言句子信息的向量hm作为初始隐状态s0。由于 RNN的循环过程在每人时间步都要求一个输入单词,为了启动解码过程,一般会使用一个保留的特殊符号”[Start]“作为翻译开始的标记送入到RNN解码器当中并解码出自标语言序列的第一个单词z1。接下来,z1会作为下一入时刻的输入被送入到循环神经网络当中,并按照不断迭代产生后续的预测。由于自标语言序列的长度无法被提前预知,因此使用另一个保留符号“[Stop]”作为预测结束的标志。当某一个时刻t预测出的目标语言单词为 zt ="[Stop]”时,解码过程动态地停止。在上述过程当中,主要涉及到两步运算,第一步是 RNN 接收前一时刻隐状态S(t-1)并依据当前时刻输入z( t-1)(自标语言单词z(t-1)对应的语义嵌入)对隐状态进行维护并生成St的运算过程。

其中 U,W,V 是可学习的参数。U,W 负责维护循环状态,而 V 负责将当前时刻状态转换到词表大小的概率分布

P \in R^{vocab_size},从中可以采样得到目标语言单词 z_{t}

通过循环网络对源语言文本进行编码,并生成目标语言翻译结果的过程十分简单。然而,它仅仅使用一个定长的向量 $$h_{m}$$ 编码整个源语言序列。这对于较短的源语言文本没有什么问题,但随着文本序列长度的逐渐加长,单一的一个向量 hm 可能不足以承载源语言序列当中的所有信息

蓝色的线代表上述简单循环神经网络性能随源语言文本长度的变化趋势。当文本长度在 20 个单词以内时,单一向量能够承载源语言文本中的必要信息。随着文本序列的进一步增加,翻译性能的评价指标 BLEU 的值就开始出现明显地下降。因此,这就启发我们使用更加有效地机制从编码器向解码器传递源语言信息,这就是接下来要讲到的注意力机制。

引入注意力机制的循环机器翻译架构与基于简单循环网络的机器翻译模型大体结构相似,均采用循环神经网络作为编码器与解码器的实现。关键的不同点在于注意力机制的引入使得不再需要把原始文本中的所有必要信息压缩到一个向量当中。引入注意力机制的循环神经网络机器翻译架构如图所示:

翻译质量评价

人们在使用机器翻译系统时需要评估系统输出结果的质量。这个过程也被称作机器翻译译文质量评价,简称为译文质量评价(Quality Evaluation of Translation)。在机器翻译的发展进程中,译文质量评价有着非常重要的作用。不论在系统研发的反复迭代中,还是在诸多的机器翻译应用场景中,都存在大量的译文质量评价环节。从某种意义上说,没有译文质量评价,机器翻译也不会发展成今天的样子。比如,本世纪初研究人员提出了译文质量自动评价方法 BLEU(Bilingual Evaluation Understudy)

该方法使得机器翻译系统的评价变得自动、快速、便捷,而且评价过程可以重复。正是由于 BLEU 等自动评价方法的提出,机器翻译研究人员可以在更短的时间内得到译文质量的评价结果,加速系统研发的进程。

机器翻译译文质量评价

机器翻译译文质量评价是指对机器翻译系统输出结果进行评估,以衡量翻译质量的过程。在机器翻译的发展中,译文质量评价起着非常重要的作用。无论是在系统研发过程中还是在实际应用中,都需要进行大量的译文质量评价。

译文质量评价

译文质量评价的重要性在于它可以提供对机器翻译结果的客观评估,帮助研发人员改进系统的性能。通过译文质量评价,可以了解系统在不同语言对、不同领域和不同文本类型上的翻译表现,从而指导系统的改进和优化。

在过去,译文质量评价往往是由人工评估人员进行的,他们需要阅读源文本和机器翻译结果,然后对译文质量进行打分或提供详细的评估报告。然而,人工评估的过程费时费力,并且在大规模应用中不太实用。

为了解决这个问题,研究人员提出了自动评价方法,其中最著名的是BLEU(Bilingual Evaluation Understudy)BLEU通过比较机器翻译结果与参考翻译之间的n-gram匹配来评估翻译质量。BLEU具有自动化、快速、便捷和可重复性的特点,因此被广泛应用于机器翻译系统的评估和研发中。

BLEU方法的提出加速了机器翻译研究的进程,使研发人员能够更快地获取关于翻译质量的评估结果。然而,BLEU也存在一些缺点,例如它只关注n-gram匹配,无法捕捉翻译的流畅性和准确性等问题。因此,研究人员还提出了其他自动评价方法,如METEOR、TER和ROUGE等,以进一步提高机器翻译的译文质量评价水平。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/380595.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络:应用层协议HTTP(一)

一、什么是HTTP协议 虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一。 在互联网世界中&#xff0c;HTTP&#xff08;HyperText Transfer Protocol&…

【考研数学】线代满分经验分享+备考复盘

我一战二战复习都听了李永乐的线代课&#xff0c;二战的时候只听了一遍强化&#xff0c;个人感觉没有很乱&#xff0c;永乐大帝的课逻辑还是很清晰的。 以下是我听向量这一章后根据听课内容和讲义例题总结的部分思维导图&#xff0c;永乐大帝讲课的时候也会特意点到线代前后联…

基于百度地图API实现地图位置选取的移动端页面开发教程 (JQuery+Html+JavaScript+CSS)

本文详细讲解了如何使用百度地图API实现移动端页面中的地图位置选取功能。文章首先介绍了百度地图API的2.0和3.0版本功能&#xff0c;并重点采用3.0 API。接着&#xff0c;逐步展示了如何构建基本的地图页面&#xff0c;如何通过点击地图获取经纬度和地理信息&#xff0c;以及如…

uniapp vue3 上传视频组件封装

首先创建一个 components 文件在里面进行组件的创建 下面是 vvideo组件的封装 也就是图片上传组件 只是我的命名是随便起的 <template><!-- 上传视频 --><view class"up-page"><!--视频--><view class"show-box" v-for"…

【Android面试八股文】荣耀面试算法题:输入一个N阶方阵(0<N<10),输出此方阵顺时针旋转M(0<=M<=10000)次后的方阵

文章目录 1. 算法题:输入一个N阶方阵(0<N<10),输出此方阵顺时针旋转M(0<=M<=10000)次后的方阵1.1 题目描述1.2 算法实现1.2.1 步骤说明:1.2.2 算法实现1.2.3 代码实现:1.2.4 程序说明:1.2.5 示例详细讲解如何将一个矩阵顺时针旋转90度1. 算法题:输入一个N阶方…

达梦数据库DM8-索引篇

目录 一、前景二、名词三、语法1、命令方式创建索引1.1 创建索引空间1.2.1 创建普通索引并指定索引数据空间1.2.2 另一种没验证&#xff0c;官方写法1.3 复合索引1.4 唯一索引1.5 位图索引1.6 函数索引 2、创建表时候创建索引3、可视化方式创建索引3.1 打开DM管理工具3.2 找到要…

生成式人工智能落地校园与课堂的15个场景

生成式人工智能正在重塑教育行业&#xff0c;为传统教学模式带来了革命性的变化。随着AI的不断演进&#xff0c;更多令人兴奋的应用场景将逐一显现&#xff0c;为学生提供更加丰富和多元的学习体验。 尽管AI在教学中的应用越来越广泛&#xff0c;但教师们也不必担心会被完全替代…

[电机控制]-三相鼠笼电机simulink建模

三相鼠笼电机simulink建模 1 方程 电机方程&#xff1a; d i s α d t K 1 i s α K 2 ϕ r α K 3 ω r ϕ r β K 4 v s α \frac{di_{s\alpha}}{dt}K_{1}i_{s\alpha}K_{2}\phi_{r\alpha}K_{3}\omega_{r}\phi_{r\beta}K_{4}v_{s\alpha} dtdisα​​K1​isα​K2​ϕrα…

VSCODE 下 openocd Jlink 的配置笔记

title: VSCODE 下 openocd Jlink 的配置笔记 tags: STM32HalCubemax 文章目录 内容VSCODE 下 openocd Jlink 的配置笔记安装完成后修改jlink的配置文件然后修改你的下载器为jlink烧录你的项目绝对会出现下面的问题那么打开下载的第一个软件 &#xff08;点到这个jlink右键&…

视频分帧【截取图片】(YOLO目标检测【生成数据集】)

高效率制作数据集【按这个流程走&#xff0c;速度很顶】 本次制作&#xff0c;1059张图片【马路上流动车辆】 几乎就是全自动了&#xff0c;只要视频拍得好&#xff0c;YOLO辅助制作数据集就效率极高 视频中的图片抽取&#xff1a; 【由于视频内存过大&#xff0c;遇到报错执行…

IO半虚拟化-vhost学习笔记

参考&#xff1a;系《深入浅出dpdk》学习笔记以及redhat的官方博客 vhost属于virtio-net网络设备的后端驱动&#xff0c;经历了从virtio-net后端&#xff0c;到内核态vhost-net&#xff0c;到vhost-user的演进过程。先过一下背景知识&#xff0c; 背景知识 QEMU QEMU 是一个…

几种常用排序算法

1 基本概念 排序是处理数据的一种最常见的操作&#xff0c;所谓排序就是将数据按某字段规律排列&#xff0c;所谓的字段就是数据节点的其中一个属性。比如一个班级的学生&#xff0c;其字段就有学号、姓名、班级、分数等等&#xff0c;我们既可以针对学号排序&#xff0c;也可…

huawei USG6001v1学习---防火墙高可靠性(双机热备)

1.什么是双机热备 如图&#xff1a;当左图的防火墙发生故障时&#xff0c;整个系统都会收到影响&#xff0c;而右图即使有防火墙发生故障&#xff0c;但是还有一台防火墙做备份&#xff0c;相对于只有一台防火墙&#xff0c;要可靠些。 由于防火墙上不仅需要同步配置信息&…

【Linux】—— 进程的基本概念、PCB、fork

&#x1f30f;博客主页&#xff1a;PH_modest的博客主页 &#x1f6a9;当前专栏&#xff1a;Linux跬步积累 &#x1f48c;其他专栏&#xff1a; &#x1f534; 每日一题 &#x1f7e1; C跬步积累 &#x1f7e2; C语言跬步积累 &#x1f308;座右铭&#xff1a;广积粮&#xff0…

【海外云手机】静态住宅IP集成解决方案

航海大背景下&#xff0c;企业和个人用户对于网络隐私、稳定性以及跨国业务的需求日益增加。静态住宅IP与海外云手机的结合&#xff0c;提供了一种创新的集成解决方案&#xff0c;能够有效应对这些需求。 本篇文章分为三个部分&#xff1b;静态住宅优势、云手机优势、集成解决…

Spring框架、03SpringMVC

SpringMVC SpringMVC入门 介绍 SpringMVC将Servlet一些通用功能进行了抽取和封装&#xff0c;使用它之后&#xff0c;代码主要有两部分组成&#xff1a; 前端控制器&#xff1a;由SpringMVC提供&#xff0c;主要负责接收参数和返回数据 处理器&#xff1a;由程序员编写&…

好用的接口文档swagger

本篇文章记录怎么给我们的后端项目整一个好用的接口文档 这个东西好像叫什么swagger吧 1. 依赖引入&#xff1a; <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId></dependency>…

AWE2025正式启动,AWE×AI 推动智慧生活的普及

7月18日&#xff0c;2025年中国家电及消费电子博览会&#xff08;AWE2025&#xff09;正式启动。主办方宣布&#xff0c;AWE2025的主题为“AI科技、AI生活”&#xff0c;展会将于2025年3月20-23日在上海新国际博览中心举办。 作为全球三大家电和消费电子领域展会之一&#xff…

图书馆定位导航:RFID、VR与AR技术在图书馆中的应用

图书馆作为知识的宝库&#xff0c;承载着无数求知者的梦想与期待&#xff0c;随着馆藏书籍数量的激增与图书馆布局的日益复杂&#xff0c;读者在寻找目标书籍往往有许多困难。传统的索引号查询方式虽能提供书籍的基本信息&#xff0c;但在寻找过程中&#xff0c;因不熟悉图书馆…

各种复现,保证质量

代码复现&#xff0c;文献复现&#xff0c;模型复现&#xff0c;算法复现&#xff0c;文章复现&#xff0c;创新点等等&#xff0c;python/matlab/c语言/r语言均可&#xff0c;保证高质量完成&#xff0c;可接急单&#xff0c;不成功不收费&#xff01;