1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/modelee-bart-large-mnli

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 4.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 09:00 d4aa8d5

bart-large-mnli

Это контрольная точка для bart-large после обучения на наборе данных MultiNLI (MNLI).

Дополнительная информация об этой модели:

Классификация текста на основе NLI с нулевым выстрелом

Yin et al. предложили метод использования предварительно обученных моделей NLI в качестве готовых классификаторов последовательностей с нулевым выстрелом. Метод работает путём представления классифицируемой последовательности в виде предпосылки NLI и создания гипотезы из каждой возможной метки. Например, если мы хотим оценить, принадлежит ли последовательность классу «политика», мы можем создать гипотезу «Этот текст о политике». Затем вероятности для вывода и противоречия преобразуются в вероятности меток.

Этот метод удивительно эффективен во многих случаях, особенно при использовании более крупных предварительно обученных моделей, таких как BART и Roberta. См. этот блог-пост (https://joeddav.github.io/blog/2020/05/29/ZSL.html) для более подробного введения в этот и другие методы с нулевым выстрелом, а также примеры кода ниже для использования этой модели для классификации с нулевым выстрелом как с помощью встроенного конвейера Hugging Face, так и с использованием собственного кода Transformers/PyTorch.

С помощью конвейера классификации с нулевым выстрелом

Модель можно загрузить с помощью конвейера «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)
#{'labels': ['travel', 'dancing', 'cooking'],
# 'scores': [0.9938651323318481, 0.0032737774308770895, 0.002861034357920289],
# 'sequence': 'one day I will see the world'}

Если более одной метки кандидата может быть правильной, передайте multi_label=True, чтобы вычислить каждый класс независимо:

candidate_labels = ['travel', 'cooking', 'dancing', 'exploration']
classifier(sequence_to_classify, candidate_labels, multi_label=True)
#{'labels': ['travel', 'exploration', 'dancing', 'cooking'],
# 'scores': [0.9945111274719238,
#  0.9383890628814697,
#  0.0057061901316046715,
#  0.0018193122232332826],
# 'sequence': 'one day I will see the world'}

Вручную с PyTorch

# pose sequence as a NLI premise and label as a hypothesis
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}.'

# 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]

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/modelee-bart-large-mnli.git
git@api.gitlife.ru:oschina-mirror/modelee-bart-large-mnli.git
oschina-mirror
modelee-bart-large-mnli
modelee-bart-large-mnli
main