🚀 multilingual-e5-large-xnli
このモデルは、XNLIデータセットでintfloat/multilingual-e5-large
をファインチューニングしたバージョンです。XNLIデータセットを用いたファインチューニングにより、多言語に対応したゼロショット分類タスクでの性能を向上させています。
✨ 主な機能
- 多言語に対応したゼロショット分類が可能です。
- NLI(自然言語推論)タスクにも適用できます。
📦 インストール
このモデルを使用するには、transformers
ライブラリが必要です。以下のコマンドでインストールできます。
pip install transformers
💻 使用例
基本的な使用法
zero-shot-classification
パイプラインを使用する場合
このモデルはzero-shot-classification
パイプラインで以下のようにロードできます。
from transformers import pipeline
classifier = pipeline("zero-shot-classification",
model="mjwong/multilingual-e5-large-xnli")
次に、このパイプラインを使用して、指定したクラス名にシーケンスを分類できます。
sequence_to_classify = "Angela Merkel ist eine Politikerin in Deutschland und Vorsitzende der CDU"
candidate_labels = ["politics", "economy", "entertainment", "environment"]
classifier(sequence_to_classify, candidate_labels)
複数の候補ラベルが正しい場合、それぞれのクラスを独立して計算するにはmulti_class=True
を渡します。
candidate_labels = ["politics", "economy", "entertainment", "environment"]
classifier(sequence_to_classify, candidate_labels, multi_label=True)
手動でPyTorchを使用する場合
このモデルはNLIタスクにも適用できます。
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
model_name = "mjwong/multilingual-e5-large-xnli"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
premise = "But I thought you'd sworn off coffee."
hypothesis = "I thought that you vowed to drink more coffee."
input = tokenizer(premise, hypothesis, truncation=True, return_tensors="pt")
output = model(input["input_ids"].to(device))
prediction = torch.softmax(output["logits"][0], -1).tolist()
label_names = ["entailment", "neutral", "contradiction"]
prediction = {name: round(float(pred) * 100, 2) for pred, name in zip(prediction, label_names)}
print(prediction)
📚 ドキュメント
評価結果
このモデルは、XNLIのテストセットを用いて15の言語で評価されました。評価指標は正解率です。
また、MultiNLIの開発セットとANLIのテストセットを用いて評価されました。評価指標は正解率です。
学習ハイパーパラメータ
学習時に使用されたハイパーパラメータは以下の通りです。
- 学習率(learning_rate): 2e-05
- 学習バッチサイズ(train_batch_size): 16
- 評価バッチサイズ(eval_batch_size): 16
- 乱数シード(seed): 42
- オプティマイザ(optimizer): Adam(betas=(0.9,0.999)、epsilon=1e-08)
- 学習率スケジューラの種類(lr_scheduler_type): linear
- 学習率スケジューラのウォームアップ比率(lr_scheduler_warmup_ratio): 0.1
- エポック数(num_epochs): 1
フレームワークバージョン
- Transformers 4.28.1
- Pytorch 1.12.1+cu116
- Datasets 2.11.0
- Tokenizers 0.12.1
🔧 技術詳細
このモデルは、Text Embeddings by Weakly-Supervised Contrastive Pre-trainingの手法に基づいています。
著者: Liang Wang, Nan Yang, Xiaolong Huang, Binxing Jiao, Linjun Yang, Daxin Jiang, Rangan Majumder, Furu Wei, arXiv 2022
📄 ライセンス
このモデルはMITライセンスの下で提供されています。