Wenn Sie eine Wordcloud für jedes Thema erstellen möchten, was Sie wollen, sind die Top-Bedingungen für jedes Thema, das heißt, um die wahrscheinlichsten Wörter aus jedem Thema erzeugt werden. Diese Wahrscheinlichkeit wird beta
genannt; es ist die pro-Thema-pro-Wort-Wahrscheinlichkeit. Je höher diese Wahrscheinlichkeit Beta ist, desto höher ist die Wahrscheinlichkeit, dass dieses Wort aus diesem Thema generiert wird.
Sie können die beta
Wahrscheinlichkeiten in einem ordentlichen Datenrahmen aus Ihrem LDA Topic-Modell mit tidy
von Ordytext herausholen. Betrachten wir ein Beispiel-Dataset und passen Sie ein Modell mit nur zwei Themen an.
library(tidyverse)
library(tidytext)
library(topicmodels)
data("AssociatedPress")
ap_lda <- LDA(AssociatedPress, k = 2, control = list(seed = 1234))
Sie haben das Modell jetzt fit! Jetzt können wir die Wahrscheinlichkeiten herausholen.
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
Sie sind alle dort vermischt. Lassen Sie uns dplyr verwenden, um die höchstwahrscheinlichen Begriffe für jedes Thema zu erhalten.
ap_top_terms <- ap_topics %>%
group_by(topic) %>%
top_n(200, beta) %>%
ungroup() %>%
arrange(topic, -beta)
Sie können diese jetzt verwenden, um eine Wordcloud zu machen (mit einer gewissen Umbildung). Die beta
Wahrscheinlichkeit ist, was Sie entsprechen möchten, wie groß die Wörter sind.
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)
Danke Julia! Ich studiere deinen Code und den Code von dem Herrn unten .... danke! –
Könnten Sie mir bitte eine Anleitung geben, wie Sie Wordcloud aus Matrix "Beta" plotten können? Die Dicke ist in meinem Code in Häufigkeit. wordcloud (words = d $ term, freq = d $ freq, min.freq = 1, max.words = 200, random.order = FALSCH, rot.per = 0.35, colors = brewer.pal (8, " Dark2 ")) –
Editierte die Post, um Code für die Wordcloud hinzuzufügen. –