潜在ディリクレ割り当てを使用したトピック予測


17

ドキュメントのコーパスでLDAを使用し、いくつかのトピックを見つけました。コードの出力は、確率を含む2つの行列です。1つのdoc-topic確率と他のword-topic確率。しかし、実際には、これらの結果を使用して新しいドキュメントのトピックを予測する方法がわかりません。ギブスサンプリングを使用しています。誰もが方法を知っていますか?ありがとう


1
「新しいドキュメントのトピックを予測する」とはどういう意味ですか?このドキュメントが生成されたトピックを1つ見つけたいですか?ドキュメントのトピックの混合物を見つけたいですか?新しいドキュメントの各単語に、その単語が由来するトピックごとにラベルを付けますか?
シェルドンクーパー

このドキュメントが生成されたトピックを1つ見つけたいですか?ドキュメントのトピックの混合物を見つけたいですか?-これらの質問の両方に実際に答えたい...しかし、私のコーパスは本当に大きいので、新しいドキュメントを作成するたびにすべてのモデルを再トレーニングする余裕はありませんが検査される
ホセイン

回答:


21

「折りたたむ」ことを試みます。これは、1つの新しいドキュメントを取得してコーパスに追加し、その新しいドキュメント内の単語のみでギブスサンプリングを実行し、古いドキュメントのトピックの割り当てを同じにすることを意味します。これは通常、高速で収束し(5〜10〜20回の反復)、古いコーパスをサンプリングする必要がないため、高速で実行されます。最後に、新しいドキュメントのすべての単語にトピックを割り当てます。これにより、そのドキュメントのトピックの分布がわかります。

Gibbsサンプラーには、おそらく次のコードのようなものがあります。

// This will initialize the matrices of counts, N_tw (topic-word matrix) and N_dt (document-topic matrix)
for doc = 1 to N_Documents
    for token = 1 to N_Tokens_In_Document
       Assign current token to a random topic, updating the count matrices
    end
end

// This will do the Gibbs sampling
for doc = 1 to N_Documents
    for token = 1 to N_Tokens_In_Document
       Compute probability of current token being assigned to each topic
       Sample a topic from this distribution
       Assign the token to the new topic, updating the count matrices
    end
end

フォールドインは同じですが、既存のマトリックスから始めて、新しいドキュメントのトークンをそれらに追加し、新しいトークンのみのサンプリングを行います。すなわち:

Start with the N_tw and N_dt matrices from the previous step

// This will update the count matrices for folding-in
for token = 1 to N_Tokens_In_New_Document
   Assign current token to a random topic, updating the count matrices
end

// This will do the folding-in by Gibbs sampling
for token = 1 to N_Tokens_In_New_Document
   Compute probability of current token being assigned to each topic
   Sample a topic from this distribution
   Assign the token to the new topic, updating the count matrices
end

pwwjwj

jpwj

答えてくれてありがとう。私はいくつかのことを読みましたが、それでも「折り畳み」について少し混乱しています。古いドキュメントのトピックの割り当てを同じに保つべきだと言っているのですが、これは単語のトピックの割り当てを再計算する必要があるということですか?あなたが私にすべきことのより詳細なステップを教えてもらえますか?または、この「フォールディングイン」プロセスを実際に明確にするのに役立つ論文またはリンクを参照してください。私の最初のオプションは、「折り畳み」を行うことです。失敗した場合、私はあなたが提案した2番目の方法に行きます(折り畳みと比較してどれだけうまく機能するかわかりません)。
ホセイン

@SheldonCooper:私があなたを正しく理解している場合、これがそれを行う方法であるとは思わない:あなたがすることは、最適化アルゴリズムにさらにいくつかのステップを与えることにより、新しいテストサンプルでSVMのパフォーマンスを測定するかのようですテストサンプルを含む現在のソリューションと、このサンプルで評価します...しかし:機械学習では、トレーニングセットでテストすることはできません...トレーニングサンプル...
ファビアンワーナー

@FabianWernerこのソリューションは、元のトレーニングから単語トピックマトリックスを更新しなかったと思います。トレーニング済みの単語トピックマトリックスからギブスサンプラーを再実行し、新しいドキュメントトピックマトリックスを作成します。とにかく、OPが尋ねたことを行う別の方法を知っていますか(確かに数年前)。私は同じ問題を見ています。
-thecity2

@ thecity2この問題についてはしばらくの間考えていましたが、悲しいことに、まだ解決策がないと言わなければなりません。見つけたら、教えてください!!!
ファビアンワーナー

@FabianWernerあなたはこの問題で訓練とテストのセットを持っていません-あなたのコメントはここでは無関係です。これは、クラスタリングのように教師なし学習です。
emem
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.