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

Прогнозирование тем LDA для новых данных

Похоже, что этот вопрос, возможно, был задан несколько раз (здесь и здесь), но он еще не ответил. Я надеюсь, что это связано с предыдущей двусмысленностью вопроса (вопросов), о чем свидетельствуют комментарии. Я прошу прощения, если я нарушаю протокол, задав еще один вопрос, я просто предположил, что эти вопросы не будут видеть никаких новых ответов.

Во всяком случае, я новичок в выборе Latent Dirichlet и изучаю его использование в качестве средства уменьшения размеров текстовых данных. В конечном счете, я хотел бы извлечь меньший набор тем из очень большого пакета слов и построить модель классификации, используя эти темы, как несколько переменных в модели. У меня был успех при запуске LDA на тренировочном наборе, но проблема, с которой я сталкиваюсь, - это предсказать, какая из этих тем появляется в другом тестовом наборе данных. Я использую пакет R topicmodels прямо сейчас, но если есть другой способ для этого, используя какой-то другой пакет, я также открыт для этого.

Вот пример того, что я пытаюсь сделать:

library(topicmodels)
data(AssociatedPress)

train <- AssociatedPress[1:100]
test <- AssociatedPress[101:150]

train.lda <- LDA(train,5)
topics(train.lda)

#how can I predict the most likely topic(s) from "train.lda" for each document in "test"?
4b9b3361

Ответ 1

С помощью навыков чтения с преимуществом Бен, я считаю, что это возможно с помощью функции posterior().

library(topicmodels)
data(AssociatedPress)

train <- AssociatedPress[1:100]
test <- AssociatedPress[101:150]

train.lda <- LDA(train,5)
(train.topics <- topics(train.lda))
#  [1] 4 5 5 1 2 3 1 2 1 2 1 3 2 3 3 2 2 5 3 4 5 3 1 2 3 1 4 4 2 5 3 2 4 5 1 5 4 3 1 3 4 3 2 1 4 2 4 3 1 2 4 3 1 1 4 4 5
# [58] 3 5 3 3 5 3 2 3 4 4 3 4 5 1 2 3 4 3 5 5 3 1 2 5 5 3 1 4 2 3 1 3 2 5 4 5 5 1 1 1 4 4 3

test.topics <- posterior(train.lda,test)
(test.topics <- apply(test.topics$topics, 1, which.max))
#  [1] 3 5 5 5 2 4 5 4 2 2 3 1 3 3 2 4 3 1 5 3 5 3 1 2 2 3 4 1 2 2 4 4 3 3 5 5 5 2 2 5 2 3 2 3 3 5 5 1 2 2