Подход к многоклассовой классификации текста

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

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

Мотивация

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

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

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

Данные обучения

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

Классификация текстов - это форма обучения с учителем. Цель состоит в том, чтобы разбить весь текст на компоненты и определить шаблоны для автоматического создания правил. Для этого набор учебных документов с рядом известных категорий служит правилами, которые генерируют классификаторы. В конце этого процесса любой другой документ должен попадать в нужную категорию. Используя набор обучающих данных D = {d1, d2, d3,…, dn} с известными категориями C = {c1, c2, c3,…, cn}, мы спрогнозируем категорию нового немаркированного документа q.

Но как нам различать слова? Как объяснялось выше, основная концепция алгоритма - это поиск слов, которые семантически символичны для отрасли. В том-то и дело, что есть как простые, так и сложные слова. Под простыми мы подразумеваем слова, которые вездесущи в различных типах текста, тогда как сложные слова более характерны для одной темы и имеют большое отношение к тематическому содержанию конкретной области, области или дисциплины. Без необходимости обрабатывать весь текст, чтобы вручную определить отраслевую категорию, в которую он попадает, есть несколько слов, которые служат обозначениями для каждой отрасли (обозначенные). Например, такие слова, как «ноутбук» часто встречаются в сфере технологий, а «футболка» - в моде, поэтому эти слова стали предметом нашего исследования.

Методология

Сбор данных

Первый шаг - собрать наши данные из Интернета. Чтобы извлекать информацию с веб-сайтов, мы должны создать веб-парсер, который будет извлекать и собирать с них полезную информацию. Python упрощает извлечение данных из файлов HTML и XML с помощью таких фреймворков для парсинга, как Beautiful Soup, Cola, Pyspyder и Scrapy.

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

Обработка текста

Очистка / стандартизация и обработка данных - ключевой элемент машинного обучения. Чтобы уменьшить «шум» наших данных и повысить качество обучения, мы должны удалить теги HTML, а затем перейти к методам обработки естественного языка (NLP). Для этого мы используем библиотеку NLTK от Python. Сначала мы токенизируем текст, то есть разбиваем текст на независимые слова. Затем мы удаляем стоп-слова, такие как «и», «the» и т. Д., Которые имеют меньший вес как означающие. Наконец, мы устраняем каждое слово, удаляя или заменяя префиксы и суффиксы слов, чтобы найти общий корень слов и уменьшить размер нашего словарного запаса.

Мешок слов

Теперь, когда мы собрали ряд слов, следующий шаг - уменьшить сложность помеченного набора и извлечь полезную информацию. Этого можно достичь, построив матрицу слов (представленных столбцами) и документов (представленных строками) . Самый простой и эффективный способ выполнить эту задачу - использовать Пакет слов (BoW) с tf-idf (частота термина - обратная частота документа). В частности, мы используем взвешенный BoW, поскольку обычно BoW присваивает словам 0,0 или 1,0, тогда как нам нужны разные веса для измерения релевантности для той или иной отрасли.

Вот почему модель BoW является очень распространенным решением проблем обработки естественного языка (NLP). Идея состоит в том, чтобы представить каждый документ в BoW (: vector) и классифицировать разные векторы вместе на основе их сходства.

BoW берет все уникальные слова в документе и помещает их в список. Затем Tf-idf работает как числовое измерение, которое оценивает важность слова в наборе документов и присваивает значения от 0,0 до 1,0, соответственно, для менее важных слов наиболее важным.

Уменьшение размерности

Чтобы избежать переобучения, а именно, что модель цепляется за обучающие данные и не может самостоятельно стоять за пределами обучающей выборки, мы должны уменьшить размерное пространство признаков нашей выборки. В то же время мы должны хранить наиболее ценную и актуальную информацию, чтобы улучшить масштабируемость, эффективность и точность нашего классификатора. Именно здесь на помощь приходит декомпозиция по сингулярным значениям (SVD). Мы выполняем SVD на нашем обучающем наборе, чтобы перейти от n функций к k функциям (с n ›k), где n - все слова в словаре, а k наиболее важные слова.

Ниже мы видим наши отраслевые кластеры после СВД:

Классификация

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

Мы предпочли «вероятностную» классификацию «жесткой» классификации, поэтому мы спрогнозировали вероятность принадлежности клиента к отрасли и оценили результаты классификации по трем пороговым значениям вероятности, а именно 60, 70 и 80% вероятности.

Оценочная таблица

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

Модель

Заключение

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