Всем привет,

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

Загрузить данные

Прежде всего, нам нужны секретные данные, чтобы сделать это. Для этого мы будем использовать этот секретный набор данных. Набор данных содержит 7613 твитов, которые были отмечены как связанные с реальными бедствиями. В этих данных 5 столбцов. Важными из них являются столбцы текст и цель. Столбец текст включает текст твита, а целевой столбец указывает, относится ли текст к реальной катастрофе. Используя данные, мы создадим мультиклассовый классификатор с Fasttext и Doc2vec.

Давайте загрузим данные и посмотрим на них.

Чистый текст

Как видно в колонке «текст» есть некоторые нежелательные символы, поэтому перед началом процесса сборки колонку «текст» следует очистить от некоторых символов. Я удалю следующий список персонажей:

  • Знаки препинания
  • Числовые символы
  • Стоп-слова, такие как я, мне и т. д.
  • Символ новой строки: «\n»

Напишем чистый код и увидим разницу:

Разделить данные

Теперь, когда основная колонка очищена, можно начинать процесс обучения. Как мы знаем из всех моделей машинного обучения, для расчета успешности модели все обучающие данные необходимо разделить на 2 части: обучение и тестирование. Функция train_test_split библиотеки sklearn будет использоваться для процесса разделения. Как правило, 20% всех данных будут тестовыми данными. Код разделения можно увидеть ниже:

Подготовить данные о поездах

Я буду использовать контролируемую модель библиотеки fasttext и модель doc2vec библиотеки gensim. Чтобы использовать столбец «cleaned_text» в этих моделях, мы должны подготовить его в нужном формате. Подготовим оба формата по очереди.

  • Контролируемая модель Fasttext

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

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

  • Модель Doc2Vec

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

Как вы можете видеть выше, эта функция добавляет цель в качестве тега к каждому тексту.

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

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

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

Прогнозировать тестовые данные

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

Массив в результате быстрого текста представляет вероятность предсказанного тега. Второе значение в результате doc2vec представляет собой расстояние от вектора прогнозируемой метки до вектора текста. Другими словами, мы хотим, чтобы значение массива было высоким в выводе fasttext, в то время как мы хотим, чтобы оно было низким в выводе doc2vec.

Теперь давайте сделаем наши прогнозы для всех тестовых данных и сравним значения успеха.

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