/ Модель

Характеристики

Контекст
514 токенов
Параметры
659 млн
Лицензия
MIT
Архитектура
xlm-roberta · dense
Опубликована
2 мар 2022

xlm-roberta-large-it-mnli

Классификация текстаТекст → label5 профессий

Многоязычная XLM-RoBERTa, дообученная для классификации итальянских текстов по произвольным меткам в режиме zero-shot.

113скачиваний за 30 дней8лайковвеса обновлены22 мая 2023

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Jiva/xlm-roberta-large-it-mnli — модель классификации текста, разработанная Jiva на основе XLM-RoBERTa large и дообученная на задаче вывода по естественному языку (NLI) на итальянском переводе корпуса MNLI. Она предназначена прежде всего для классификации итальянских текстов без заранее заданного набора классов: пользователь передаёт текст и варианты меток, а модель оценивает их соответствие. Модель можно использовать через zero-shot-classification pipeline Transformers; метки и текст могут быть на разных языках, хотя шаблон гипотезы рекомендуется переводить на итальянский для повышения качества.

Архитектура — XLM-RoBERTa для классификации последовательностей, около 658,7 млн параметров, максимальный контекст — 514 токенов. Обучение выполнено на переводе MNLI, а в обновлённой версии использован полный обучающий набор после удаления примерно 1000 неудачно переведённых пар. Карточка приводит точность 84,75 и 85,39 на двух вариантах итальянской оценки; модель также может работать с другими языками благодаря многоязычной предобученной базе, но основное назначение — итальянская классификация. Для классификации только на английском автор рекомендует bart-large-mnli или его дистиллированный вариант. Лицензия — MIT.

Сценарии применения

  • классификация итальянских отзывов по заданным категориям
  • сортировка итальянских обращений клиентов по темам
  • определение тональности итальянского текста по пользовательским меткам
  • маршрутизация итальянских документов по выбранным категориям

Ограничения

Основное назначение и оценка модели связаны с итальянским языком; качество для других языков отдельно не подтверждено. Для английской классификации автор рекомендует bart-large-mnli или его дистиллированную версию.

Для каких профессий подходит5

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

XLM-roBERTa-large-it-mnli

Version 0.1

matched-it accmismatched-it acc
XLM-roBERTa-large-it-mnli84.7585.39

Model Description

This model takes xlm-roberta-large and fine-tunes it on a subset of NLI data taken from a automatically translated version of the MNLI corpus. 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 of italian texts. 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:

from transformers import pipeline
classifier = pipeline("zero-shot-classification",
                      model="Jiva/xlm-roberta-large-it-mnli", device=0, use_fast=True, multi_label=True)              

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:

# we will classify the following wikipedia entry about Sardinia"
sequence_to_classify = "La Sardegna è una regione italiana a statuto speciale di 1 592 730 abitanti con capoluogo Cagliari, la cui denominazione bilingue utilizzata nella comunicazione ufficiale è Regione Autonoma della Sardegna / Regione Autònoma de Sardigna."
# we can specify candidate labels in Italian:
candidate_labels = ["geografia", "politica", "macchine", "cibo", "moda"]
classifier(sequence_to_classify, candidate_labels)
# {'labels': ['geografia', 'moda', 'politica', 'macchine', 'cibo'],
# 'scores': [0.38871392607688904, 0.22633370757102966, 0.19398456811904907, 0.13735772669315338, 0.13708525896072388]}

The default hypothesis template is the English, This text is {}. With this model better results are achieving when providing a translated template:

sequence_to_classify = "La Sardegna è una regione italiana a statuto speciale di 1 592 730 abitanti con capoluogo Cagliari, la cui denominazione bilingue utilizzata nella comunicazione ufficiale è Regione Autonoma della Sardegna / Regione Autònoma de Sardigna."
candidate_labels = ["geografia", "politica", "macchine", "cibo", "moda"]
hypothesis_template = "si parla di {}"
# classifier(sequence_to_classify, candidate_labels, hypothesis_template=hypothesis_template)
# 'scores': [0.6068345904350281, 0.34715887904167175, 0.32433947920799255, 0.3068877160549164, 0.18744681775569916]}

With manual PyTorch

# pose sequence as a NLI premise and label as a hypothesis
from transformers import AutoModelForSequenceClassification, AutoTokenizer
nli_model = AutoModelForSequenceClassification.from_pretrained('Jiva/xlm-roberta-large-it-mnli')
tokenizer = AutoTokenizer.from_pretrained('Jiva/xlm-roberta-large-it-mnli')
premise = sequence
hypothesis = f'si parla di {}.'
# 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

Version 0.1

The model has been now retrained on the full training set. Around 1000 sentences pairs have been removed from the set because their translation was botched by the translation model.

metricvalue
learning_rate4e-6
optimizerAdamW
batch_size80
mcc0.77
train_loss0.34
eval_loss0.40
stopped_at_step9754

Version 0.0

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 an Italian translation of the MNLI dataset (85% of the train set only so far). The model used for translating the texts is Helsinki-NLP/opus-mt-en-it, with a max output sequence lenght of 120. The model has been trained for 1 epoch with learning rate 4e-6 and batch size 80, currently it scores 82 acc. on the remaining 15% of the training.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · text-classification

Можно запустить

Подбираем GPU…

Класс архитектуры
XLMRobertaForSequenceClassification
Ревизия весов
b4491a9

0 моделей