
从英译葡的先进神经机器翻译模型
该开源项目提供的神经机器翻译模型,旨在高效地将英语翻译为葡萄牙语。作为OPUS-MT项目的一部分,模型采用Marian NMT框架训练,并转化到PyTorch以兼容Transformers库。利用flores101-devtest等高质量数据集进行训练与评估,提供多语言目标支持,可应用于多种翻译场景。通过简单的Python示例代码,用户可以快速上手执行翻译任务。项目获得了欧盟资助,并得到了CSC -- IT Center for Science的支持。
opus-mt-tc-big-en-pt 是一个神经机器翻译模型,专注于将英语(en)翻译成葡萄牙语(pt)。这个模型隶属于 OPUS-MT 项目,该项目致力于使神经机器翻译模型在全球范围内得到广泛应用和普及。所有模型最初使用强大的 Marian NMT 框架训练,并通过 huggingface 的 transformers 库将其转换为 pyTorch 格式。训练数据源自 OPUS,且训练流程使用了 OPUS-MT-train 的方法。
>>pob<< >>por<<这个多语言翻译模型支持多个目标语言。使用时需要在句首添加语言标记,格式为 >>id<<(id 是有效的目标语言 ID),例如 >>pob<<。
下面展示了一个简短的代码示例,说明如何使用模型进行翻译:
from transformers import MarianMTModel, MarianTokenizer src_text = [ ">>por<< Tom tried to stab me.", ">>por<< He has been to Hawaii several times." ] model_name = "pytorch-models/opus-mt-tc-big-en-pt" tokenizer = MarianTokenizer.from_pretrained(model_name) model = MarianMTModel.from_pretrained(model_name) translated = model.generate(**tokenizer(src_text, return_tensors="pt", padding=True)) for t in translated: print( tokenizer.decode(t, skip_special_tokens=True) ) # 预期输出: # O Tom tentou esfaquear-me. # Ele já esteve no Havaí várias vezes.
也可以通过 transformers 提供的 pipeline 方法来使用 OPUS-MT 模型:
from transformers import pipeline pipe = pipeline("translation", model="Helsinki-NLP/opus-mt-tc-big-en-pt") print(pipe(">>por<< Tom tried to stab me.")) # 预期输出: O Tom tentou esfaquear-me.
该模型在不同的数据集上进行测试并记录了 BLEU 分数:
| 语言对 | 测试集 | chr-F | BLEU | 句子数 | 单词数 |
|---|---|---|---|---|---|
| eng-por | tatoeba-test-v2021-08-07 | 0.69320 | 49.6 | 13222 | 105265 |
| eng-por | flores101-devtest | 0.71673 | 50.4 | 1012 | 26519 |
opus-mt-tc-big-en-pt 项目得到了 欧洲语言网格 的 2866 试点项目、FoTran 项目(由欧洲研究委员会在欧盟 Horizon 2020 研究和创新计划下资助,协议号为 771113),以及 MeMAD 项目(协议号为 780069)的支持。我们也感谢芬 兰 CSC 科学 IT 中心 提供的计算资源和 IT 基础设施。
这个项目通过提出的技术手段,为多语言翻译服务开创了新的可能性,并为低资源语言的翻译挑战提供了解决方案。