問題タブ [topic-modeling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ラベル付き潜在ディリクレ配分の入力値
StackExchange の投稿でタグ予測とキーワード抽出を行っています。タイトル、本文、タグで構成される約 36,000 件の投稿があります。ノイズの多い要素をフィルタリングして処理します。この後、ここで取得したラベル付き潜在ディリクレ配分法 (LLDA) を実行します。
出力を見ると、トピックとキーワードの割り当ての前半の大部分はかなり良好です。例:
ただし、出力ファイルの終わりに近づくほど、トピックとキーワードの割り当ては完全に奇妙になります。
誰かがなぜ私が最終的にそのような間違った割り当てを受けるのか説明してもらえますか? また、値が非常に低いのはなぜですか?
約 36,000 件の投稿がある前に述べたように、これらは LLDA を実行するための値です。
以前の値に関するドキュメントはほとんどまたはまったく見つからなかったので、試行錯誤の結果、これらの値が得られたものの中で最も適していることがわかりました。ただし、より理解のある人が私に説明したり、どの値が最適かを提案したりできるでしょうか?
r - R の topicmodels パッケージの LDA 関数で正確な結果を再現する方法
topicmodels の LDA 関数から再現可能な結果を作成できませんでした。ドキュメントから例を挙げます。
LDA への 2 つの別々の呼び出しから同じ結果を得るにはどうすればよいですか?
余談ですが (パッケージの作成者がここにいる場合に備えて)、control=list(seed=0)
スニペットは不運で不必要だと思います。舞台裏では、 の行がありif (missing(seed)) seed <- as.integer(Sys.time())
ます。これはプロセスをより確実にランダムにするわけではなく、指定されたシードを元に戻すだけです。何か不足していますか?
更新: 以下で @hrbrmstr が発見したように、シードをコントロールとして渡すと、事実上同一のオブジェクトが生成されますが、唯一の違いは一時的なローカル ファイルの場所です。したがって、この質問は誤解です(ただし、関数が尊重されていれば、より明確になるようですset.seed()
)。
topic-modeling - MALLET でのトピック モデルの増分トレーニング
MALLETのドキュメントによると、トピック モデルを段階的にトレーニングすることが可能です。
「-output-model [ファイル名] このオプションは、シリアル化された MALLET トピック トレーナー オブジェクトを書き込むファイルを指定します。このタイプの出力は、トレーニングの一時停止と再開に適しています」
あるデータ セットでトピックをトレーニングしてから、別のデータ セットでモデルをインクリメントしたいと考えています。両方のトレーニング ステップの後、両方のデータセットの状態を出力したいと思います (--output-state を使用)。これが私がそれをやろうとする方法です:
最後のコマンドで「 --input-model model 」を追加すると、2 番目のデータセットのデータが output-state ファイルに存在しません。追加しないと、最初のデータセットのデータが出力状態ファイルに存在しません。
コード内のモデルにインスタンスを追加しようとすると:
エラーが発生します:
以前、MALLET リストに同様の質問がありました: http://permalink.gmane.org/gmane.comp.ai.mallet.devel/924、http://permalink.gmane.org/gmane.comp.ai.mallet .devel/2139
では、トピック モデルの増分トレーニングは可能でしょうか?
r - トピックモデルパッケージを使用したRのトピックおよびドキュメントの下の単語確率の計算
Griffiths と Steyvers は、2006 年の本の寄稿で、トピックの下で単語確率の例を示しています。
私は R を使用しており、トピックごと、および自分のデータに適用されるドキュメントごとにそのような単語確率を再現したいと考えています。残念ながら、私は R とトピックモデルにかなり慣れていないため、その特定の質問に対する答えがあまりにも明白であるため、誰も質問しないように思われるため、必死になっています。
では、DTM、TDM、またはパッケージ内のLDA
関数の結果が与えられた場合topicmodels
、どうすれば事後分布を取得できますか?
Griffiths と Steyvers のような次の出力は素晴らしいでしょう:
トピック xyz
単語確率。
こんにちは 0.069
世界 (1-0.069)
論文では、彼らはいくつかのトピックについてこの種の出力を提供しています - この短いものは私の質問を明確にするためのものです.
PS: リンクやヒントをいただければ幸いです。
lda - Mallet Api - 一貫した結果を得る
私はLDAとマレットが初めてです。次のクエリがあります
コマンドラインで Mallet-LDA を実行してみましたが、--random-seedを固定値に設定することで、アルゴリズムを複数回実行しても一貫した結果を得ることができました
ただし、Mallet-Java-API を試してみましたが、プログラムを実行するたびに異なる出力が得られます。私はグーグルで検索したところ、ランダムシードを修正する必要があることがわかり、Javaコードで修正しました。私はまだ異なる結果を得ています。
一貫した結果を得るために他にどのようなパラメーターを考慮する必要があるかを誰かに教えてもらえますか (複数回実行した場合)
複数回実行した場合(コマンドライン)に同じ結果が得られるtrain-topicsを追加したい場合があります。ただし、import-dirを再実行してからtrain-topicsを実行すると、結果が前のものと一致しません。(おそらく予想通り)。import-dirを 1 回だけ実行してから、 train-topicsを実行してさまざまな数のトピックと反復を試しても問題ありません。同様に、Java-Api を使用するときに同じものを複製したい場合は、何を変更/一定に保つ必要がありますか。