如果你想創建一個wordcloud每個主題,你想要的是每個主題,即從每個主題中產生的最有可能的話頂條款。這個概率被稱爲beta
;它是每個詞的每個詞的概率。 β的概率越高,從該主題生成該單詞的概率就越高。
您可以使用tidytext中的tidy
從您的LDA主題模型中整理數據框中的beta
概率。我們來看一個示例數據集,並使用兩個主題來擬合一個模型。
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)
謝謝Julia!我正在研究你的代碼和下面這位先生的代碼....謝謝! –
請你給我一些指導如何從矩陣「測試版」中繪製wordcloud。我的代碼中的厚度在頻率範圍內。 wordcloud(字= d $術語,FREQ = d $頻率,min.freq = 1, max.words = 200,random.order = FALSE,rot.per = 0.35, 顏色= brewer.pal(8「 Dark2「)) –
編輯帖子以添加wordcloud的代碼。 –