Aplicaciones libres para crear nubes de palabras

En el mundo de la educación, tanto para grandes como para chicos, se han generado herramientas digitales muy útiles al momento de organizar la información. En esta oportunidad quiero compartir algunas aplicaciones que han de servir para crear nubes de palabras -o nube de intereses-, que no son más que una forma diferente de presentar información visualizando palabras relevantes a partir de un texto o url.

Empezaré, por supuesto, con las opciones libres que actualmente existen (he encontrado muy, pocas por cierto) y que he empezado a manejar. A modo de introducción:

1. R – Wordcloud

R es un entorno de computación y gráficos estadísticos, es software libre Imagen tomada de la página oficialy forma parte de la Free Software Foundation. Es una herramienta que ofrece muchas opciones y muy completas para este trabajo a partir de líneas de comandos. Entre una de sus funciones se encuentra la generación de nubes de palabras.

Este software, a partir de la instalación de unos paquetes específicos, básicamente lee y analiza un fichero de texto y genera la nube. En la página principal se puede acceder a los archivos de instalación para sistemas GNU/Linux, Windows y MacOS. En GNU/Linux, la instalación de R a partir de un terminal sería:

 $ sudo apt-get update
 $ sudo apt-get install r-base
 $ sudo apt-get install r-base-dev
 $ sudo apt-get install r-recommended

Para terminar de instalar los paquetes faltantes para crear la nube, abrimos la aplicación escribiendo en el terminal “R” y luego continuamos:

install.packages("RColorBrewer", dependencies =TRUE)
install.packages("wordcloud", dependencies = TRUE)
 

Ahora si podemos proceder a la generación de la nube de palabras [1]. Para esto se debe tener en un documento de texto la información de la cual queremos extraer las palabras. Me he basado en esta página para el código, con algunas modificaciones y aclaraciones que he realizado:

# Llamar paquetes
require(tm)
require(wordcloud) 
# Leer archivo
txt <- readLines("directoriodearchivo:/tuarchivo.txt",encoding="UTF-8")
txt = iconv(txt, to="ASCII//TRANSLIT")
corpus <- Corpus(VectorSource(txt))
d <- tm_map(corpus, tolower)
d <- tm_map(d, stripWhitespace)
d <- tm_map(d, removePunctuation)
# Remueve palabras vacías genéricas
d <- tm_map(d, removeWords, stopwords("spanish"))
# Se crea matriz de términos
tdm <- TermDocumentMatrix(d)
# Mostrar la matriz con términos definidos
findFreqTerms(tdm, lowfreq=20)
# Si se quieren eliminar palabras no deseadas de la matriz
d <- tm_map(d, removeWords, c("palabra1","palabran"))
tdm <- TermDocumentMatrix(d)
# Generar la nube
m <- as.matrix(tdm)
v <- sort(rowSums(m),decreasing=TRUE)
df <- data.frame(word = names(v),freq=v)
# Se abre una nueva ventana con la nube
wordcloud(df$word,df$freq,min.freq=6))

En mi caso hice variaciones a “lowfreq” y “min.freq” que es la frecuencia mínima con que aparecen las palabras, y esto varía de acuerdo a la cantidad de palabras en el documento de origen.  Aquí el resultado:

Mi nube de palabras con R

Mi nube de palabras con R

Hay otra forma de generar la nube y que utiliza colores (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 palabras ya que resultaba ser poco extenso [2]. El resultado fue el siguiente:

Mi nube de palabras con R en colores

Mi nube de palabras con R en colores

Como estas nubes se han generado a partir de un código, aún se le pueden modificar comandos para precisarlo más o acercarlo a nuestros gustos. La imagen no permite guardarla directamente, por lo que se deberá capturar y guardar.

Hay otra forma que no utiliza el terminal sino una interfaz gráfica, aunque igual es por línea de comandos y se utiliza el mismo código. En esta página encuentran la información necesaria.

Resumiendo:

  • Presenta opciones para personalización tanto en colores, cantidad de palabras, palabras a omitir, entre otras.
  • Generalmente se obtiene una ventana que debemos capturar y guardar como imagen, aunque debe existir el fichero para poderla guardar directamente.
  • Se puede trabajar directamente desde un terminal en linux o desde un entorno gráfico.
  • Existe una gran comunidad en la que se puede encontrar ayuda e información, así como aportar con ejemplos o modificaciones.

2. Processing – Wordcram

Processing es un entorno de desarrollo y lenguaje de programación, que aunque es openprocessinglogo source, su entorno se encuentra bajo una licencia GPL y los paquetes o librerías bajo la licencia LGPL. Es desarrollado por artistas y diseñadores para producciones multimedia.

En la página principal se encuentran los archivos de instalación para GNU/Linux, Windows y MacOS. Para el caso de GNU/Linux, abrimos un terminal y digitamos:

cd /directoriodelarchivo
#Descomprimir
tar xvz processing-2.1.tgz
cd /processing-2.1
./processing

De esta manera obtendremos la ventana del IDE de programación:

Captura de pantalla Processing2

Ahora le agregaremos el paquete que nos permitirá crear la nube, Wordcram. Para esto se descarga desde aquí, lo guardamos y descomprimimos, éste contiene archivos y ejemplos que nos servirán más adelante. Luego, ya en el IDE, vamos al menú File/Open buscamos la carpeta Wordcram que descargamos y ahora sí comenzamos a crear la nube, que puede ser a partir de  algún ejemplo de la carpeta o de la página oficial. Cuando seleccionamos de la barra de tareas “Run” -o play- nos aparecerá un error por falta de los archivos para crear la nube, por lo que vamos al menú Sketch/Add file y buscamos en la carpeta de Wordcram/library el archivo Wordcram.jar y lo añadimos. Esto se debe hacer con los otros dos archivos que se encuentran en la carpeta: jsoup-1.7.2.jar y cue.language.jar [3]. Ya con esto nuevamente “play” y se abrirá una nueva ventana con la nube. Si no se abre la ventana, vamos al menú Sketch/Show sketch folder en el cual se encuentra la nube.

Para mi caso me he basado en dos códigos de la página oficial que permiten hacer ciertas variaciones:

a.

import wordcram.*;

void setup() {
  size(900, 500);
  colorMode(HSB);
}

void draw() {
  background(68);
  color red = color(0, 255, 255);
  color mustard = color(30, 255, 255);

  new WordCram(this)
// Si es desde una url entonces formWebPage
    .fromTextFile("/directorioarchivo/tuarchivo.txt")
    .withColors(color(0, 0, 0),
                color(0, 0, 255),
                mustard) // red)
    .withFonts(PFont.list())
    .withAngler(moreRandomByWeight())
    .withPlacer(crazyPlacer())
    .sizedByWeight(10, 100)
    .maxNumberOfWordsToDraw(300)
    .drawAll();
}

WordAngler moreRandomByWeight() {
  return new WordAngler() {
    public float angleFor(Word w) {
      float range = (1-w.weight) * PI;
      return random(-range, range);
    }
  };
}

WordPlacer crazyPlacer() {
  return new WordPlacer() {
    public PVector place(Word w, int rank, int words,
                        int ww, int wh, int fw, int fh) {
      float x = (fw-ww) * (1-w.weight);
      float y = random(fh-wh);
      return new PVector(x, y);
    }
  };
}

De esta manera, se obtiene una nube de palabras que va variando cada cierto tiempo. Recordemos que la cantidad de palabras también depende de lo extenso del texto, en mi caso no era tanto. Aquí dos imágenes:

P1P4

b.

import wordcram.*;
import wordcram.text.*;

void setup() {
  size(700, 500);
}

void draw() {
  background(255);
  new WordCram(this)
    .fromTextFile("/directorioarchivo/tuarchivo.txt")
    .withColors(
      color(0), color(230, 0, 0), color(0, 0, 230))
    .withPlacer(Placers.centerClump())
    .sizedByWeight(10, 100)
    .drawAll();

  saveFrame("sotu-##.png");
}

Obteniendo la siguiente nube (también va variando):

Mi nube con Wordcram en P2

Mi nube con Wordcram en P2

Como se verá, es sencillo de usar y se puede tener de base para trabajos posteriores. En la página encuentran más ejemplos y muy creativos.

Las imágenes se deben capturar y guardar, aunque existe un método para generar archivos .pdf o .svg.

Resumiendo:

  • Presenta opciones para una completa personalización de la nube, tanto en colores, forma de la nube, cantidad de palabras, tipo de letra, tamaño, entre otras.
  • Generalmente se obtiene una ventana que debemos capturar y guardar como imagen. También se puede agregar un comando para obtener el archivo en .pdf o .svg.
  • Entorno gráfico para trabajo.
  • Ejemplos y tutoriales dentro de la misma aplicación. Se puede trabajar con sus códigos como base para otros productos.
  • Existe una gran comunidad en la que se puede encontrar ayuda e información, así como aportar con ejemplos o modificaciones.

3. TagCrowd

Finalizando, tenemos esta aplicación web, que aunque no es completamente libre, los productos obtenidos de allí se encuentran bajo la licencia Creative Imagen tomada de la página oficialCommons Attribution-NonCommercial. TagCrowd es muy sencilla de usar, el sitio se encuentra en inglés pero es bastante intuitivo y presenta opciones para:

  • Introducir el texto base, subirlo desde un archivo o a partir de una dirección en internet.
  • Seleccionar el idioma de origen, número de palabras a mostrar y frecuencia de las mismas.
  • Excluir palabras.
  • Guardarlo como pdf o embeberlo.

Aunque es sencillo de usar, también presenta algunas desventajas como el no poder elegir una imagen para la nube, siempre la presenta como un cuadro y las palabras se organizan de manera horizontal; tampoco se puede escoger la fuente de la letra.

Ejemplo de mi nube de palabras realizado en TagCrowd.

Ejemplo de mi nube de palabras realizado en TagCrowd.

Actualmente existen muchas más aplicaciones, generalmente web, que permiten generar nubes de palabras de una manera más rápida y con algunas opciones de personalización. En una próxima entrada las trataré, y aunque no son libres, para cuestiones herramientas en educación haré una presentación.

La ventaja de que sean libres es que justamente pueden llegar a personalizarse tanto como el usuario quiera o necesite, sin las limitaciones que las demás aplicaciones establecen. Todo esto, respaldado por comunidades que trabajan alrededor de estas aplicaciones y en las cuales se pueden encotrar ayudas, información y se puede aportar con ejemplos o corrección de errores.

Notas al pie
[1] Aconsejo, antes de comenzar la creación de la nube, que si la versión de la aplicación es menor a la 2.15, se cierre la aplicación “q()” y se proceda a actualizarla, para evitar futuros conflictos entre los paquetes.
[2] Si la extensión del texto es muy corta, se puede recurrir a duplicar (o copiar cuantas veces sea necesario) para que el código pueda reconocer más palabras y la nube no quede reducida.
[3] Este procedimiento se debe hacer cada vez que se vaya a crear una nueva nube de palabras si se ha cerrado el IDE, de lo contrario ya queda registrado. Se debe hacer luego de haber corrido el programa, antes no funciona.
Anuncios
Minientrada | Esta entrada fue publicada en Aplicaciones y software, EducAcción y etiquetada , , , , , , , , , , . Guarda el enlace permanente.

14 respuestas a Aplicaciones libres para crear nubes de palabras

  1. Pingback: Aplicaciones libres para crear nubes de palabra...

  2. Pingback: Aplicaciones libres para crear nubes de palabras - Educacion enpildoras.com

  3. Pingback: Aplicaciones libres para crear nubes de palabra...

  4. Pingback: Aplicaciones libres para crear nubes de palabra...

  5. Pingback: Aplicaciones libres para crear nubes de palabra...

  6. Pingback: Aplicaciones libres para crear nubes de palabra...

  7. Pingback: Aplicaciones libres para crear nubes de palabras | Bibliotecas Escolares Argentinas

  8. Pingback: Aplicaciones libres para crear nubes de palabra...

  9. Nuria dijo:

    Muy buen artículo, pero por ejemplo, ¿cómo usarías una nube de palabras en clase? 🙂

    • Laura C. dijo:

      Bueno, estas nubes de palabras son muy usadas para comprensión de lectura, así que se tiene un documento base y se extraen las palabras clave, que darían una idea o complementarían la que se tiene en el momento. Podría también hacerse el proceso inverso, a partir de un video, de una actividad práctica, solicitar un documento (reflexión, resumen, ensayo, etc.) y con la nube verificar y comparar las palabras que para cada estudiante fueron importantes. Así, además, se comparten las experiencias.
      Un saludo! =)

  10. Pingback: Aplicaciones libres para crear nubes de palabra...

  11. Pingback: Aplicaciones libres para crear nubes de palabra...

  12. ¡Oh, qué gran artículo, Laura! Mi enhorabuena. Cuando sea mayor quiero escribir como tú 🙂 Un abrazo, Manuel.

  13. trox dijo:

    Muy interesante Laura, muchas gracias!

    He intentado emplear R – Wordcloud tal como indicas, pero al intentar crear la matriz obtengo esto:

    Error in UseMethod(“meta”, x) :
    no applicable method for ‘meta’ applied to an object of class “character”
    In addition: Warning message:
    In mclapply(unname(content(x)), termFreq, control) :
    all scheduled cores encountered errors in user code

    ¿alguna idea de qué puede estar pasando? Un saludo

Comenta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s