Scraping Twitter
Extraccion de Tweets
La cantidad de Twits que circulan en la red, son una fuente de informacion muy valiosa, es por ello, que se han desarrollado tecnicas para lograr extraer dicha informacion.
Haciendo uso de la libreria rtweet, no haremos con informacion referente a Tarjetas de Credito.
##
## -- Column specification --------------------------------------------------------
## cols(
## screen_name = col_character(),
## created_at = col_datetime(format = ""),
## status_id = col_double(),
## text = col_character()
## )
A continuacion se muestra la informacion obtenida.
Tokenizacion y Limpieza de Texto
El proceso de limpieza de texto, dentro del Ômbito de text mining, consiste en eliminar del texto todo aquello que no aporte información sobre su temÔtica, estructura o contenido. Tokenizar un texto consiste en dividir el texto en las unidades que lo conforman, entendiendo por unidad el elemento mÔs sencillo con significado propio para el anÔlisis en cuestión, en este caso, las palabras.
# Limpieza de texto y tokenización
limpiar_tokenizar <- function(texto){
# El orden de la limpieza no es arbitrario
# Se convierte todo el texto a minĆŗsculas
nuevo_texto <- tolower(texto)
nuevo_texto <- str_replace_all(nuevo_texto,"RT @[a-z,A-Z]*: ","")
# Get rid of hashtags
nuevo_texto <- str_replace_all(nuevo_texto,"#[a-z,A-Z]*","")
# Get rid of references to other screennames
nuevo_texto <- str_replace_all(nuevo_texto,"@[a-z,A-Z]*","")
# Eliminación de pÔginas web (palabras que empiezan por "http." seguidas
# de cualquier cosa que no sea un espacio)
nuevo_texto <- str_replace_all(nuevo_texto,"http\\S*", "")
# Eliminación de signos de puntuación
nuevo_texto <- str_replace_all(nuevo_texto,"[[:punct:]]", " ")
# Eliminación de nĆĀŗmeros
nuevo_texto <- str_replace_all(nuevo_texto,"[[:digit:]]", " ")
# Eliminación de espacios en blanco múltiples
nuevo_texto <- str_replace_all(nuevo_texto,"[\\s]+", " ")
# Tokenización por palabras individuales
nuevo_texto <- str_split(nuevo_texto, " ")[[1]]
# Eliminación de tokens con una longitud < 2
nuevo_texto <- keep(.x = nuevo_texto, .p = function(x){str_length(x) > 1})
return(nuevo_texto)
}
# Se aplica la función de limpieza y tokenización a cada tweet
Busqueda <- Busqueda %>% mutate(texto_tokenizado = map(.x = text,
.f = limpiar_tokenizar))
# Analisis Exploratorio
tweets_tidy <- Busqueda %>% dplyr::select(-text)%>% unnest()
Representacion Visual
Una forma visual de representar las palabras mÔs frecuentes es mediante nubes de palabras (word clouds). En esta representación, las palabras mÔs importantes tienen mayor tamaño.
library(wordcloud)
library(RColorBrewer)
df <- tweets_tidy %>% group_by(token) %>% summarise(frecuencia=n())
total <- sum(df$frecuencia)
df <- df%>%
mutate(frecuencia=frecuencia/total)
wordcloud(words = df$token, freq = df$frecuencia,
max.words = 400, random.order = FALSE, rot.per = 0.35,
colors = brewer.pal(8, "Dark2"))