web-dev-qa-db-ja.com

新しいデータのLDAトピックの予測

この質問は以前に数回尋ねられた可能性があります( ここそしてここ )が、まだ答えられていません。コメントで示されているように、これは以前に尋ねられた質問のあいまいさによるものだと思います。もう一度同様の質問をしてプロトコルに違反している場合は、お詫び申し上げます。これらの質問には新しい回答が表示されないと思いました。

とにかく、私は潜在的ディリクレ割り当てに不慣れであり、テキストデータの次元削減の手段としてのその使用を模索しています。最終的には、非常に大きな単語のバッグからより小さなトピックのセットを抽出し、それらのトピックをモデルのいくつかの変数として使用して分類モデルを構築したいと思います。トレーニングセットで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"?
18
David

ベンの優れたドキュメント読み取りスキルの助けを借りて、これは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
24
David