新しいデータのLDAトピックの予測 質問する

新しいデータの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"?

ベストアンサー1

Ben の優れたドキュメント読み取りスキルのおかげで、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

おすすめ記事