🚀 bart-large-mnli
このモデルは、MultiNLI (MNLI) データセットで学習された bart-large のチェックポイントです。自然言語処理におけるゼロショット分類タスクに利用できます。
🚀 クイックスタート
このモデルは、自然言語のゼロショット分類タスクに使用できます。以下に、このモデルの基本的な使い方を説明します。
✨ 主な機能
- ゼロショット分類:事前学習されたNLIモデルを利用して、新しいクラスに対しても分類が可能です。
- 高い汎化性能:大規模な事前学習モデルであるBARTをベースとしているため、多くのケースで良好な性能を発揮します。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
zero-shot-classification
パイプラインを使用して、文章を任意のクラスに分類できます。
from transformers import pipeline
classifier = pipeline("zero-shot-classification",
model="facebook/bart-large-mnli")
以下は、具体的な分類の例です。
sequence_to_classify = "one day I will see the world"
candidate_labels = ['travel', 'cooking', 'dancing']
classifier(sequence_to_classify, candidate_labels)
複数のラベルが正解となる場合には、multi_label=True
を指定して各クラスを独立に計算できます。
candidate_labels = ['travel', 'cooking', 'dancing', 'exploration']
classifier(sequence_to_classify, candidate_labels, multi_label=True)
高度な使用法
transformers
と PyTorch
を直接使用して、ゼロショット分類を行うこともできます。
from transformers import AutoModelForSequenceClassification, AutoTokenizer
nli_model = AutoModelForSequenceClassification.from_pretrained('facebook/bart-large-mnli')
tokenizer = AutoTokenizer.from_pretrained('facebook/bart-large-mnli')
premise = sequence
hypothesis = f'This example is {label}.'
x = tokenizer.encode(premise, hypothesis, return_tensors='pt',
truncation_strategy='only_first')
logits = nli_model(x.to(device))[0]
entail_contradiction_logits = logits[:,[0,2]]
probs = entail_contradiction_logits.softmax(dim=1)
prob_label_is_true = probs[:,1]
📚 ドキュメント
🔧 技術詳細
Yin et al. は、事前学習されたNLIモデルをゼロショットシーケンス分類器として使用する方法を提案しました。この方法では、分類対象のシーケンスをNLIの前提とし、各候補ラベルから仮説を構築します。たとえば、シーケンスが「politics」クラスに属するかどうかを評価する場合、This text is about politics.
という仮説を構築できます。その後、含意と矛盾の確率がラベルの確率に変換されます。
この方法は、多くのケースで驚くほど有効であり、特にBARTやRobertaのような大規模な事前学習モデルと併用すると効果的です。詳細な導入については、このブログ記事 を参照してください。
📄 ライセンス
このモデルはMITライセンスの下で提供されています。