/ Модель

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

Контекст
512 токенов
Параметры
205 млн
Архитектура
bert · dense
Опубликована
2 мар 2022

rubert-base-cased-nli-threeway

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

Русскоязычная модель на основе RuBERT определяет, следует ли один текст из другого, противоречит ему или нейтрален.

8 549скачиваний за 30 дней39лайковвеса обновлены5 апр 2024

Бенчмарки

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

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

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

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

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

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

cointegrated/rubert-base-cased-nli-threeway — русскоязычная модель для вывода логических отношений между двумя короткими текстами. Она создана дообучением DeepPavlov/rubert-base-cased и предсказывает три класса: следование, противоречие и нейтральное отношение. Архитектура — BERT для классификации последовательностей; модель содержит 205,1 млн параметров и рассчитана на контекст до 512 токенов.

Модель предназначена для задач NLI и классификации текста без заранее заданного набора меток, в том числе для проверки, следует ли гипотеза из предпосылки. Обучение проводилось на наборах данных для NLI, автоматически переведённых с английского на русский, а также на нескольких русскоязычных источниках. Доступны веса PyTorch и Safetensors, а также формат ONNX. Лицензия в предоставленных данных не указана.

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

  • проверка логического следования между предпосылкой и гипотезой
  • поиск противоречий между двумя утверждениями
  • классификация пар текстов по отношению следования, противоречия и нейтральности
  • классификация текста по пользовательским категориям методом zero-shot

Ограничения

Модель обучена преимущественно на русских переводах англоязычных наборов NLI, поэтому качество может зависеть от жанра и естественности формулировок. Контекст ограничен 512 токенами; результаты таблицы README приведены по dev-наборам, а не гарантируют качество на произвольных данных.

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

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

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

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

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

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

Открыть на Hugging Face

RuBERT for NLI (natural language inference)

This is the DeepPavlov/rubert-base-cased fine-tuned to predict the logical relationship between two short texts: entailment, contradiction, or neutral.

Usage

How to run the model for NLI:

# !pip install transformers sentencepiece --quiet
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification

model_checkpoint = 'cointegrated/rubert-base-cased-nli-threeway'
tokenizer = AutoTokenizer.from_pretrained(model_checkpoint)
model = AutoModelForSequenceClassification.from_pretrained(model_checkpoint)
if torch.cuda.is_available():
    model.cuda()

text1 = 'Сократ - человек, а все люди смертны.'
text2 = 'Сократ никогда не умрёт.'
with torch.inference_mode():
    out = model(**tokenizer(text1, text2, return_tensors='pt').to(model.device))
    proba = torch.softmax(out.logits, -1).cpu().numpy()[0]
print({v: proba[k] for k, v in model.config.id2label.items()})
# {'entailment': 0.009525929, 'contradiction': 0.9332064, 'neutral': 0.05726764} 

You can also use this model for zero-shot short text classification (by labels only), e.g. for sentiment analysis:

def predict_zero_shot(text, label_texts, model, tokenizer, label='entailment', normalize=True):
    label_texts
    tokens = tokenizer([text] * len(label_texts), label_texts, truncation=True, return_tensors='pt', padding=True)
    with torch.inference_mode():
        result = torch.softmax(model(**tokens.to(model.device)).logits, -1)
    proba = result[:, model.config.label2id[label]].cpu().numpy()
    if normalize:
        proba /= sum(proba)
    return proba

classes = ['Я доволен', 'Я недоволен']
predict_zero_shot('Какая гадость эта ваша заливная рыба!', classes, model, tokenizer)
# array([0.05609814, 0.9439019 ], dtype=float32)
predict_zero_shot('Какая вкусная эта ваша заливная рыба!', classes, model, tokenizer)
# array([0.9059292 , 0.09407079], dtype=float32)

Alternatively, you can use Huggingface pipelines for inference.

Sources

The model has been trained on a series of NLI datasets automatically translated to Russian from English.

Most datasets were taken from the repo of Felipe Salvatore: JOCI, MNLI, MPE, SICK, SNLI.

Some datasets obtained from the original sources: ANLI, NLI-style FEVER, IMPPRES.

Performance

The table below shows ROC AUC (one class vs rest) for five models on the corresponding dev sets:

  • tiny: a small BERT predicting entailment vs not_entailment
  • twoway: a base-sized BERT predicting entailment vs not_entailment
  • threeway (this model): a base-sized BERT predicting entailment vs contradiction vs neutral
  • vicgalle-xlm: a large multilingual NLI model
  • facebook-bart: a large multilingual NLI model
modeladd_one_rteanli_r1anli_r2anli_r3copafeverhelpiieimppresjocimnlimonlimpescitailsicksnliterratotal
n_observations38710001000120020020474335531232766193919647269100021265009831307101128
tiny/entailment0.770.590.520.530.530.900.810.780.930.810.820.910.810.780.930.950.670.77
twoway/entailment0.890.730.610.620.580.960.920.870.990.900.900.990.910.960.970.970.870.86
threeway/entailment0.910.750.610.610.570.960.560.610.990.900.910.670.920.840.980.980.900.80
vicgalle-xlm/entailment0.880.790.630.660.570.930.560.620.770.800.900.700.830.840.910.930.930.78
facebook-bart/entailment0.510.410.430.470.500.740.550.570.600.630.700.520.560.680.670.720.640.58
threeway/contradiction0.710.640.610.971.000.770.920.890.990.980.85
threeway/neutral0.790.700.620.910.990.680.860.790.960.960.83

For evaluation (and for training of the tiny and twoway models), some extra datasets were used: Add-one RTE, CoPA, IIE, and SCITAIL taken from the repo of Felipe Salvatore and translatted, HELP and MoNLI taken from the original sources and translated, and Russian TERRa.

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

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

GPU в ailist

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

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

Подбираем GPU…

Класс архитектуры
BertForSequenceClassification
Ревизия весов
920cbb5

0 моделей