🚀 mBART-large-50
mBART-large-50は、opus100 と opusbook のデータセットでファインチューニングされ、英語からポルトガル語への翻訳タスクに特化したモデルです。このモデルは、mBART-50 をベースに、下流のニューラル機械翻訳(NMT)タスクに最適化されています。
✨ 主な機能
- 多言語対応:mBART-50は50言語をサポートする多言語Sequence-to-Sequenceモデルで、多言語の事前学習とファインチューニングにより構築されています。
- 高精度翻訳:opus100とopusbookのデータセットでファインチューニングされ、英語からポルトガル語への翻訳に高い精度を発揮します。
📚 ドキュメント
mBART-50の詳細 🧠
mBART-50は、"Multilingual Denoising Pretraining"の目的で事前学習された多言語Sequence-to-Sequenceモデルです。このモデルは、Multilingual Translation with Extensible Multilingual Pretraining and Finetuning という論文で紹介されました。
mBART-50は、多言語翻訳モデルを多言語のファインチューニングによって作成できることを示すために開発されました。事前学習されたモデルは、一方向ではなく、同時に多方向にファインチューニングされます。mBART-50は、元のmBARTモデルを拡張して、追加の25言語をサポートするようにした、50言語の多言語機械翻訳モデルです。事前学習の目的は以下の通りです。
Multilingual Denoising Pretraining:モデルは、データを連結することでN言語を組み込みます。D = {D1, ..., DN }
ここで、各Diは言語 i
の単言語文書のコレクションです。ソース文書は、2つのスキームを使用してノイズが加えられます。1つ目は、元の文の順序をランダムにシャッフルすること、2つ目は、新しいインフィリングスキームで、テキストのスパンを単一のマスクトークンに置き換えることです。その後、モデルは元のテキストを再構築するようにタスクが与えられます。各インスタンスの単語の35%は、ポアソン分布 (λ = 3.5)
に従ってスパンの長さをランダムにサンプリングすることでマスクされます。デコーダーの入力は、1つの位置オフセットを持つ元のテキストです。言語ID記号 LID
は、文を予測するための最初のトークンとして使用されます。
下流タスク(NMT)の詳細 - データセット 📚
データセットの概要
OPUS-100は英語を中心としたデータセットで、すべての学習ペアはソースまたはターゲット側に英語を含んでいます。このコーパスは100言語(英語を含む)をカバーしています。言語は、OPUSで利用可能な並列データの量に基づいて選択されました。
言語
OPUS-100は約5500万の文ペアを含んでいます。99の言語ペアのうち、44の言語ペアは100万の学習データの文ペアを持ち、73の言語ペアは少なくとも10万の文ペアを持ち、95の言語ペアは少なくとも1万の文ペアを持っています。
データセットの構造
- データフィールド
src_tag
: ソース言語の string
テキスト
tgt_tag
: ターゲット言語のソース言語の翻訳 string
- データ分割
データセットは学習、開発、テストの部分に分割されています。データは、各言語ペアについて最大100万の文ペアを学習用に、最大2000の文ペアを開発用とテスト用にランダムにサンプリングして準備されました。学習データと開発/テストデータの間に(単言語文レベルで)重複がないことを確認するために、サンプリング中にフィルターを適用して、すでにサンプリングされた文を除外しました。これはクロス言語的に行われたため、たとえば、学習データのポルトガル語 - 英語部分の英語文は、ヒンディー語 - 英語のテストセットには含まれません。
テストセットのメトリクス 🧾
このモデルは、テストセットで BLEUスコア20.61 を達成しています。
💻 使用例
基本的な使用法
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