时间:2022-10-09 17:38:13 | 浏览:349
机器翻译(MT)是一项极具挑战性的任务,其研究如何使用计算机将文本或是语音从一种语言翻译成另一种语言。本文借助 Keras 从最基本的文本加载与数据预处理开始,并讨论了在循环神经网络与编码器解码器框架下如何才能构建一个可接受的神经翻译系统,本教程所有的代码已在 GitHub 开源。
传统意义上来说,机器翻译一般使用高度复杂的语言知识开发出的大型统计模型,但是近来很多研究使用深度模型直接对翻译过程建模,并在只提供原语数据与译文数据的情况下自动学习必要的语言知识。这种基于深度神经网络的翻译模型目前已经获得了最佳效果。
项目地址:
https://github.com/susanli2016/NLP-with-Python/blob/master/machine_translation.ipynb
接下来,我们将使用深度神经网络来解决机器翻译问题。我们将展示如何开发一个将英文翻译成法文的神经网络机器翻译模型。该模型将接收英文文本输入同时返回法语译文。更确切地说,我们将构建 4 个模型,它们是:
一个简单的 RNN;
一个带词嵌入的 RNN;
一个双向 RNN;
一个编码器—解码器模型。
训练和评估深度神经网络是一项计算密集型的任务。作者使用 AWS EC2 实例来运行所有代码。如果你打算照着本文做,你得访问 GPU 实例。
加载库
作者使用 help.py 加载数据,同时使用 project_test.py 测试函数。
数据
该数据集包含一个相对较小的词汇表,其中 small_vocab_en 文件包含英文语句,small_vocab_fr 包含对应的法文翻译。
数据集下载地址:
https://github.com/susanli2016/NLP-with-Python/tree/master/data
加载数据
语句样本
small_vocab_en 中的每行包含一个英文语句,同时其法文翻译位于 small_vocab_fr 中对应的每行。
词汇表
问题的复杂性取决于词汇表的复杂性。一个更复杂的词汇表意味着一个更复杂的问题。对于将要处理的数据集,让我们看看它的复杂性。
预处理
我们将使用以下预处理方法将文本转化为整数序列:
1. 将词转化为 id 表达;
2. 加入 padding 使得每个序列一样长。
Tokensize(标记字符串)
使用 Keras 的 Tokenizer 函数将每个语句转化为一个单词 id 的序列。使用该函数来标记化英文语句和法文语句。
函数 tokenize 返回标记化后的输入和类。
Padding
通过使用 Keras 的 pad_sequences 函数在每个序列最后添加零以使得所有英文序列具有相同长度,所有法文序列具有相同长度。
预处理流程
实现预处理函数:
模型
在本节中,我们将尝试各种神经网络结构。我们将训练 4 个相对简单的结构作为开始:
模型 1 是一个简单的 RNN;
模型 2 是一个带词嵌入的 RNN;
模型 3 是一个双向 RNN;
模型 4 是两个 RNN 组成的编码器—解码器架构。
在尝试了 4 种简单的结构之后,我们将构建一个更深的模型,其性能要优于以上 4 种模型。
id 重新转化为文本
神经网络将输入转化为单词 id,但这不是我们最终想要的形式,我们想要的是法文翻译。logits_to_text 函数弥补了从神经网络输出的 logits 到法文翻译之间的缺口,我们将使用该函数更好地理解神经网络的输出。
模型 1:RNN
我们构建一个基础的 RNN 模型,该模型是将英文翻译成法文序列的良好基准。
基础 RNN 模型的验证集准确度是 0.6039。
模型 2:词嵌入
词嵌入是在 n 维空间中近义词距离相近的向量表示,其中 n 表示嵌入向量的大小。我们将使用词嵌入来构建一个 RNN 模型。
嵌入式模型的验证集准确度是 0.8401。
模型 3:双向 RNN
双向 RNN 模型的验证集准确度是 0.5992。
模型 4:编码器—解码器框架
编码器构建一个语句的矩阵表示,而解码器将该矩阵作为输入并输出预测的翻译。
编码器—解码器模型的验证集准确度是 0.6406。
模型 5:自定义深度模型
构建一个将词嵌入和双向 RNN 合并到一个模型中的 model_final。
至此,我们需要需要做一些实验,例如将 GPU 参数改为 256,将学习率改为 0.005,对模型训练多于(或少于)20 epochs 等等。
预测
我们得到了语句完美的翻译同时验证集准确度是 0.9776! ----原文链接:https://medium.com/@
actsusanli/neural-machine-translation-with-python-c2f0a34f7dd
成都加米谷教育大数据培训,专注于大数据人才培养,大数据开发新课即将开课!
普通程序员,不学算法,也可以成为大神吗?对不起,这个,绝对不可以。可是算法好难啊~~看两页书就想睡觉……所以就不学了吗?就一直当普通程序员吗?如果有一本算法书,看着很轻松……又有代码示例……又有讲解……怎么会有那样的书呢?哎呀,最好学了算法
全文共3070字,预计学习时长6分钟图片来源:Jefferson Santos/UnsplashPython如今无疑是全球最受欢迎的编程语言。它最大的好处,就是让越来越多的人通过它加入了编程的世界。近年来,Python的使用人数与日俱增,超
最近刷论坛、刷知乎,经常会看到此类问题“作为新手该怎么学习编程语言?”,“作为新手该选择什么编程语言?”,“学什么编程语言比较有前途?”。对于长期混迹在互联网行业的我来说,问这些问题的肯定都是小白。现在编程界可选的编程语言确实很多,Java
Python 是一门对初学者友好的编程语言,是一种多用途的、解释性的和面向对象的高级语言。它拥有非常小的程序集,非常易于学习、阅读和维护。其解释器可在Windows、Linux 和 Mac OS 等多种操作系统上使用。它的可移植性和可伸缩性
今日凌晨1点,苹果2022秋季新品发布会如期而至,发布会上推出了诸多新品,可以说槽点和亮点并存。iPhone 14/14 Plus槽点满满iPhone 14和iPhone 14 Plus可以说亮点并不多,依然采用刘海屏,A15处理器,iPh
可能是小屏旗舰用户的呼声太大,iPhone 12/13系列推出了只有5.4英寸的mini版本,但苹果没想到小屏党只吹不买,mini版本销量一直不太好。今年,苹果决定砍掉小屏幕的mini版本,取而代之的是屏幕更大的Max版本。很早之前数码博主
记者|徐诗琪每年iPhone开卖时都有一波抢购潮,今年也不例外。原定于9月16日正式发售的iPhone 14系列在15日已有渠道流出现货,普遍加价在2000元甚至3000元以上。强劲的预售情况,看起来让萎靡许久的手机消费市场有了新动力。i
转眼间,已经到了苹果iPhone面世的第16年。从初代iPhone到现在的iPhone13系列,给我们带来了许多经典与回忆。但让许多朋友不解的是,在手机像素动辄过亿的时代,iPhone依旧坚持1200万像素的“初心”。回首初代iPhone,
你的钱准备好了吗?2018年款iPhone已经正式登场,在未来1年中你会挑选哪款iPhone陪伴你呢?如果目前已经拥有iPhone X是否有必要升级iPhone XS Max?现在是购买iPhone 7或者7 Plus的最佳时机?带着这些疑