Функция typeTopicCounts в разделе, посвященном моделированию реализации mallet API.
Я пытаюсь понять, как тематическая модель LDA реализована в API-интерфейсе. в ParallelTopicModel
класс я могу видеть 2D массив int typeTopicCounts
который инициализируется в buildInitialTypeTopicCounts()
метод через некоторые побитовые операции и позже используется для каждого документа. Мой вопрос: что означают значения этого массива? Единственная информация, которую я могу получить из исходного кода, - это то, что он проиндексирован с помощью [указатель возможностей, указатель тем].
1 ответ
Вычислительная производительность выборки Гиббса для LDA определяется расчетом распределения выборки по темам для каждого слова токена. Тематические модели настроены так, чтобы иметь большую разреженность в отношениях между словами и темами. Если мы сможем сделать это вычисление более эффективным, сохранив как можно больше вычислений от одного слова к другому и только выполняя осмысленные вычисления (например, не умножая на ноль), мы сможем получить большие ускорения.
Каждый тип слова имеет один массив int
в typeTopicCounts
массив. Значение каждого int
значение в этом массиве кодирует как тему, так и количество токенов с помощью операторов сдвига битов. Счетчик находится в старших разрядах, поэтому мы можем сортировать темы по количеству, не "распаковывая" целые числа.
Слайды из учебника по этому методу доступны здесь:
https://mimno.infosci.cornell.edu/slides/fast-sparse-sampling.pdf