Programación en R: Paquete twitteR

No es ningún secreto el potencial que tiene R, puesto que es el mejor lenguaje de programación específico para realizar estudios estadísticos.

Lo que a lo mejor no es tan conocido es su paquete twitteR, que sirve para poder trabajar con todos los datos públicos que están en la API de la red social Twitter.

Tengo que reconocer que aun no soy un gran especialista en la materia, pero sí que me está apasionando, y empiezo a conseguir los primeros resultados.

De momento, a través de su estudio, he obtenido lo siguiente:

  • Correlaciones (recuerda que en este blog ya hablamos de ellas) con cualquier par de datos que nos aporta Twitter
  • Nubes de palabras, ya sea de hashtags, de términos o de usuarios
  • Diagramas de barras en los que se relacionan variables
  • Representación de grafos, en los que se puede apreciar las relaciones de RT entre usuarios.

Todo este trabajo no hubiera sido posible sin seguir el manual elaborado por Gastón Sanchez https://sites.google.com/site/miningtwitter/intro, que recomiendo a todos aquellos que se quieran iniciar en el manejo del paquete “twitteR”.

Como muestra de lo que podemos desarrollar, paso a mostraros como se programa mi aplicación favorita de las que he conseguido programar hasta el momento por su comodidad y visualidad: la nube con las palabras más repetidas por un usuario en Twitter.

###Cargamos las librerias necesaria

library(bitops)
library(RCurl)
library(rjson)
library(twitteR)
library(tm)
library(Rcpp)
library(RColorBrewer)
library(wordcloud)

###Seleccionamos los tweets de un usuario, en este caso mi propia cuenta @JcVirin

tweets = userTimeline(“jcvirin”, 1000)  #Lo hacemos para los últimos 1000 tuits

###Guardamos los tweets

df=twListToDF(tweets)

###Seleccionamos el texto de los tuits

texto=df$text

###Limpiamos los datos de elementos no deseados

textoclean = gsub(“(RT|via)((?:\b\W*@\w+)+)”, “”, texto) #Retuits
textoclean = gsub(“@\w+”, “”, textoclean)  #@otragente
textoclean = gsub(“[[:punct:]]”, “”, textoclean)  #simbolos de puntuacion
textoclean = gsub(“[[:digit:]]”, “”, textoclean)  #Numeros
textoclean = gsub(“http\w+”, “”, textoclean)   #Links

###Se construye un corpus

corpus = Corpus(VectorSource(textoclean))

###Lo pasamos todo a minúsculas

corpus = tm_map(corpus, tolower)

###Quitamos las palabras vacias de contenido en castellano (en, la, por,…) y mi propio usuario

corpus = tm_map(corpus, removeWords, c(stopwords(“spanish”), “jcvirin”))

###Quitamos los espacios en blanco extras

corpus = tm_map(corpus, stripWhitespace)

###Creamos la matriz de terminos a partir del corpus

tdm <- TermDocumentMatrix(corpus)
m = as.matrix(tdm)

###Orden de uso de palabras de forma decreciente

wf <- sort(rowSums(m),decreasing=TRUE)

###Crea un data frame con las palabras y sus frecuencias

dm <- data.frame(word = names(wf), freq=wf)

###Imprime la nube de palabras

wordcloud(dm$word, dm$freq, random.order=FALSE, colors=brewer.pal(6, “Accent”))

Como se puede apreciar, el resultado es espectacular:Captura de pantalla 2013-02-21 a las 11.28.17Hemos programado R para que nos devuelva este resultado, pero se pueden sacar nubes de cualquier dato: horas, usuarios, hashtags… ¿Cuál se te ocurre a tí?

Proximamente iremos ampliando las aplicaciones de twitteR a través de nuevos posts.

@JcVirin

 

5 Comments

  1. ary 30 abril, 2013
    • Jose Carlos Gamez 30 abril, 2013
  2. Miguel 9 septiembre, 2013
    • Jose Carlos Gamez 9 septiembre, 2013
  3. Mariano Cavallero 17 agosto, 2017

Add Comment

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

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies