Создайте конвейер NLP для задачи контролируемой классификации текста
Эта статья основана наAdi Shalevсо мной на 2021 годCodeFestСоздал мастерскую.
В области науки о данных, особенно при первых шагах в области НЛП, мы часто сталкиваемся с совершенно новым набором терминов и словосочетаний: «соответствие», «преобразование», «вывод», «измерение» и т. на . Хотя существующие источники информации позволяют понять эти термины, не всегда ясно, как эти различные инструменты в конечном итоге объединяются, чтобы сформировать производственную систему, основанную на машинном обучении, которую мы можем использовать с новыми данными.
Упорядоченный набор этапов, которые должны перейти от размеченного набора данных к созданию классификатора, который можно применять к новым образцам (так называемая контролируемая классификация машинного обучения), называется конвейером НЛП.
В этом посте мы создадим такой конвейер для задачи контролируемой классификации: классифицировать, является ли фильм театральным фильмом, на основе его описания. Полный код можноэто здесьоказаться.
Конвейер NLP для контролируемой классификации машинного обучения — что это, черт возьми, такое?
Мы начинаем наше путешествие с набора данных, таблицы текстовых записей известных классификаций. Наши данные подобны потоку воды, который мы хотим использовать для создания продуктов. Для этого мы создадим конвейер: многоэтапную систему, в которой каждый этап получает входные данные от предыдущего этапа и передает свои выходные данные в качестве входных данных на следующий этап.
Наш пайплайн будет состоять из следующих этапов.
Источник изображения: автор
Хотя то, как мы строим каждый этап, зависит от разных задач, каждый из этих этапов играет роль в нашем конечном продукте — блестящем текстовом классификаторе.
данные
Данные, которые мы будем использовать, основаны на Kaggle.этот набор данных фильма. Мы будем использовать эти данные, чтобы определить, относится ли фильм к жанру драмы, да или нет, что является проблемой бинарной классификации. Наши данные представляют собой кадр данных pandas с 45466 записями, после удаления записей NULL это 44512.
1. Изучите данные
Всякий раз, когда мы начинаем работать с новым набором данных, мы должны понимать наши данные, прежде чем мы сможем перейти к принятию проектных решений и созданию моделей. Давайте ответим на некоторые вопросы о нашем наборе данных.
- Как выглядит обзор?
Поскольку мы хотим использовать обзоры, чтобы определить, является ли фильм театральным фильмом, давайте посмотрим на некоторые обзоры.
- Как долго эти обзоры? Самый длинный обзор? Самый короткий обзор?
medium.com/Media/7 Не голоден 39…
- Сколько у нас театральных фильмов?
- Какие слова чаще всего встречаются в отзывах? В конкретном типе обзора?
medium.com/Media/ В конце концов, 93 — это не…
Этап изучения данных важен для следующих этапов, поскольку он дает нам информацию, необходимую для принятия решений на следующих этапах.
- Все остальное, что поможет нам лучше понять наш набор данных!
2. Очистка и предварительная обработка данных
Теперь, когда мы лучше понимаем данные в наших руках, мы можем перейти к очистке данных. Цель этого этапа — удалить ненужные части данных, прежде чем мы используем данные для создания модели. Определение «нерелевантных частей» варьируется в зависимости от разных задач и наборов данных, и лучший подход можно найти экспериментально в реальных задачах.
- удалить записи короче 10
Во время исследования данных мы заметили, что некоторые обзоры были короткими. Поскольку мы хотим использовать описания для категоризации жанров, мы можем удалять записи длиной менее 15, так как резюме, содержащее такое малое количество символов, может быть неинформативным.
- убрать знаки препинания
Поскольку мы хотим уловить разницу между словами, описывающими театральные фильмы, и словами, описывающими другие фильмы, мы можем удалить пунктуацию.
medium.com/Media/2Количество 95…
- Фраза
Лемматизация используется для группировки различных флективных форм слова, чтобы анализировать их как единое целое. Давайте посмотрим на пример.
Теперь мы можем лексикализировать наши данные.
medium.com/Media/4 сделал 7 из 5…
После очистки и предварительной обработки наш текст готов к преобразованию в функции.
3. Тренировочный тестовый сплит
Перед созданием модели мы должны разделить наши данные на обучающую и тестовую выборки. Обучающий набор будет использоваться для «обучения» модели, а тестовый набор будет использоваться нами для оценки того, насколько хороша наша модель. В реальных сценариях мы обычно также выделяем проверочный набор, который можно использовать для настройки гиперпараметров.
Код ниже разделен. Другие примеры можно найти [здесь](SCI kit-learn.org/stable/Modu… SCI kit-learn.org/stable/Modu…
medium.com/Media/91 отправляет 7 oh…
4. Разработка функций
На этом этапе нашего конвейера мы уже знакомы с нашими текстовыми данными, которые являются «чистыми» и предварительно обработанными. Все-таки это текст. Поскольку нашей конечной целью является обучение классификатора нашим данным, пришло время преобразовать наш текст в формат, который могут обрабатывать и изучать алгоритмы машинного обучения, также известный как _"векторы"_.
Существует множество способов кодирования текстовых данных в векторы: от простых интуитивно понятных методов до современных методов на основе нейронных сетей. Давайте посмотрим на некоторые из них.
вектор счета
Опишите текст как вектор, в котором мы сохраняем количество вхождений каждого слова в нашем словаре. Мы можем выбрать длину вектора, которая также будет размером нашего словаря.
Ты сможешьэто здесьУзнайте больше о векторах счета и различных параметрах, используемых при их создании.
medium.com/Media/ах 6 ой ой 7…
Вектор TF-IDF
Используя векторы TF-IDF, мы можем решить проблему, возникающую при использовании счетных векторов: бессмысленные слова, которые появляются в текстовых данных несколько раз. При создании вектора TFIDF мы умножаем количество вхождений каждого слова в словарь на коэффициент, который отмечает, насколько часто это слово встречается в других документах нашего корпуса. Таким образом, слова, которые появляются во многих документах нашего корпуса, получат меньшие значения в нашем векторе признаков.
Ты сможешьэто здесьУзнайте больше о векторах TF-IDF и различных параметрах, используемых при их создании.
5. Моделирование
После использования векторизатора наши обзоры фильмов больше не представлены в виде текста, а в виде векторов, что позволяет нам использовать наши данные для обучения модели.
Теперь мы можем использовать наш обучающий набор для обучения модели. Здесь мы тренируемсяМультифорк, как Байеса,ноScikit-LearnАналогичным образом можно применять и многие другие алгоритмы, и при решении новой задачи мы склонны рассматривать более одного алгоритма.
6. Оценка
После обучения модели мы хотим оценить, насколько хорошо она работает с новыми данными. По этой причине мы разделили наши данные и зарезервировали тестовый набор. Теперь мы будем использовать прогнозы нашей модели на тестовом наборе для оценки нашей модели.
Мы создадимматрица путаницы.
Матрица путаницы для бинарной классификации
Теперь мы можем использовать значения, созданные матрицей путаницы, для вычисления некоторых других метрик.
medium.com/Media/6 из 2 ах ах…
Часто наша первая попытка построить модель не будет иметь удивительных показателей. Это хорошее время, чтобы вернуться к начальным этапам и попробовать сделать что-то немного другое.
7. Вывод — используйте нашу модель на новых образцах
После использования наших данных для создания модели для решения нашей проблемы классификации того, является ли фильм театральным фильмом на основе его профиля, и оценки нашей модели, мы можем использовать ее для определения новых образцов —Драма или не драма?
medium.com/Media/09 Плохие законы…
Поскольку у нашего исходного обзора есть история до того, как его использовали для обучения/оценки нашей модели, нам нужно обрабатывать наши новые образцы таким же образом.
Теперь мы можем использовать нашу модель, чтобы предсказать тип нашего нового образца.
Наш прогноз сбылся!
Суммировать
В этом посте мы создаем конвейер для задачи контролируемой классификации текста. Наш пайплайн состоит из нескольких частей, которые соединены между собой (как настоящий пайплайн!). Мы надеемся, что эта статья помогла вам понять роль каждой части процесса в создании конечного продукта — классификатора текстов.