最近在做有关机器翻译的相关工作,所以记录一下。在这篇文章中,总结了一些常见的机器翻译开源模型,分析主流的评估指标如 BLEU、ROUGE 和 METEOR,并通过代码示例演示这些指标的实现,最后结合实际应用场景,分享我在机器翻译技术落地过程中的实践经验和思考,希望为读者提供一些参考与启发。
NLLB 是 Meta 推出的多语言翻译模型,致力于支持低资源语言的翻译。该模型基于先进的 Transformer 架构,通过大规模多语言训练提升了对少数民族语言和低资源语言的翻译能力,其开源版本为开发者提供了数据集和模型权重,便于进一步研究和优化。
项目地址:https://ai.meta.com/research/no-language-left-behind/zh-tw/
模型地址:https://hf-mirror.com/facebook?search_models=nllb
代码demo:https://hf-mirror.com/facebook/nllb-moe-54b#generating-with-nllb-moe
MMS 是 Meta 开发的一种多语言语音翻译模型,旨在支持语音到文本和语音到语音的翻译任务。它通过结合大规模语音数据和高效模型架构,实现了对多语言语音的高质量翻译,是跨语种语音翻译的重要工具。
项目地址:https://huggingface.co/blog/zh/mms_adapters
模型地址:https://huggingface.co/facebook/mms-300m
SeamlessM4T集成了Meta之前发布的NLLB、MMS等翻译模型,并使用了270,000小时的语音和文本对齐数据。所以,这也是目前规模最大、功能最全的开源翻译模型。
项目地址:https://github.com/facebookresearch/seamless_communication
模型地址:https://hf-mirror.com/facebook/seamless-m4t-v2-large
代码demo:https://huggingface.co/docs/transformers/model_doc/seamless_m4t#usage
Fairseq 是 Meta 开源的一个通用序列建模工具包,支持文本翻译、文本生成和语言建模等任务。它提供了多种预训练模型和工具,开发者可以基于 Fairseq 快速构建和训练自定义的机器翻译模型,其模块化设计使其具有较强的扩展性。
项目地址:https://github.com/facebookresearch/fairseq
模型:Fairseq.lightconv.glu.wmt17.zh-en、Fairseq.dynamicconv.glu.wmt17.zh-en、Fairseq.Bart
代码demo:https://github.com/facebookresearch/fairseq/blob/main/examples/translation/README.md#example-usage-torchhub
Marian 是由 Microsoft 开发的高效神经机器翻译框架,专为多语言翻译设计。它基于 C++ 实现,性能高效且支持 GPU 加速,特别适合在资源受限的环境中训练和部署。Marian 提供了丰富的工具和预训练模型,支持用户快速开发定制化翻译系统。
他提供的是单语言的翻译,所以模型的体积比较小,在huggingface中提供了非常多的模型,下面模型地址给出的是中文到英文的翻译模型,更多模型可以去作者的主页查看。
项目地址:https://github.com/marian-nmt/marian
模型地址:https://huggingface.co/Helsinki-NLP/opus-mt-zh-en
代码demo:https://huggingface.co/docs/transformers/model_doc/marian#multilingual-models
OpenNMT 是一个功能强大的开源神经机器翻译工具包,支持多种任务如文本翻译、文档翻译和语音翻译。其实现包括 PyTorch 和 TensorFlow 版本,既适合研究也适合生产环境。OpenNMT 提供了高度可定制的模型结构和丰富的配置选项,深受开发者社区的欢迎。
他其实也是使用的opus作为基础模型,并利用CTranslate2框架进行了加速,可以说是目前最佳的应用方案了,既满足了性能又满足了效率的要求。所以本人对这个项目关注的也比较多,下面贴出一些可能对读者有用的地址。
项目地址:https://github.com/OpenNMT/OpenNMT
模型地址:https://huggingface.co/gaudi/opus-mt-zh-en-ctranslate2
代码demo:https://huggingface.co/gaudi/opus-mt-zh-en-ctranslate2#take-the-python-code-below-and-update-the-model_dir-variable-to-the-location-of-the-cloned-repository
教程:https://github.com/ymoslem/OpenNMT-Tutorial
转CT格式:https://huggingface.co/gaudi/opus-mt-zh-en-ctranslate2#ct2-transformers-converter-command-used、https://opennmt.net/CTranslate2/quantization.html
论坛:https://forum.opennmt.net/
使用onnx推理的demo(本人基于ORTModelForSeq2SeqLM进行改编的,适用于部署):https://colab.research.google.com/drive/1kPE1N4RCDnQdsEcoNny3b6emaQumWk9P?usp=sharing
模型导出为tfl并运行测试(适用于部署):https://github.com/OpenNMT/OpenNMT-tf/blob/master/opennmt/tests/tflite_test.py
使用C++实现,可以直接跑在本地:https://github.com/argosopentech/MetalTranslate
android和ios的app:https://github.com/LibreTranslate/LibreTranslate、https://community.libretranslate.com/t/litranslate-ios-app/333
ArgosTranslate,基于opennmt的项目:https://github.com/argosopentech/argos-translate
mRASP 是一种针对多语言机器翻译的预训练模型,通过引入随机对齐替换的方法增强语言间的对齐能力。它利用跨语言的语义一致性,在提高翻译质量的同时减少对标注数据的依赖,特别适合低资源语言的机器翻译任务。
项目地址:https://github.com/PANXiao1994/mRASP2
模型地址:https://huggingface.co/thehonestbob/mrasp、https://huggingface.co/ENLP/mrasp
T5(Text-To-Text Transfer Transformer)及其多语言版本 mT5 和 UMT5 是 Google 推出的文本生成和翻译模型,采用统一的文本到文本架构,支持多种任务如翻译、摘要和问答。mT5 和 UMT5 通过大规模多语言训练,展现了在多语言翻译任务上的强大性能。
T5是不支持中文的,基于它改进的mT5和UMT5是支持中文的。
项目地址:https://github.com/google-research/multilingual-t5
模型地址:https://huggingface.co/google-t5
代码demo:https://huggingface.co/docs/transformers/model_doc/t5#usage-tips
Tensor2Tensor 是 Google 开发的一个深度学习模型工具包,专为神经机器翻译和序列建模设计。它支持多种架构(如 Transformer)和训练配置,内置丰富的任务和数据集模板,帮助开发者快速构建高质量的翻译系统。
项目地址:https://github.com/tensorflow/tensor2tensor
模型:https://github.com/tensorflow/t