Подтвердить что ты не робот

Spark MLlib LDA, как определить распределение тем нового невидимого документа?

Я заинтересован в применении моделирования темы LDA, используя Spark MLlib. Я проверил код и объяснения в здесь, но я не смог найти, как использовать модель, чтобы найти распределение тем в новом невидимом документ.

4b9b3361

Ответ 1

Начиная с Spark 1.5 эта функция не была реализована для DistributedLDAModel. Что вам нужно сделать, так это преобразовать вашу модель в LocalLDAModel с помощью метода toLocal, а затем вызвать метод topicDistributions(documents: RDD[(Long, Vector]), где documents - это новые (т.е. внеучебные) документы, что-то например:

newDocuments: RDD[(Long, Vector)] = ...
val topicDistributions = distLDA.toLocal.topicDistributions(newDocuments)

Это будет менее точным, чем алгоритм EM, который этот документ предлагает, но он будет работать. В качестве альтернативы вы можете просто использовать новый онлайн-вариационный алгоритм обучения EM, который уже приводит к LocalLDAModel. В дополнение к тому, чтобы быть быстрее, этот новый алгоритм также предпочтительнее из-за того, что он, в отличие от старого алгоритма EM для подгонки DistributedLDAModels, оптимизирует параметры (альфа) Дирихле перед темой смешивания весов для документов. Согласно Wallach, et. al., оптимизация альфов очень важна для получения хороших тем.