В Metabob, когда мы начали создавать систему моделирования темы для нашего конвейера данных, мы сначала использовали модель темы скрытого распределения Дирихле (LDA). Однако, потратив время на настройку модели с учетом ее лучших возможностей, наша команда продолжила исследования, изучая другие потенциальные тематические модели. Мы начали перебирать Top2Vec и BERTopic и в конце концов решили начать использовать BERTopic для подготовки набора данных для обучения нашей модели обнаружения. В нашем случае BERTopic используется для анализа окружающей документации об изменениях кода и определения причин изменения на основе окружающей документации на естественном языке (подумайте о проблемах GitHub). Мы называем выходы из него нашими проблемными категориями.

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

ЛДА

Скрытое распределение Дирихле (LDA) — это тематическая модель, но она также является моделью, основанной на статистике.

Вот упрощенное объяснение того, как работает LDA:

  1. Случайное назначение. Каждое слово в каждом документе назначается теме случайным образом. Это случайное распределение дает как тематическое представление всех документов, так и распределение слов по всем темам.
  2. Итеративное уточнение: LDA затем итеративно уточняет эти назначения, просматривая каждое слово и переназначая слово теме. Вероятность отнесения слова к теме зависит от того, насколько преобладает тема в документе и насколько преобладает слово в теме.
  3. Окончательная модель. Алгоритм повторяется снова и снова и в конечном итоге достигает устойчивого состояния, когда назначения становятся более разумными.

LDA имеет несколько недостатков:

  1. Предварительная обработка и настройка параметров: LDA требует тщательной предварительной обработки текстовых данных (например, разметки, удаления стоп-слов и поиска корней), а также настройки нескольких параметров, таких как количество тем. Плохая предварительная обработка и неправильный выбор параметров могут привести к плохим результатам.
  2. Отсутствие учета порядка слов: LDA представляет собой набор слов (документ представлен в виде набора слов без учета грамматики и даже порядка слов, но с сохранением множественности) и не принимает учитывать порядок слов в документе и грамматику.
  3. Фиксированное количество тем: в традиционном LDA количество тем — это гиперпараметр, устанавливаемый пользователем, а не полученный из данных.
  4. Предполагает, что темы не коррелированы: LDA предполагает, что темы не коррелированы, что часто неверно в реальных сценариях.

BERTopic

В отличие от LDA, BERTopic использует модели на основе преобразователя (например, BERT) для встроенной генерации, в то время как LDA использует подход вероятностного моделирования.

Преимущества

  1. Семантика: BERTopic, благодаря архитектуре BERT, может лучше понимать семантику, контексты и нюансы текстовых данных, обеспечивая лучшее качество темы. Это приводит к более значимым и последовательным темам по сравнению с LDA.
  2. Независимость от языка: BERT имеет предварительно обученные модели для многих разных языков, поэтому BERTopic можно эффективно использовать для разных языков. Напротив, LDA потребовала бы обширной предварительной обработки для языков, которые не придерживаются структуры субъект-глагол-объект, например английский.
  3. Репрезентативное обучение: BERTopic использует глубокое обучение и репрезентативное обучение. Эти модели могут фиксировать более сложные шаблоны в тексте, в то время как LDA ограничивается набором слов или представлениями TF-IDF.
  4. Обработка шума: BERTopic часто более устойчив к шуму в данных, потому что он использует встраивание предложений, которые естественным образом обрабатывают шум лучше, чем модели мешка слов.

Оценка

  1. Согласованность тем. Обе модели можно оценить с помощью показателей согласованности тем, таких как c_v, c_p, c_uci и c_npmi. Более высокая оценка согласованности часто предполагает, что слова в теме более семантически связаны.
  2. Оценка вручную. У нас есть оценщики, которые изучают темы и документы, связанные с этими темами. Они могут оценить качество тем по шкале (от 1 до 5). Хотя это трудоемко, это может быть одним из самых надежных методов.

Мы используем найденные категории для обучения нашей модели обнаружения проблем для кода Python. Если вы хотите увидеть наши модели в действии, мы недавно опубликовали Metabob как расширение VSCode для анализа кода Python. Инструмент бесплатный, и если вы в конечном итоге протестируете его, я всегда жду отзывов. Вы можете связаться со мной по электронной почте [email protected].