多种语言的AI语言翻译
GoogleTranslate运作良好,通常看起来像魔术。但这不是魔术,而是深度学习!
在本系列文章中,我们将向您展示如何使用深度学习创建自动翻译系统。本系列可以视为分步教程,可以帮助您了解和构建Neuronal机器翻译。
本系列假定您熟悉机器学习的概念:模型训练,监督学习,神经网络以及人工神经元,层和反向传播。
即使尚未完全取代GoogleTranslate,我们在上一篇文章中所取得的成就还是不错的。在本文中,我们将训练和测试其他语言上的翻译模型。
翻译多种语言
我们在此处创建的功能将支持使用我们开发的模型将一种语言自动翻译为另一种语言。
欢迎您将代码下载为GoogleColab文件。
我们的应用程序将能够使用制表符分隔的并行语料库(例如Tatoeba项目中的模型)创建模型。
查看我们的代码,您将看到将模型训练所需的所有内容分组为train_model函数,并进行了转换和转换函数,该函数以模型的输入语言获取文本文件,并将其转换为模型的输出语。
让我们使用包含一些我们希望翻译的英文文本的文件来运行我们的工具–ftest.txt,其中包含:
this is a test hello can you give me the bill please where is the main street1234复制代码类型:[html]
translate("rus.txt","test.txt","model12")1复制代码类型:[html]
我们得到以下输出:
input model translation 0 this is a test это тест 1 hello привет 2 can you give me the bill please не можете мне пожалуйста 3 where is the main street где здесь улице12345复制代码类型:[html]
除第三行外,结果是正确的。
现在,我们训练一下,然后使用法语翻译器:
train_model("fra.txt","model_fr") translate("fra.txt","test.txt","model_fr")12复制代码类型:[html]
input model translation 0 this is a test c'est un d'un 1 hello 2 can you give me the bill please tu me donner la s'il te prie 3 where is the main street où est la rue est rue12345复制代码类型:[html]
结果非常糟糕。仅第四句以某种可理解的方式翻译。原因是法语的复杂性,以及与俄罗斯数据集相比训练数据集相对较小的事实。
这是自动将英语翻译成德语的结果:
input model translation 0 this is a test das ist eine test 1 hello 2 can you give me the bill please könntest sie mir die rechnung geben 3 where is the main street wo ist die straße12345复制代码类型:[html]
这几乎是100%完美的。
最后,让我们尝试看看相同的方法将英语翻译成荷兰语的效果如何:
input model translation 0 this is a test dit is een nationale 1 hello hallo 2 can you give me the bill please kunt je me instapkaart geven 3 where is the main street waar is de bushalt12345复制代码类型:[html]
这不是很完美,“主要街道在哪里”被翻译为“汽车站在哪里?”,“请给我账单给我”可以翻译为“请给我登机证”。
如您所见,根据语言和训练数据集的大小,我们有非常不同的结果。
下一步
正如我们所看到的,我们能够构建一个非常好的机器翻译系统,而无需编写数千行代码或花费数千美元在GPU上进行训练或建模。当然,与大多数深度学习任务一样,您的训练数据集越大(并且您可以花费更多的时间训练它),翻译模型将越准确。
有很多方法可以构建用于机器翻译的ML系统。我们只是探索了其中之一。另外,您可以使用卷积神经网络(CNN)代替RNN,或使用Moses之类的软件;结合了统计机器翻译和深度学习模型。
既然您已经看到了AI语言翻译的实际应用,那么您可能想尝试使用Transformers进行AI翻译。变形器是完全基于注意力的自然语言处理任务的最新方法。他们根本不像我们创建的模型那样使用序列。尽管转换器是新的,并且没有像基于序列的AI翻译那样得到大量研究的支持,但它开始看起来像转换器将是许多自然语言处理任务的未来。