Пошаговое руководство по созданию классификатора текста

Введение

Как специалисты по данным, мы знакомы со стандартными библиотеками Python, используемыми для построения алгоритмов машинного обучения. Высока вероятность того, что вы использовали pandas, NumPy, sci-kit Learn, TensorFlow или PyTorch для создания моделей, а затем такие инструменты, как Docker, Kubernetes и крупных облачных провайдеров, для их развертывания и обслуживания. Это отличные инструменты, и они обеспечивают большую гибкость для инженеров, но чаще всего соединить все части не так просто. В конце концов, от сбора первоначальных данных до создания моделей и их окончательного запуска в производство уходят недели.

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

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

Давайте начнем.

Постановка задачи — классификация текста

В этом уроке мы создадим классификатор текста, чтобы различать три категории: политика, здоровье и развлечения. Для обучения модели мы будем использовать относительно небольшую выборку из 298 объектов, распределенных следующим образом:

  • ПОЛИТИКА 142 экземпляра
  • ЗДОРОВЬЕ 80 экземпляров
  • РАЗВЛЕЧЕНИЯ 76 экземпляров.

Эти записи являются частью набора данных категории новостей, выпущенного по лицензии Attribution 4.0 International (CC BY 4.0) компанией Rishabh Misra. Вы можете скачать образец, необходимый для этого урока, отсюда.

Выберите базовую модель

В качестве основы для нашего классификатора мы будем использовать предварительно обученную модель Multilingual Large Transformer, доступную на платформе Toloka Machine Learning. Вы можете зарегистрироваться для получения бесплатной версии этого инструмента по этой ссылке. После этого у вас будет доступ к множеству предварительно обученных моделей машинного обучения в разделе Модели/Коллекции платформы.

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

В этом уроке мы будем использовать Multilingual Large Transformer, но вы можете поэкспериментировать с MultiClass Text Classification и сравнить результаты.

Вы можете попробовать его вывод в подсказке, набрав текст и изучив ответы моделей. Помните, что это результаты общей модели, и нам еще нужно будет ее настроить для нашей задачи.

Многоязычный Большой Трансформер имеет два варианта тонкой настройки в зависимости от ваших потребностей. Первый — тонкая настройка для генерации текста. В этом случае вам просто нужно предоставить текст, который будет использоваться для задачи, и в результате модель сможет выдать текст, аналогичный предоставленным вами данным.

Второй вариант — тонкая настройка модели для классификации текста и в качестве обучающих данных нужно предоставить примеры текстов и меток. Мы будем использовать этот вариант, так как наша задача — классифицировать новости. Чтобы продолжить тонкую настройку, просто нажмите на вкладку Tune Classifier в разделе модели, как показано на скриншоте ниже.

После этого вам будет предложено использовать существующий набор данных для тонкой настройки или создать новый. Если вы не использовали платформу раньше, вам нужно будет сделать последнее, поскольку у вас еще нет загруженного набора данных. Просто перейдите по ссылке «Создать набор данных», как показано на снимке экрана ниже.

Создать набор данных

Чтобы создать набор данных на платформе, вам необходимо загрузить CSV-файл с экземплярами, необходимыми для обучения классификатора. Вы также должны дать ему имя и краткое описание.

После создания набора данных вы должны увидеть его обзорную информацию, как показано на снимке экрана ниже:

Наборы данных имеют версии, и первой версии всегда присваивается расширение 0.0 к ее имени. Он соответствует необработанным данным, которые вы загрузили.

Вы можете аннотировать набор данных, нажав кнопку «пометить эту версию» рядом с версией набора данных (как показано на изображении выше). На первом этапе маркировки данных вас спросят, какой тип данных у вас есть. Мы работаем с текстом, поэтому выберите этот параметр и выберите столбцы, которые следует использовать в качестве текста и меток.

На следующем шаге вам будет предложено определить метки. В файле CSV, который мы предоставили при создании набора данных, уже было три разных класса с указанием ПОЛИТИКА, ЗДОРОВЬЕ и РАЗВЛЕЧЕНИЯ, и это должно автоматически подхватываться платформой.

Мы можем просто перейти к следующему шагу, поскольку мы будем использовать только эти классы.

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

Это время, когда вы можете проверить и исправить метки, если это необходимо, или если ваши тренировочные данные не имеют меток, которые вы бы добавили здесь.

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

Точная настройка существующей модели

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

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

На этом этапе вам также необходимо предоставить модели имя и краткое описание.

После этого нажмите кнопку «Выполнить сценарий» и запустится тонкая настройка. Когда закончите, вы сможете открыть модель и попробовать ее, используя подсказку.

Протестируйте модель

Давайте запустим вывод модели для текста. Вы можете просто ввести эту короткую фразу в приглашении модели:

«Президент США посетил Германию на прошлой неделе».

Это классифицируется как ПОЛИТИКА!

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

Кроме того, вы добились этого, используя всего 300 обучающих примеров, и на это ушло менее часа. Ваша модель идеальна? Вероятно, нет, нам придется проделать больше работы, чтобы улучшить ее, но удивительно, как быстро вы можете создавать прототипы и тестировать новые идеи машинного обучения с помощью этой платформы даже с немаркированным набором данных.

Если вы хотите использовать нашу модель сейчас, вы можете получить к ней доступ в любое время через раздел Модели/Коллекции платформы.

Дальнейшие улучшения

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

Опытные специалисты по машинному обучению, которые ищут более продвинутые функции и взаимодействуют с платформой с помощью кода, также не будут разочарованы. Библиотека Python для достижения этой цели скоро выйдет.

Сводка

В этой статье вы узнали, как быстро построить простую модель для задач классификации текста с помощью платформы Toloka ML. Я бы посоветовал вам адаптировать этот пример к вашим собственным потребностям, создав свой уникальный классификатор текста или модель анализа тональности.

Кроме того, вы можете поэкспериментировать с моделями, разработанными для других типов данных, таких как изображения или аудио.

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

PS: я пишу статьи, которые простым и понятным языком объясняют основные концепции Data Science на Medium и aboutdatablog.com. Вы можете подписаться на мой список адресов электронной почты, чтобы получать уведомления каждый раз, когда я пишу новую статью. А если вы еще не являетесь участником Medium, вы можете присоединиться здесь.

Ниже приведены некоторые другие публикации, которые могут вам понравиться: