ene 30 2012

Forma tu propia nube de palabras (wordcloud) con R

Published by at 6:20 pm under 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("[\f\t.,;:`'\\\"\\(\\)<>]+", " ", 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()

5 responses so far

5 Responses to “Forma tu propia nube de palabras (wordcloud) con R”

  1. Grroton 30 ene 2012 at 8:35 pm

    Para eliminar los artículos, adverbios,etc puedes usar FreeLing http://nlp.lsi.upc.edu/freeling/

  2. Nugbeon 04 feb 2012 at 10:55 am

    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("[\f\t.,;:`'\\\"\\(\\)]+”, ” “, 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 ;)

  3. Nicoláson 22 nov 2013 at 7:04 pm

    Hola, veo en el script armado algo medio extraño:

    words 3]

    ¿qué le falta?

    gracias!!!

  4. […] (aún no he encontrado el error en el anterior o la forma de que aparezcan), lo encuentran en esta página. En mi caso he tenido que modificar el archivo de origen para que se logren identificar las […]

  5. […] (aún no he encontrado el error en el anterior o la forma de que aparezcan), lo encuentran en esta página. En mi caso he tenido que modificar el archivo de origen para que se logren identificar las […]

Trackback URI | Comments RSS

Leave a Reply


× 8 = cuarenta ocho

« Back to text comment