项目介绍:opus-mt-tc-big-en-pt
opus-mt-tc-big-en-pt 是一个神经机器翻译模型,专注于将英语(en)翻译成葡萄牙语(pt)。这个模型隶属于 OPUS-MT 项目,该项目致力于使神经机器翻译模型在全球范围内得到广泛应用和普及。所有模型最初使用强大的 Marian NMT 框架训练,并通过 huggingface 的 transformers 库将其转换为 pyTorch 格式。训练数据源自 OPUS,且训练流程使用了 OPUS-MT-train 的方法。
模型信息
- 发布日期: 2022 年 3 月 13 日
- 源语言: 英语 (eng)
- 目标语言: 葡萄牙语变体 (pob, por)
- 有效目标语言标签:
>>pob<< >>por<<
- 模型结构: transformer-big
- 数据集: opusTCv20210807+bt,源自于 Tatoeba Challenge
- 分词方法: 使用 SentencePiece (spm32k,spm32k)
这个多语言翻译模型支持多个目标语言。使用时需要在句首添加语言标记,格式为 >>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 基础设施。
这个项目通过提出的技术手段,为多语言翻译服务开创了新的可能性,并为低资源语言的翻译挑战提供了解决方案。