Функция typeTopicCounts в реализации тематического моделирования API молотка

Я пытаюсь понять, как тематическая модель LDA реализована в API молотка. В классе ParallelTopicModel я вижу 2D-массив целых чисел с именем typeTopicCounts, который инициализируется в методе buildInitialTypeTopicCounts() с помощью некоторых побитовых операций, а затем используется для каждого документа. Мой вопрос: что означают эти значения массива? Единственная информация, которую я могу получить из исходного кода, это то, что он проиндексирован [указатель функций, указатель темы].


person Sumanta    schedule 21.06.2017    source источник


Ответы (1)


Вычислительная производительность выборки Гиббса для LDA определяется вычислением распределения выборки по темам для каждой лексемы слова. Тематические модели настроены так, чтобы иметь большую разреженность в отношениях между словами и темами. Если мы сможем сделать это вычисление более эффективным, сохранив как можно больше вычислений от одного слова к другому и выполняя только осмысленные вычисления (например, не умножая на ноль), мы сможем получить значительное ускорение.

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

Слайды из руководства по этому методу доступны здесь:

https://mimno.infosci.cornell.edu/slides/fast-sparse-sampling.pdf

person David Mimno    schedule 21.06.2017