xlm roberta large xnli

Providerjoeddav
Categoryzero-shot-classification
Licensemit
Downloads87.2K
Stars0

Overview

XLM-RoBERTa Large XNLI is a cross-lingual transformer model specifically fine-tuned on the Cross-lingual Natural Language Inference (XNLI) dataset. For developers, its primary value lies in zero-shot text classification: it can categorize text into custom labels without requiring task-specific training data in every target language. By leveraging a massive multilingual pre-training corpus, it effectively transfers knowledge across 100+ languages, making it an ideal choice for building global content moderation tools, sentiment analyzers, or intent classifiers where localized training sets are unavailable. Compared to standard BERT models, it offers significantly broader language coverage and more robust performance on non-English datasets, integrating seamlessly into Hugging Face pipelines for rapid deployment.

Highlights

  • Zero-shot classification across 100+ different languages
  • Eliminates the need for language-specific training sets
  • Fine-tuned on XNLI for high inference accuracy
  • Easy integration via standard Hugging Face pipelines
  • Robust alternative to monolingual BERT architectures

Usage

Install
# Install Hugging Face transformers
pip install transformers torch
SDK Usage
# Load model with transformers
from transformers import AutoModel, AutoTokenizer

model = AutoModel.from_pretrained("joeddav/xlm-roberta-large-xnli")
tokenizer = AutoTokenizer.from_pretrained("joeddav/xlm-roberta-large-xnli")

Hugging Face Download

We recommend downloading the model via the Hugging Face CLI or Hub SDK.

Guidance:Before downloading, install huggingface_hub with:

Guidance
pip install -U huggingface_hub

CLI Download

Download the full repository

Download the full repository
huggingface-cli download joeddav/xlm-roberta-large-xnli

Download a single file to a local folder (e.g. config.json into ./dir)

Download a single file to a local folder (e.g. config.json into ./dir)
huggingface-cli download joeddav/xlm-roberta-large-xnli config.json --local-dir ./dir

See the official docs for more CLI options

SDK Download

SDK Download
# 模型下载
from huggingface_hub import snapshot_download
model_dir = snapshot_download('joeddav/xlm-roberta-large-xnli')

Git Download

Make sure git-lfs is installed first

Git Download
git lfs install
git clone https://huggingface.co/joeddav/xlm-roberta-large-xnli

To skip LFS large-file downloads, use:

Skip LFS
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/joeddav/xlm-roberta-large-xnli

Model files are hosted on the Hugging Face Hub — download directly via HF CLI / SDK / Git, not through this site.

PyTorch / Transformers Usage

Install Transformers

Install Transformers
pip install -U transformers torch

Load the model and run inference

Load the model and run inference
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained('joeddav/xlm-roberta-large-xnli')
tokenizer = AutoTokenizer.from_pretrained('joeddav/xlm-roberta-large-xnli')

Full Documentation

来源: HuggingFace

---
language:

  • multilingual

  • en

  • fr

  • es

  • de

  • el

  • bg

  • ru

  • tr

  • ar

  • vi

  • th

  • zh

  • hi

  • sw

  • ur

tags:
  • text-classification

  • pytorch

  • tensorflow

datasets:
  • multi_nli

  • xnli

license: mit
pipeline_tag: zero-shot-classification
widget:
  • text: "За кого вы голосуете в 2020 году?"

candidate_labels: "politique étrangère, Europe, élections, affaires, politique"
multi_class: true
  • text: "لمن تصوت في 2020؟"

candidate_labels: "السياسة الخارجية, أوروبا, الانتخابات, الأعمال, السياسة"
multi_class: true
  • text: "2020'de kime oy vereceksiniz?"

candidate_labels: "dış politika, Avrupa, seçimler, ticaret, siyaset"
multi_class: true
---

xlm-roberta-large-xnli

Model Description

This model takes xlm-roberta-large and fine-tunes it on a combination of NLI data in 15 languages. It is intended to be used for zero-shot text classification, such as with the Hugging Face ZeroShotClassificationPipeline.

Intended Usage

This model is intended to be used for zero-shot text classification, especially in languages other than English. It is fine-tuned on XNLI, which is a multilingual NLI dataset. The model can therefore be used with any of the languages in the XNLI corpus:

  • English
  • French
  • Spanish
  • German
  • Greek
  • Bulgarian
  • Russian
  • Turkish
  • Arabic
  • Vietnamese
  • Thai
  • Chinese
  • Hindi
  • Swahili
  • Urdu

Since the base model was pre-trained trained on 100 different languages, the
model has shown some effectiveness in languages beyond those listed above as
well. See the full list of pre-trained languages in appendix A of the
XLM Roberata paper

For English-only classification, it is recommended to use
bart-large-mnli or
a distilled bart MNLI model.

#### With the zero-shot classification pipeline

The model can be loaded with the zero-shot-classification pipeline like so:

python
from transformers import pipeline
classifier = pipeline("zero-shot-classification",
                      model="joeddav/xlm-roberta-large-xnli")

You can then classify in any of the above languages. You can even pass the labels in one language and the sequence to
classify in another:

python
# we will classify the Russian translation of, "Who are you voting for in 2020?"
sequence_to_classify = "За кого вы голосуете в 2020 году?"

we can specify candidate labels in Russian or any other language above:

candidate_labels = ["Europe", "public health", "politics"] classifier(sequence_to_classify, candidate_labels)

{'labels': ['politics', 'Europe', 'public health'],

'scores': [0.9048484563827515, 0.05722189322113991, 0.03792969882488251],

'sequence': 'За кого вы голосуете в 2020 году?'}

The default hypothesis template is the English, This text is {}. If you are working strictly within one language, it
may be worthwhile to translate this to the language you are working with:

python
sequence_to_classify = "¿A quién vas a votar en 2020?"
candidate_labels = ["Europa", "salud pública", "política"]
hypothesis_template = "Este ejemplo es {}."
classifier(sequence_to_classify, candidate_labels, hypothesis_template=hypothesis_template)

{'labels': ['política', 'Europa', 'salud pública'],

'scores': [0.9109585881233215, 0.05954807624220848, 0.029493311420083046],

'sequence': '¿A quién vas a votar en 2020?'}

#### With manual PyTorch

python
# pose sequence as a NLI premise and label as a hypothesis
from transformers import AutoModelForSequenceClassification, AutoTokenizer
nli_model = AutoModelForSequenceClassification.from_pretrained('joeddav/xlm-roberta-large-xnli')
tokenizer = AutoTokenizer.from_pretrained('joeddav/xlm-roberta-large-xnli')

premise = sequence
hypothesis = f'This example is {label}.'

run through model pre-trained on MNLI

x = tokenizer.encode(premise, hypothesis, return_tensors='pt', truncation_strategy='only_first') logits = nli_model(x.to(device))[0]

we throw away "neutral" (dim 1) and take the probability of

"entailment" (2) as the probability of the label being true

entail_contradiction_logits = logits[:,[0,2]] probs = entail_contradiction_logits.softmax(dim=1) prob_label_is_true = probs[:,1]

Training

This model was pre-trained on set of 100 languages, as described in
the original paper. It was then fine-tuned on the task of NLI on the concatenated
MNLI train set and the XNLI validation and test sets. Finally, it was trained for one additional epoch on only XNLI
data where the translations for the premise and hypothesis are shuffled such that the premise and hypothesis for
each example come from the same original English example but the premise and hypothesis are of different languages.

Join our Telegram