Перейти к основному содержимому

Тематическое моделирование

Рассмотрим работу с текстовыми данными, представляющими собой набор текстовых документов.

Стандартное представление документов вида «мешок слов» (bag-of-words) порождает признаковое пространство высокой размерности, равной числу уникальных слов текстовой коллекции, которое имеет порядок нескольких десятков или даже сотен тысяч уникальных слов. В таком высокоразмерном пространстве признаков модели легко переобучаются, а интерпретация объектов и моделей затруднена из-за слишком большого числа признаков.

Однако слова в языке не независимы: они группируются в скрытые темы (latent topics).

Например, слова «инфляция», «банк» и «кредит» часто встречаются вместе, сигнализируя о финансовой тематике текста.

А слова «модель», «переобучение» и «бустинг», в свою очередь, выражают тему машинного обучения.

Тематическое моделирование (topic modeling) — это метод снижения размерности для текстовых данных, в котором объект (являющийся документом) представляется не как набор слов, а как распределение по темам. Это позволяет сжать информацию и находить семантически близкие документы, даже если в них нет общих слов.

Пример: "ремонт машины" и "обслуживание автомобиля" семантически близки, хоть и состоят из разных слов.

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

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

Каждый документ dd представляется последовательностью слов длины ndn_d:

w1dw2d...wnddw^d_1 w^d_2 ... w^d_{n_d}

В тематическом моделировании предполагается предполагается двухуровневая вероятностная модель порождения каждого слова в документе:

  1. Сначала сэмплируется тема из распределения тем в документе.

  2. Затем из темы сэмплируется уже само слово.

По итогам настройки тематической модели автоматически определяются:

  • Основные темы текстовой коллекции, где каждая тема - это распределение на словах. Для интерпретации каждой темы визуализируют топ-K самых популярных слов темы.

  • Распределение тем в каждом документе (что даёт высокоуровневое семантическое описание каждого документа, с которым просто работать, а не низкоуровневое описание на уровне отдельных слов).

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

Вероятностный латентно-семантический анализ (PLSA)

Впервые тематическое моделирование было предложено в методе вероятностный латентно-семантический анализа (Probabilistic Latent Semantic Analysis, PLSA [1]).

Пусть у нас есть набор из NN документов и словарь из DD слов. Мы предполагаем наличие TT скрытых тем. Появление слова ww в документе dd моделируется через описанный выше двухуровневый вероятностный процесс порождения темы tt, а затем уже порождения слова ww в рамках темы tt. Итоговая вероятность появления слова тогда по формуле полной вероятности записывается следующим образом:

p(wd)=i=1Tp(wt=i)p(t=id)=i=1Tθidϕwi,p(w | d) = \sum_{i=1}^T p(w | t=i) p(t=i | d)=\sum_{i=1}^T \boldsymbol{\theta}^d_i \boldsymbol{\phi}^i_w,

где мы использовали обозначения:

  • θd=[p(t=1d),p(t=2d),...p(t=Td)]\boldsymbol{\theta}^d = [p(t=1|d),\:p(t=2|d),\:...\:p(t=T|d)] - распределение тем в документе dd

  • ϕi=[p(w=1t=i),p(w=2t=i),...p(w=Dt=i)]\boldsymbol{\phi}^i=[p(w=1|t=i),\:p(w=2|t=i),\:...\:p(w=D|t=i)] - распределение слов в теме ii.

Настройка модели

Для настройки используется метод максимального правдоподобия (Maximum Likelihood Estimation). Мы максимизируем логарифм вероятности всей коллекции текстов:

n=1Ni=1Dn(dn,wi)lnp(widn)maxθ,ϕ\sum_{n=1}^N \sum_{i=1}^D n(d_n, w^i) \ln p(w^i | d_n) \to \max_{\boldsymbol{\theta}, \boldsymbol{\phi}}

где n(dn,wi)n(d_n, w^i) — количество вхождений слова ii в документ nn. Оптимизация проводится с помощью EM-алгоритма (Expectation-Maximization algorithm [2]).

В результате настройки модели мы получаем:

  • компактное семантическое представление каждого документа в виде распределения представленных в нём тем: dθdRTd\to \boldsymbol{\theta}^d\in\mathbb{R}^T.

  • расшифровку каждой темы в виде распределения слов в ней: tϕiRDt\to \boldsymbol{\phi}^i \in \mathbb{R}^D.

Пример нескольких автоматически извлечённых тем из коллекции TDP-1 представлен ниже [1]:

Латентное размещение Дирихле (LDA)

Латентное размещение Дирихле (Latent Dirichlet Allocation, LDA [3]) является развитием PLSA. В этой модели параметры θd\boldsymbol{\theta}^d и ϕt\boldsymbol{\phi}^t сами являются не настраиваемыми параметрами, а сами являются случайными величинами, подчиняющимися распределению Дирихле [4].

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

Формулы и гиперпараметры

В LDA вводится иерархический процесс:

  1. Для каждого документа dd сэмплируется вектор распределения тем: θdDir(α)\boldsymbol{\theta}^d \sim \text{Dir}(\alpha).
  2. Для каждой темы tt сэмплируется вектор распределения слов: ϕtDir(β)\boldsymbol{\phi}^t \sim \text{Dir}(\beta).

Модель LDA гибче модели PLSA тем, что введённые гиперпараметры α\alpha и β\beta позволяют контролировать распределения слов в темах и распределение тем в документах:

  • Концентрация тем α\boldsymbol{\alpha} определяет разреженность тем в документах. При малых α\alpha документ будет значимо содержать всего 1–3 темы, а при больших — будет содержать все темы с большими весами. Обычно берут α\alpha малой, поскольку стандартные документы содержат небольшое число тем.
  • Концентрация слов β\boldsymbol{\beta} определяет разреженность слов в темах. Малые β\beta заставляют темы состоять в основном всего из нескольких характерных слов, а при увеличении гиперпараметра распределение слов в темах становится более равномерным. Обычно берут β\beta малой чтобы сделать каждую тему более интерпретируемой за счёт узкой специализации.

С кодом настройки LDA-модели можно ознакомиться в [5] (библиотека scikit-learn) и в [6] (библиотека gensim).

Основные сценарии использования

  1. Высокоуровневая обработка текстов на основе не низкоуровневого многомерного представления (слов), а на основе высокоуровневого маломерного представления (тем) - классификация, суммаризация текстов, поисковая система, рекомендация новостей.
  2. Борьба с переобучением моделей за счёт снижения размерности признаков, описывающих тексты.
  3. Группировка документов по темам, например, в новостных агрегаторах (по рубрикам: политика, спорт, наука, культура и т.д.).
  4. Анализ отзывов: выделение ключевых аспектов продукта, которыми недовольны клиенты (доставка, качество, цена, ограничения функционала и т.д.).

Литература

  1. Hofmann T. Probabilistic latent semantic indexing //Proceedings of the 22nd annual international ACM SIGIR conference on Research and development in information retrieval. – 1999. – С. 50-57.
  2. Википедия: EM-алгоритм.
  3. Blei D. M., Ng A. Y., Jordan M. I. Latent dirichlet allocation //Journal of machine Learning research. – 2003. – Т. 3. – №. Jan. – С. 993-1022.
  4. Wikipedia: Dirichlet distribution.
  5. Документация scikit-learn: Topic extraction with Non-negative Matrix Factorization and Latent Dirichlet Allocation.
  6. GeeksForGeeks: Topic Modeling Using Latent Dirichlet Allocation (LDA).