Portál AbcLinuxu, 20. prosince 2025 01:18
Dneska si jako správné novomediální *** ukážeme, jak jednoduše udělat naprosto zbytečný (ale vypadá to fakt pěkně) word cloud s pomocí programu R project.
Co k tomu potřebujeme:
Jako první si pustíme R konzoli a nainstalujeme potřebné balíčky.
# instalace knihoven
install.packages("Rfacebook")
install.packages("tm")
install.packages("wordcloud")
# nacteni knihoven
library(Rfacebook)
library(tm)
library(wordcloud)
Jakmile si seženeme facebook token, ze stránky https://developers.facebook.com/tools/explorer, můžeme se zvesela pustit do načítání dat z Facebooku pomocí R. Nám bude stačit načíst 300 komentářů z jakékoliv Facebook stránky. A trochu si je předpřipravíme.
# nacteni tokenu do promenne
token <- "token_pro_graph_api"
# nacteni prispevku stranky do promenne
page <- getPage("biooo.cz", token=token, n=300)
# vytvoreni korpusu, ktery bude obsahovat pouze sloupec se zpravami
corpus <- Corpus(VectorSource(page$message))
# slova z korpusu zmenšíme, odstraníme interpunkci a čísla
corpus <- tm_map(corpus, tolower)
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, removeNumbers)
V další fázi vytvoříme z předpřipraveného korpusu matici slov a spočteme jejich frekvenci.
ap.tdm <- TermDocumentMatrix(corpus) ap.m <- as.matrix(ap.tdm) ap.v <- sort(rowSums(ap.m), decreasing=TRUE) ap.d <- data.frame(word = names(ap.v), freq=ap.v)
Již se zdárně blížíme k cíli, teď si načteme do proměnné předpřipravenou paletu barev:
require(RColorBrewer) pal <- brewer.pal(8,"Dark2")
Nyní stačí již jen nastavit soubor výstupu a spustit samotné vytvoření word cloudu!
png("wordcloud.png",width=1024,height=1024)
wordcloud(ap.d$word,ap.d$freq, scale=c(10,.2),min.freq=3,max.words=150, random.order=FALSE, rot.per=.15, colors=pal)
dev.off()
TADÁ! Máme náš první word cloud.
Spousta věcí! Především:
Přece absolutně k ničemu!
P.S. Hlavně to neukazujte markeťákům, nebo vám utrhají ruce!
Zdroj: https://gist.github.com/josefslerka/2344144
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.