Простой способ создать классификатор текста с помощью Prevision.io

В этом посте мы покажем, как всего за несколько минут платформа Prevision.io может выполнять автоматическую обработку естественного языка и классификацию текста.

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

К счастью, Prevision.io обеспечивает автоматическую обработку текстовых функций, предлагая набор текстовых преобразователей, которые будут работать автоматически, при этом решая все упомянутые нами проблемы: автоматическое определение языка, различные типы кодирования (кодирование на основе метрик, wor2vec). кодирование и встраивание предложений), а также различные типы моделей.

Мы начнем с получения набора данных kaggle под названием Real or Not? NLP with Disaster Tweets и показать, как запустить эксперимент с классификацией текста с помощью Prevision.io, сначала с пользовательским интерфейсом, а затем с помощью Prevision.io SDK для нас, программистов 🤓. Вариант использования классификации состоит в том, чтобы предсказать, относится ли данный твит к реальной катастрофе или нет.

Эксперимент по классификации текста с пользовательским интерфейсом Prevision.io

1- Создайте новый проект или используйте существующий

Как только вы подключитесь к своему экземпляру Prevision.io, нажмите кнопку в правом верхнем углу экрана домашней страницы, чтобы создать новый проект, вы можете настроить имя своего проекта и добавить небольшое описание (необязательно) :

Пример:

2- Импортируйте свой набор данных

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

Затем выберите опцию «Импорт набора данных» и загрузите набор данных со своего компьютера:

3- Запустить новый эксперимент

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

3.1- Основные настройки

Для основных настроек мы должны установить основные настройки: выбрать предварительно загруженный набор данных, добавить краткое описание (необязательно, но рекомендуется, особенно если это совместный проект) зафиксировать цель (здесь для эксперимента по классификации это должен быть бинарная функция, которая сообщает, является ли это настоящей катастрофой или нет), исправить, если есть функция ID или нет (прогнозы будут применяться по идентификатору, определенному этой функцией)…

3.2- Конфигурация столбцов

В этом разделе объекты, которые уже были выбраны, затенены, но вы отмените выбор других.

3.3- Модели

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

В качестве первого варианта мы выберем для примера эти модели:

3.4- Разработка функций

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

  • Преобразование на основе статистического анализа (TF-IDF): слова сопоставляются с числами с помощью tf-idf. Платформа имеет встроенные быстрые алгоритмы, позволяющие сохранять все униграммы, биграммы и триграммы в кодировке tf-idf, а затем автоматически применять эффективный алгоритм уменьшения размерности, позволяющий ускорить задачу моделирования.
  • Преобразование встраивания слов: слова проецируются в плотное векторное пространство, где сохраняется семантическое расстояние между словами: Prevision.io обучает алгоритм word2vec на фактическом входном корпусе для создания соответствующих векторов.
  • Встраивание предложений: Prevision.io интегрировала преобразователи на основе BERT в качестве предварительно обученной контекстной модели, которая фиксирует отношения слов двунаправленным образом. Преобразователь BERT позволяет генерировать более эффективные векторы, чем алгоритмы встраивания слов, он имеет собственное лингвистическое «представление». Кроме того, мы интегрировали несколько пакетов: базовый пакет для английского языка и многоязычный пакет для других языков. Каждое слово представлено вектором, который зависит от языка и контекста, затем мы используем эти векторные представления с захватом контекста в качестве входных данных для базовых классификаторов для выполнения эффективной классификации текста.

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

Эксперимент по классификации текста с SDK Prevision.io

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

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

1- Подключиться к экземпляру

import previsionio as pio
import pandas as pd
URL = 'https://cloud.prevision.io'
TOKEN = my_token
# initialize client workspace
pio.prevision_client.client.init_client(URL, TOKEN)

2- Создайте набор данных Prevision.io из кадра данных pandas.

# use an existing project from id
p = pio.Project.from_id(existing_project_id) 
# please make sure to update with your project ID
# create a dataset from a local dataset
## read csv
df = pd.read_csv('tweets_disaster.csv')
## create prevision dataset
train = p.create_dataset('tweets_dataset_from_sdk', dataframe=df)

3- Настройте и запустите эксперимент

Настройка ниже аналогична тому, что мы выбрали ранее с пользовательским интерфейсом:

# experiment config
col_config = pio.ColumnConfig(target_column=’target’, id_column=’id’)
# config use case profile
experiment_config = pio.TrainingConfig(profile=’quick’,
simple_models=[], normal_models=[‘CB’], advanced_models=[‘CB’], with_blend=False, features=[“text_tfidf”, “text_word2vec”, “text_embedding”, “tenc”, “Counter”])
# launch a new experiment
exp = p.fit_classification(experiment_name=’tweets_classification_sdk’, metric=’auc’, dataset=train, column_config=col_config, training_config=experiment_config)

Заключение

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

Спасибо, что дочитали мой пост до конца 🤗! Я надеюсь, что это было полезно! В следующем посте я покажу вам, как использовать платформу Prevision.io AutoML в соревновании по машинному обучению.