Forma tu propia nube de palabras (wordcloud) con R

Una receta rápida para que no se me traspapele 🙂 El siguiente script en R lee un fichero de texto (/tmp/article.txt), lo analiza y genera una vistosa nube de palabras. Depende de los paquetes tm (text mining), RColorBrewer (para la gestión de paletas de color) y wordcloud (el verdadero artífice de la nube final). En la imagen que acompaña a este artículo se muestra la nube de palabras correspondiente al Plan vasco de Ciencia, Tecnología e Innovación 2015 (PCTi2015). Esa imagen es el resultado de ejecutar el código R objeto de este post (se genera en /tmp/cloud.png).
Quedaría ver cómo añadir el código que falta para deshacerse de los adverbios, preposiciones y demás hierbas mayores de 4 letras…

require(tm)
require(wordcloud)
require(RColorBrewer)
 
 
r <- paste(readLines(file.path("/tmp","article.txt")), collapse=' ')
r <- gsub("[ft.,;:`'\"\(\)<>]+", " ", r)
words <- tolower(strsplit(r, " +")[[1]])
 
words <- table(words)
# remove words with _bad_ chars (non utf-8 stuff)
words=words[nchar(names(words), "c")==nchar(names(words), "b")]
# remove words shorter then 4 chars
words=words[nchar(names(words), "c")>3]
# remove words accuring less than 5 times
words=words[words>4]
 
# create the image
png("/tmp/cloud.png", width=580, height=580)
pal2 <- brewer.pal(8,"Set2")
wordcloud(names(words), words, scale=c(9,.1),min.freq=3,
           max.words=Inf, random.order=F, rot.per=.3, colors=pal2)
dev.off()

6 comentarios en «Forma tu propia nube de palabras (wordcloud) con R»

  1. Para la gente que ha mostrado interés en probarlo y no tiene ningún contacto previo con R, resumo TODOS LOS PASOS que hay que hacer en una consola de ubuntu:

    Primero instalar R en linux:
    sudo apt-get update
    sudo apt-get install r-base
    sudo apt-get install r-base-dev
    sudo apt-get install r-recommended

    Después, como nos hacen falta varias librerías de R, las instalamos. Para eso arrancamos R desde una terminal simplemente escribiendo la letra «R» mayúscula:

    $ R

    (ahora instalaremos las librerías que exige este programa poniendo en la terminal que está con el R abierto los siguientes comandos:)

    > install.packages(«RColorBrewer», dependencies = TRUE)
    > install.packages(«wordcloud», dependencies = TRUE)

    (Ahora escribís el código del programa de Juanan, teniendo en cuenta que el fichero de texto de origen ha de ser el vuestro)

    require(tm)
    require(wordcloud)
    require(RColorBrewer)
    r <- paste(readLines(file.path("/home/aitor","CuentosDeEvaLuna.txt")), collapse=' ')
    r <- gsub("[ft.,;:`'\"\(\)]+», » «, r)
    words <- tolower(strsplit(r, " +")[[1]])

    words 3]
    # remove words accuring less than 5 times
    words=words[words>4]

    # create the image
    png(«/tmp/cloud.png», width=580, height=580)
    pal2 <- brewer.pal(8,"Set2")
    wordcloud(names(words), words, scale=c(9,.1),min.freq=3,
    max.words=Inf, random.order=F, rot.per=.3, colors=pal2)
    dev.off()

    et voilá! En el directorio /tmp os ha creado un fichero llamado "cloud.png" con una bonita foto 😉

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.