Big Data Analytics: limpieza de datos
Una vez que se recopilan los datos, normalmente tenemos diversas fuentes de datos con diferentes características. El paso más inmediato sería homogeneizar estas fuentes de datos y continuar desarrollando nuestro producto de datos. Sin embargo, depende del tipo de datos. Deberíamos preguntarnos si es práctico homogeneizar los datos.
Tal vez las fuentes de datos sean completamente diferentes y la pérdida de información será grande si las fuentes se homogeneizan. En este caso, podemos pensar en alternativas. ¿Puede una fuente de datos ayudarme a construir un modelo de regresión y la otra un modelo de clasificación? ¿Es posible trabajar con la heterogeneidad a nuestro favor en lugar de simplemente perder información? Tomar estas decisiones es lo que hace que la analítica sea interesante y desafiante.
En el caso de las revisiones, es posible tener un idioma para cada fuente de datos. Nuevamente, tenemos dos opciones:
Homogenization- Implica traducir diferentes idiomas al idioma donde tenemos más datos. La calidad de los servicios de traducción es aceptable, pero si quisiéramos traducir cantidades masivas de datos con una API, el costo sería significativo. Hay herramientas de software disponibles para esta tarea, pero eso también sería costoso.
Heterogenization- ¿Sería posible desarrollar una solución para cada idioma? Como es sencillo detectar el idioma de un corpus, podríamos desarrollar un recomendador para cada idioma. Esto implicaría más trabajo en términos de ajustar cada recomendador de acuerdo con la cantidad de idiomas disponibles, pero definitivamente es una opción viable si tenemos algunos idiomas disponibles.
Mini proyecto de Twitter
En el caso presente, primero debemos limpiar los datos no estructurados y luego convertirlos en una matriz de datos para aplicar el modelado de temas en ellos. En general, al obtener datos de Twitter, hay varios caracteres que no estamos interesados en usar, al menos en la primera etapa del proceso de limpieza de datos.
Por ejemplo, después de recibir los tweets obtenemos estos caracteres extraños: "<ed> <U + 00A0> <U + 00BD> <ed> <U + 00B8> <U + 008B>". Probablemente se trata de emoticonos, por lo que para limpiar los datos, simplemente los eliminaremos usando el siguiente script. Este código también está disponible en el archivo bda / part1 / collect_data / cleaning_data.R.
rm(list = ls(all = TRUE)); gc() # Clears the global environment
source('collect_data_twitter.R')
# Some tweets
head(df$text)
[1] "I’m not a big fan of turkey but baked Mac &
cheese <ed><U+00A0><U+00BD><ed><U+00B8><U+008B>"
[2] "@Jayoh30 Like no special sauce on a big mac. HOW"
### We are interested in the text - Let’s clean it!
# We first convert the encoding of the text from latin1 to ASCII
df$text <- sapply(df$text,function(row) iconv(row, "latin1", "ASCII", sub = ""))
# Create a function to clean tweets
clean.text <- function(tx) {
tx <- gsub("htt.{1,20}", " ", tx, ignore.case = TRUE)
tx = gsub("[^#[:^punct:]]|@|RT", " ", tx, perl = TRUE, ignore.case = TRUE)
tx = gsub("[[:digit:]]", " ", tx, ignore.case = TRUE)
tx = gsub(" {1,}", " ", tx, ignore.case = TRUE)
tx = gsub("^\\s+|\\s+$", " ", tx, ignore.case = TRUE)
return(tx)
}
clean_tweets <- lapply(df$text, clean.text)
# Cleaned tweets
head(clean_tweets)
[1] " WeNeedFeminlsm MAC s new make up line features men woc and big girls "
[1] " TravelsPhoto What Happens To Your Body One Hour After A Big Mac "
El paso final del mini proyecto de limpieza de datos es tener un texto limpio que podamos convertir a una matriz y aplicar un algoritmo. Del texto almacenado en elclean_tweets vector, podemos convertirlo fácilmente en una matriz de bolsa de palabras y aplicar un algoritmo de aprendizaje no supervisado.