Фон

Тематическое моделирование - это процесс определения тем в наборе документов. Это может быть полезно для поисковых систем, автоматизации обслуживания клиентов и в любом другом случае, когда важно знать тематику документов. Есть несколько способов сделать это, но здесь я объясню один: Скрытое распределение Дирихле (LDA).

Алгоритм

LDA - это форма обучения без учителя, которая рассматривает документы как мешки слов (т. Е. Порядок не имеет значения). LDA сначала делает ключевое предположение: документ был создан путем выбора набора тем, а затем для каждой темы путем выбора набора слов. Теперь вы можете спросить: «Хорошо, а как он находит темы?» Ответ прост: он реконструирует этот процесс. Для этого для каждого документа m выполняется следующее:

  1. Предположим, что во всех документах есть k тем.
  2. Распределите эти k тем в документе m (это распределение известно как α и может быть симметричным или асимметричным, подробнее об этом позже), назначив каждому слову тему.
  3. Предположим, что тема каждого слова w в документе m неверна, но каждому второму слову назначена правильная тема.
  4. Вероятностно назначьте слово w теме на основе двух вещей:
    - какие темы в документе m
    -
    сколько раз слову w назначена конкретная тема во всех документах (это распределение называется β, подробнее об этом позже)
  5. Повторите этот процесс несколько раз для каждого документа, и все готово!

Модель

Выше представлена ​​так называемая диаграмма модели LDA, где:
α - распределение тем по каждому документу,
β - распределение слов по каждой теме,
θ - распределение тем для документа m,
φ - это распределение слов для темы k,
z - это тема для n - -ое слово в документе m, а
w - конкретное слово

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

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

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

β - это матрица, в которой каждая строка представляет тему, а каждый столбец - слово. Значение в строке i и столбце j показывает, насколько вероятно, что тема i содержит слово j. Обычно каждое слово распределяется по теме равномерно, так что ни одна тема не связана с определенными словами. Тем не менее, это может быть использовано для смещения определенных тем в пользу определенных слов. Например, если вы знаете, что у вас есть тема о продуктах Apple, может быть полезно смещать такие слова, как «iphone» и «ipad», для одной из тем, чтобы подтолкнуть модель к поиску этой конкретной темы.

Заключение

Эта статья не предназначена для полноценного руководства по LDA, а скорее для того, чтобы дать обзор того, как работают модели LDA и как их использовать. Есть много реализаций, таких как Gensim, которые просты в использовании и очень эффективны. Хорошее руководство по использованию библиотеки Gensim для моделирования LDA можно найти здесь.

Есть какие-то мысли или найти что-то, что я пропустил? Дайте мне знать!

Удачного моделирования темы!