Пролог:

Зачем это делать..?

Потратив безбожное количество часов на поиск подходящего примера «НЛП для многоклассовой классификации», я просто отказался от его поиска и решил сделать все сам.

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

Лучшая возможная причина, которую я могу придумать для отсутствия классификации по нескольким классам, заключается в том, что никто не хочет быть связанным с классификатором, который имеет точность около 70%, мы скоро увидим, что на самом деле это не так уж ужасно, поскольку мы используем данные групп новостей. набор около 20 категорий, получение правильного ответа примерно в 70% случаев — это нормально… неплохо…

Основная история (эм… лог..?):

Обзор местности: ближе всего к готовому ответу на проблему многоклассовой классификации в НЛП мне удалось получить https://www.analyticsvidhya.com/blog/2018/11/tutorial-text-classification-ulmfit. -фастай-библиотека/»

и здесь… на этом шаге проблема преобразуется в двоичный код…

Пара примеров на основе Берта…

https://medium.com/swlh/a-simple-guide-on-using-bert-for-text-classification-bbf041ac8d04

https://www.kaggle.com/thebrownviking20/bert-multiclass-classification

https://towardsdatascience.com/beginners-guide-to-bert-for-multi-classification-task-92f5445c2d7c

Возможно, позже я соберу что-нибудь на их основе… а пока давайте начнем… с ULMFiT.

Я не буду сильно отклоняться от кода, изложенного в ::

https://github.com/fastai/course-v3/blob/master/nbs/dl1/lesson3-imdb.ipynb

Подготовьте данные так…

Создайте языковую модель и сохраните кодировщик вот так.

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

Хотя это все, что нужно для создания вашего многоклассового классификатора с использованием fastai, имейте в виду, что это минимальный минимум для обучения и запуска модели, в реальной жизни это становится немного сложнее, обязательно сохраните и загрузите свой объект обучения. после каждого основного этапа обучения я опустил это для краткости.

И используйте следующее, чтобы блокнот Google Colab не отключился…

Этот классификатор имеет точность около 71% из 20 категорий, а ранг 3 (правильный ответ находится в первых 3 прогнозах) составляет около 84%.

Конечно, это далеко от точности от 95 до 99,99999%, которой хвастаются модели SOTA, в задачах ДВОИЧНОЙ КЛАССИФИКАЦИИ… это все еще приемлемо для большинства бизнес-потребностей.

Эпилог:

Вот ссылка на итоговый блокнот:



Я сказал «окончательный»… Итак, были и другие версии, которые были гораздо менее отточены, чем эта… Специалисты по продажам и предпродажной подготовке могут понять, сколько усилий требуется, чтобы добиться такой же отточенной презентации, как та, которую Джереми Ховард дает в своем лекции.

Примечания для ног:

Где-то есть поговорка: «Дайте публичное обещание… и, скорее всего, вы его сдержите», так что вот…

Приближается: просто для удовольствия

Эквивалент на основе h20

Обычный старый эквивалент на основе sklearn

На основе Берта (я собираюсь r̶i̶p̶ ̶o̶f̶f̶̵ погрузиться в код Hugging face :D )

проводник на основе эликсира для неправильно классифицированных предметов [даже не уверен, что это сработает]