あなたは、各トピックについてwordcloudを作成したい場合は、あなたがしたいことは、すなわち、各トピックから生成することが最も可能性の高い単語の各トピックのトップ用語です。この確率はbeta
と呼ばれます。単語ごとの単語ごとの確率です。この確率ベータが高いほど、その単語がそのトピックから生成される確率が高くなる。
tidytextのtidy
を使用して、LDAトピックモデルの整然としたデータフレーム内でbeta
確率を出すことができます。サンプルのデータセットを見て、2つのトピックを使用してモデルを適合させましょう。
library(tidyverse)
library(tidytext)
library(topicmodels)
data("AssociatedPress")
ap_lda <- LDA(AssociatedPress, k = 2, control = list(seed = 1234))
あなたは今のモデルに適合してきました!さて、私たちは確率を得ることができます。
ap_topics <- tidy(ap_lda, matrix = "beta")
ap_topics
#> # A tibble: 20,946 x 3
#> topic term beta
#> <int> <chr> <dbl>
#> 1 1 aaron 1.686917e-12
#> 2 2 aaron 3.895941e-05
#> 3 1 abandon 2.654910e-05
#> 4 2 abandon 3.990786e-05
#> 5 1 abandoned 1.390663e-04
#> 6 2 abandoned 5.876946e-05
#> 7 1 abandoning 2.454843e-33
#> 8 2 abandoning 2.337565e-05
#> 9 1 abbott 2.130484e-06
#> 10 2 abbott 2.968045e-05
#> # ... with 20,936 more rows
彼らはすべてそこまで混合されます。 dplyrを使って各トピックの最も可能性の高い用語を取得しましょう。
ap_top_terms <- ap_topics %>%
group_by(topic) %>%
top_n(200, beta) %>%
ungroup() %>%
arrange(topic, -beta)
になりました(いくつかの整形と)wordcloudを作るためにこれを使用することができます。 beta
確率は、単語の大きさに対応したいものです。
library(wordcloud)
library(reshape2)
ap_top_terms %>%
mutate(topic = paste("topic", topic)) %>%
acast(term ~ topic, value.var = "beta", fill = 0) %>%
comparison.cloud(colors = c("#F8766D", "#00BFC4"),
max.words = 100)
ありがとうジュリア!あなたのコードと下の紳士のコードを勉強しています....ありがとう! –
行列「ベータ」から単語をプロットする方法を教えてください。厚さは私のコードでは頻度です。 wordcloud(words = d $ term、freq = d $ freq、min.freq = 1、 max.words = 200、random.order = FALSE、rot.per = 0.35、 colors = brewer.pal(8、 Dark2 ")) –
投稿を編集してwordcloudのコードを追加しました。 –