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:Hemos 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
hola una disculpa estoy probando el codigo que colocaste pero me pide autentificacion oAuth que puedo hacer???? cambio el api de twitter o que pasa????
Ese código lo hice en las fechas que publiqué el post y la verdad que no he vuelto a trabajar con ello. A mí nunca me pidió nada, no sé si Twitter habrá cambiado las condiciones para acceder a su API.
Imagino que tienes instalado todos los paquetes en R que son necesearios, ¿verdad? A lo mejor falta alguno y eso te provoca el error.
Siento no poder ser de más ayuda. Un saludo.
Hola Jose Carlos parece que si ha cambiado el API porque a mi tampoc me resulta, sabes algo al respecto?
Hola Miguel,
Siento decirte que no lo se. Esa programación la hice hace unos 8 meses por trabajo en una consultora. Pero hace ya meses que no trabajo allí, y la verdad que no he vuelto a trabajar con el paquete twitteR desde entonces.
Siento no poder ser de más ayuda.
Un saludo
Buenas, por casualidad recuerdas como se hace para laburar con los tildes, porque cuando realizo el wordcloud los tildes y las «ñ» me las codifica mal tipo Mañana = Ma¿’ana.
Muy buen laburo, me sirvio muchísimo.
Saludos