在数据洪流中,人工翻译难以应对所有翻译任务,机器翻译虽未达完美,但在某些场景下能显著减少理解和处理外语文本所需的时间和精力。本人虽为英语专业,但阅读英文文本的时间和精力却是中文文本的2-3倍。例如,中文一分钟可阅读600-1000字,而英语文章书籍通常仅200-300单词。长时间阅读英语会导致大脑疲劳,难以有效获取信息。因此,借助机器翻译快速浏览外语文本,是一种节省时间和精力的方法。随着机器翻译效果的提升,其应用场景也越来越广泛,甚至可能彻底改变人类沟通方式。
目前,机器翻译已从传统的统计翻译转变为神经网络机器翻译,效果有显著提升,尤其是在西方语种之间,如英德互译。中英互译仍有差距,但相信达到满意效果只是时间问题。Google和百度的机器翻译在某些类型文档的翻译上,已接近甚至超过人类水平,如科技论文,Google的机器翻译效果尤为出色。若让人类翻译科技论文,成本极高,且专业词汇和数学符号繁多,懂的人不多,翻译起来既费时又费力,但机器翻译对这类文本的效率却很高,令人欣喜。
目前最流行的神经机器翻译框架有GNMT(Google)、Fairseq(Facebook)和OpenNMT(GitHub:OpenNMT/OpenNMT)。OpenNMT底层使用Lua编写的机器学习工具集Torch,效率很高。
这三个NMT框架在GitHub上的star数相近,但OpenNMT在易用性和亲民程度方面更具优势。
使用OpenNMT的主要困难在于安装Lua和Torch,但Torch的开发者已将这些步骤简化为脚本,使安装过程变得简单而愉快,无论是在MacBook Pro还是Ubuntu台式机上,都不会遇到问题。
安装LuaJIT、LuaRocks和Torch的命令如下,大约需要10分钟。
接下来,安装两个依赖库:
将OpenNMT的代码库复制到电脑上:
安装完成后,一切准备就绪!
训练神经机器翻译模型时,OpenNMT已提供函数接口。首先,需要提供四个文件,让程序进行预处理。这四个文件包括英文原文句子和翻译好的中文句子(训练集)、验证集(英文和中文句子),命令行如下:
此步骤将生成中文词典、英文词典和torch训练所需数据。
接下来是长时间的训练过程:
训练时间取决于数据量大小,模型保存为demo-model,其中包含每轮训练后的模型,如训练10轮,则生成10个模型。
preprocess.lua、train.lua等脚本位于复制后的代码库根目录中,直接使用th命令运行即可。更多参数可参考文档:train.lua - OpenNMT
使用神经网络训练机器翻译模型需要较长时间,一万对中英文训练10轮需十几分钟,若为1000万对,则没有GPU无法完成。一般中英文机器翻译至少需要100万对以上的中英平行语料,训练出的模型才具有基本可用性,数据越多越好。
使用模型翻译文本时,直接调用脚本,选择保存的模型demo-model_epoch10_PPL.t7,将需要翻译的英文放在data/src-test.txt文件中,翻译好的中文将保存到pred.txt中,一行英文对应一行中文。
OpenNMT的使用方式已做到极简,可直接用于后端服务,且提供了Docker容器,可直接安装使用。但中英文机器翻译数据集有限,Google和Facebook开源了一些预训练的神经机器翻译模型,但中英文的较少。因此,若要使用神经机器翻译,有两种方式:一是使用Google或Baidu的机器翻译,寻找民间自制的API进行调用,但免费版有限额,超过限额需付费,且价格不菲;二是自行收集中英文平行语料库数据,使用OpenNMT等工具进行训练,这样可随心所欲使用,但可能难以超越Google和Baidu的效果。但如果针对某一领域的文本进行训练,或许能获得更好的结果。
温馨提示:答案为网友推荐,仅供参考