Тематическое моделирование с использованием LDA

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

В этой статье мы увидим следующее:

  1. LDA
  2. Гиперпараметры в LDA
  3. LDA в Python
  4. Недостатки LDA
  5. Альтернатива

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

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

Некоторые из хорошо известных методов тематического моделирования:

  1. Скрытый семантический анализ (LSA)
  2. Вероятностный скрытый семантический анализ (PLSA)
  3. Скрытое распределение Дирихле (LDA)
  4. Коррелированная тематическая модель (CTM)

В этой статье речь пойдет о LDA.

Скрытое размещение Дирихле

LDA, сокращение от Latent Dirichlet Allocation, - это техника, используемая для тематического моделирования. Во-первых, давайте разберемся с этим словом и поймем, что означает LDA. Скрытое означает скрытое, то, что еще предстоит найти. Дирихле указывает, что модель предполагает, что темы в документах и ​​слова в этих темах соответствуют распределению Дирихле. Распределение означает давать что-то, в данном случае это темы.

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

На следующем рисунке документ состоит из 10 слов, которые можно сгруппировать в 3 разные темы, и у этих трех тем есть свои собственные описательные слова.

Общие шаги в LDA следующие

Гиперпараметры в LDA

В LDA есть три гиперпараметра

  1. α → коэффициент плотности документа
  2. β → коэффициент плотности тематического слова
  3. K → количество выбранных тем

Гиперпараметр α определяет количество ожидаемых тем в документе. Гиперпараметр β контролирует распределение слов по темам в документе, а K определяет, сколько тем нам нужно извлечь.

LDA в Python

Давайте посмотрим на реализацию LDA. Постараемся извлечь темы из набора обзоров.

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

Извлечение функций:

Этот шаг не имеет отношения к LDA, пожалуйста, пропустите векторизацию.

Во-первых, мы сделаем извлечение признаков, чтобы получить значимое представление о данных.

Мы извлекли следующие особенности

  1. Количество слов в документе
  2. Количество знаков в документе
  3. Средняя длина документа в слове
  4. Количество присутствующих стоп-слов
  5. Количество цифровых символов
  6. Количество символов верхнего счета
  7. Чувство полярности

Очистка и предварительная обработка данных:

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

  1. Все символы переведены в нижний регистр
  2. Расширены короткие формы, например Я → Я
  3. Убраны спецсимволы
  4. Удалены лишние и конечные пробелы
  5. Удалены символы с диакритическими знаками и заменены их альтернативными
  6. Лемматизировал слова
  7. Удалены стоп-слова

Векторизация:

Поскольку LDA имеет встроенный векторизатор TF-IDF, нам придется использовать векторизатор Count.

Скрытое размещение Дирихле:

В этом примере нам задано количество тем, поэтому нам не нужно настраивать гиперпараметр k, но в случаях, когда мы не знаем, сколько тем есть, мы можем использовать поиск по сетке.

Это можно сделать следующим образом

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

Мотивация для нашей модели следующая:

  • Поскольку нам известно количество тем, мы будем использовать скрытое распределение Дирихле с количеством тем 12.
  • Нам также не нужно будет сравнивать разные модели, чтобы получить наилучшее количество тем.
  • Мы будем использовать random_state, чтобы результаты можно было воспроизвести
  • Мы подгоним модель к векторизованным данным и трансформируем ее на том же самом
  • После подбора модели мы напечатаем 10 самых популярных слов по каждой теме.
  • После получения тем мы создадим новый столбец и назначим тему

Назначения по темам:

Чтобы назначить темы, мы можем сделать следующее:

  1. Смотрите облака слов по каждой теме
  2. Посмотреть 10 самых популярных слов
  3. Ищите KERA → Извлечение ключевых слов для отчетов и статей

Чтобы создать облака слов, мы можем просто импортировать библиотеку WordCloud.

Чтобы узнать больше о KERA, по этой ссылке можно сослаться на статью Исследовательский анализ сильно разнородных коллекций документов Майи и др., Находящуюся на arXiv.

Аннотация выглядит следующим образом

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

Проблемы в модели:

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

Недостатки LDA:

  1. LDA плохо работает с мелкими текстами; большая часть наших данных была короткой.
  2. Поскольку обзоры неоднозначны, LDA становится все труднее
    определять темы
  3. Поскольку обзоры в основном основаны на контексте, модели, основанные на
    совпадении слов, не работают.

Альтернатива:

Мы можем использовать BERT, чтобы лучше моделировать темы, которые будут рассмотрены в будущем :)

Ресурсы:

Спасибо за чтение :)