Нет данных? Без проблем! На помощь приходят модели классификации текста с нулевым выстрелом.

В августе 2019 года команда из Пенсильванского университета предложила способ предварительной подготовки моделей логического вывода на естественном языке в качестве моделей классификации текста с нулевым выстрелом [1]. Затем Facebook AI доработал и выпустил модель bart-large, оптимизированную для этой задачи, которую мы будем использовать в этом руководстве [2].

Цель

Мы завершим мини-проект по демонстрации моделей классификации текста с нулевым выстрелом. В этом проекте мы будем классифицировать текст по одной из двух категорий: текст о путешествиях и текст о работе. Мы сделаем это без использования каких-либо обучающих данных.

Установка

Во-первых, мы собираемся установить библиотеку трансформеров Hugging Face

pip install transformers

Создание

Мы будем использовать класс Pipeline от Hugging Face, чтобы создать наш классификатор. Для этого класса требуется два входа: задача и модель. Параметр task - это строка, указывающая, какую задачу мы будем выполнять. Список потенциальных задач можно найти здесь. Для наших целей мы будем использовать строку классификация с нулевым выстрелом. Затем параметр model указывает, какую модель нулевого выстрела мы хотим использовать. Список потенциальных моделей можно найти здесь. Мы будем использовать модель под названием facebook / bart-large-mnli, которая на данный момент является самой загружаемой моделью.

from transformers import pipeline
task = "zero-shot-classification" 
model = "facebook/bart-large-mnli" 
classifier = pipeline(task, model)

использование

Давайте сначала создадим два тестовых примера, каждый из которых будет содержать текст, указывающий на одну из двух категорий.

text_travel = "Let's book a flight to the Bali" 
text_work = "I have to code late tonight on the new sofware update"

Теперь мы создадим список категорий, по которым мы будем классифицироваться. Не стесняйтесь добавлять в список другие категории.

labels = ["travel", "work"]

Отсюда мы можем приступить к классификации текста. В объекте классификатора укажите текст, который будет классифицирован для первого параметра, и список меток для второго параметра.

result_travel = classifier(text_travel, labels) 
print(result_travel)

Вывод: {‘sequence’: «Давайте забронируем рейс на Бали», «label»: [«travel», «work»], «scores»: [0,9847909808158875, 0,01520907785743475]}

Классификатор возвращает словарь с тремя ключами:

последовательность: текст, который был классифицирован

label: ярлыки, которые были предоставлены в порядке наивысшего балла.

оценки: оценки в порядке убывания.

В приведенном ниже коде показано, как извлечь метку с наивысшей оценкой вместе с ее уважаемой оценкой.

result_work = classifier(text_work, labels) 
print(result_work["labels"][0])
print(result_work["scores"][0])

Вывод:

путешествия

0.9847909808158875

Давайте повторим этот процесс, но для другой категории.

result_work = classifier(text_work, labels) print(result_work["labels"][0])
print(result_work["scores"][0])

Вывод:

работа

0.9939967393875122

Вывод

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

Если вы заинтересованы в реализации обычных моделей классификации текста, то я предлагаю вам попробовать Happy Transformer. Happy Transformer позволяет реализовать и обучить модели классификации текста с помощью всего нескольких строк кода.

Не забудьте подписаться на информационный бюллетень Vennify AI, чтобы получать больше подобных статей!

YouTube

Подпишитесь на нас на YouTube, чтобы смотреть новые видео по НЛП.

Колаб

Код из этого руководства: https://colab.research.google.com/drive/1qBpngUcmMBCRb9f_KvBTGuAgOLmFX9rh?usp=sharing

использованная литература

[1] https://arxiv.org/abs/1909.00161

[2] https://huggingface.co/facebook/bart-large-mnli

Первоначально опубликовано на https://www.vennify.ai 7 мая 2021 г.