模型:
Narrativa/mbart-large-50-finetuned-opus-en-pt-translation
任务:
翻译mBART-50 在 opus100 数据集上进行了大规模微调,用于 NMT 的下游任务。
mBART-50 是一个多语言序列到序列模型,使用 "Multilingual Denoising Pretraining" 目标进行预训练。该模型在 Multilingual Translation with Extensible Multilingual Pretraining and Finetuning 论文中介绍。
mBART-50 是一个多语言序列到序列模型。它的创建旨在展示通过多语言微调可以创建多语言翻译模型。mBART-50 使用原始 mBART 模型,并扩展添加了额外的 25 种语言,以支持 50 种语言的多语言机器翻译模型。预训练的目标如下所述。多语言去噪预训练:模型通过连接数据 D = {D1, ..., DN } 来整合 N 种语言的数据,其中每个 Di 是语言 i 的单语文档集合。源文档通过两种方案进行了噪声处理,首先是对原始句子的顺序进行随机洗牌,其次是一种新的内填充方案,其中文本段被一个单一的掩码标记替换。然后,模型的任务是重构原始文本。每个实例的词语中有 35% 被屏蔽,通过根据泊松分布 (λ=3.5) 随机采样一个跨度长度来完成。解码器的输入是带有一个位置偏移的原始文本。使用语言 id 符号 LID 作为初始标记来预测句子。
OPUS-100 以英语为中心,意味着所有训练对均包含源语言或目标语言中的英语。该语料库涵盖了 100 种语言(包括英语)。选择语言是基于 OPUS 中可用的平行数据的数量。
OPUS-100 包含大约 5500 万个句对。在 99 种语言对中,有 44 种语言有 100 万个句对的训练数据,73 种语言至少有 10 万个句对,95 种语言至少有 1 万个句对。
数据集被拆分为训练、开发和测试部分。通过对每种语言对随机抽取最多 100 万个句对进行训练,并对开发和测试集中的每种语言对随机抽取最多 2000 个句对来准备数据。为了确保训练和开发/测试数据之间不存在重叠(在单语句级别上),在抽样过程中应用了一个过滤器来排除已经被抽取的句子。请注意,此操作是跨语言进行的,因此在训练数据的葡萄牙语-英语部分中的英语句子将不会出现在印地语-英语的测试集中。
我们获得了 20.61 的 BLEU 分数。
git clone https://github.com/huggingface/transformers.git pip install -q ./transformers
from transformers import MBart50TokenizerFast, MBartForConditionalGeneration ckpt = 'Narrativa/mbart-large-50-finetuned-opus-en-pt-translation' tokenizer = MBart50TokenizerFast.from_pretrained(ckpt) model = MBartForConditionalGeneration.from_pretrained(ckpt).to("cuda") tokenizer.src_lang = 'en_XX' def translate(text): inputs = tokenizer(text, return_tensors='pt') input_ids = inputs.input_ids.to('cuda') attention_mask = inputs.attention_mask.to('cuda') output = model.generate(input_ids, attention_mask=attention_mask, forced_bos_token_id=tokenizer.lang_code_to_id['pt_XX']) return tokenizer.decode(output[0], skip_special_tokens=True) translate('here your English text to be translated to Portuguese...')
创建者: Narrativa
Narrativa 公司简介:自然语言生成 (NLG) | 我们的基于机器学习的平台 Gabriele 构建并部署自然语言解决方案。#NLG #AI