Скрытое распределение Дирихле, полученное из Gensim

Обработка естественного языка

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

В этой статье мы продемонстрируем создание модели для тематического моделирования, а затем применение метода скрытого распределения Дирихле (LDA) с использованием набора данных Tinder Google Play Reviews, чтобы оценить, какие идеи мы получили. может собраться.

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

Для этой модели мы применим технику LDA с Gensim. Помимо построения модели мы обсудим:

  1. Как работает LDA?
  2. Как это можно использовать в контролируемом обучении?
  3. Как интерпретировать результаты?

Часть 1. Как работает LDA?

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

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

Каждая тема может быть представлена ​​в виде векторов, каждый вектор в виде документа будет представлять собой измерение в нашем пространстве, где наши значения будут составлять в сумме 1, измеряя процент частоты распределения слова, таким образом, LDA — это распределение распределение.

Вот изображение для более наглядного примера:

Как это можно использовать в обучении с учителем?

Здесь мы начнем процесс построения модели, начиная со следующего импорта, используя библиотеку Gensim и методы предварительной обработки.

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

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

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

Токенизация

Один из первых шагов, которые мы предпринимаем при работе с языковой моделью (LM), — это токенизация текста в строки или байты, которые затем называются токенами.

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

Далее мы удалим некоторые стоп-слова, наиболее часто встречающиеся в наших данных, с помощью метода simple_process.

Лемматизация

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

Мешок слов

После завершения создания наших лемм мы можем теперь перейти к получению представления Bag of Words с использованием метода id2word.doc2bow, который присваивает значение по всему корпусу каждому слову и частоте, с которой это слово встречается в документе.

Далее мы добавим функцию filter_extremes, настроенную на удаление токенов с частотой значений не менее 3 символов и просмотренных более 95% всего корпуса.

Скрытое распределение Дирихле

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

Здесь мы создаем экземпляр нашей gensim.models.lda_multicore функции с нашими параметрами, для num_topics которых установлено значение 20, а для нашего chunksize — 90, для 20 — passes, а для нашего workersat 12 — использование всех наших ядер при запуске модели.

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

Часть 3: Интерпретация результатов LDA

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

Присвоение наших значений согласованности с start из 2 тем, до limit из 40 тем с step из 6 интервалов. Мы также могли бы включить наш параметр passes, для которого мы не хотели бы, чтобы он был слишком низким, потому что он не будет обучаться полезным представлениям, слишком высоким, тогда мы будем тратить ресурсы впустую.

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

Давайте создадим лучший формат для удобства чтения.

Визуализации

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

Заключение

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

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

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

  • Близость пользователя/клиента — знание пользовательских предпочтений, ориентация пользователей на более персонализированный опыт. В дополнение к тематическому моделированию мы также можем включить Анализ настроений для определения эмоционального значения в корпусе текста.
  • Удержание пользователей/клиентов — Основываясь на понимании того, что пользователи предпочитают в контексте статистически значимых оценок отзывов, компания может создавать более прямой маркетинг для различных целевых групп пользователей.

Будь то Тематическое моделирование, Классификация текста, Анализ настроений, OCR или любой другой алгоритм НЛП, его возможности широки и глубоки, а также очень увлекательны!

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

Ресурсы

  • Gensim: пакет Python для тематического моделирования, nlp, векторизации слов и некоторых других вещей. Ухоженный и хорошо документированный.
  • Тематическое моделирование с помощью Gensim: своего рода кулинарная книга для LDA с помощью gensim. Отличный обзор, но вам нужно знать об отсутствующих операторах импорта и предполагаемых предварительных знаниях.
  • PyLDAvis: библиотека для визуализации тематической модели и выполнения некоторой исследовательской работы. Работает хорошо. Также имеет прямую параллельную реализацию в R.