現在Rのパッケージでldaを使ってLDA分析をしています。パッケージlda
最終的にtop.wordsで結果を取得するところまでうまくいきました。
次にやりたいことはtop.wordsの結果からその単語のもとのドキュメントをとりたいと思っています。
例えば以下のような結果が出たとします。
top.words[2,1]にある"画素"という単語が使われていたドキュメントを特定することは可能なのでしょうか。
試したこと
LDAの分析結果(lda.collapsed.gibbs.sampler)にはassignmentsというものがあります。この説明には
A list of length D. Each element of the list, say assignments[[i]] is an integer vector of the same length as the number of columns in documents[[i]]
indicating the topic assignment for each word.
と書かれています。自分はあまり英語が得意ではないですが、翻訳にかけたり、結果を見たりする限り、その配列はドキュメントを表しており、その中の各要素はそれぞれの単語のトピック番号ではないかと思っています。(以下はassignmentsの中身です)
だから試しにtop.wordsの"画素"という単語があるドキュメントを探し、そのドキュメントに対応するassignmentsをみたところ0(なぜかassignmentsではトピック数-1で表示されている)という数字がありませんでした。
つまり"画素"という単語はトピック1にあるので、assignmentsの説明によれば、この単語に対応する値は0になっているはず。
assignmentsの解釈が間違っているのでしょうか。誰か教えていただける方いらっしゃいますでしょうか。
しばらく考えて、なんとなく思ったこと
質問を投稿してからしばらく、考えていましたが、
LDAでは単語の抽象度を上げているので、ドキュメントの各単語はそれぞれトピックが割り当てられているが、逆にtop.words(LDA分析結果)に出てきた単語は必ずしもドキュメントに紐づかないのではないか。となんとなく思いました。
ただ実際、確信は持てていないので、もしわかる方がいらっしゃいましたら、何かお力添えをお願いいたします。
それからこのサイトをみてassignmentsの解釈は多分合っているのかなと思いました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。