Big Data Analytics - Pulizia dei dati

Una volta raccolti i dati, normalmente abbiamo diverse fonti di dati con caratteristiche diverse. Il passo più immediato sarebbe rendere omogenee queste origini dati e continuare a sviluppare il nostro prodotto dati. Tuttavia, dipende dal tipo di dati. Dovremmo chiederci se è pratico omogeneizzare i dati.

Forse le fonti di dati sono completamente diverse e la perdita di informazioni sarà grande se le fonti fossero omogeneizzate. In questo caso, possiamo pensare ad alternative. Un'origine dati può aiutarmi a creare un modello di regressione e l'altra un modello di classificazione? È possibile lavorare con l'eterogeneità a nostro vantaggio piuttosto che perdere semplicemente le informazioni? Prendere queste decisioni è ciò che rende l'analisi dei dati interessante e stimolante.

Nel caso delle revisioni, è possibile avere una lingua per ogni fonte di dati. Ancora una volta, abbiamo due scelte:

  • Homogenization- Implica la traduzione di lingue diverse nella lingua in cui abbiamo più dati. La qualità dei servizi di traduzione è accettabile, ma se volessimo tradurre enormi quantità di dati con un'API, il costo sarebbe significativo. Sono disponibili strumenti software per questa attività, ma anche questo sarebbe costoso.

  • Heterogenization- Sarebbe possibile sviluppare una soluzione per ogni lingua? Poiché è semplice rilevare la lingua di un corpus, potremmo sviluppare un suggeritore per ogni lingua. Ciò comporterebbe più lavoro in termini di messa a punto di ciascun consigliere in base alla quantità di lingue disponibili, ma è sicuramente un'opzione praticabile se abbiamo poche lingue disponibili.

Mini progetto Twitter

In questo caso dobbiamo prima pulire i dati non strutturati e poi convertirli in una matrice di dati per applicare la modellazione degli argomenti su di essi. In generale, quando si ottengono dati da Twitter, ci sono diversi caratteri che non ci interessa utilizzare, almeno nella prima fase del processo di pulizia dei dati.

Ad esempio, dopo aver ricevuto i tweet otteniamo questi strani caratteri: "<ed> <U + 00A0> <U + 00BD> <ed> <U + 00B8> <U + 008B>". Si tratta probabilmente di emoticon, quindi per pulire i dati, li rimuoveremo semplicemente utilizzando lo script seguente. Questo codice è disponibile anche nel file 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 "

Il passaggio finale del mini progetto di pulizia dei dati consiste nell'avere un testo pulito che possiamo convertire in una matrice e a cui applicare un algoritmo. Dal testo memorizzato nel fileclean_tweets vettore possiamo convertirlo facilmente in una matrice di parole e applicare un algoritmo di apprendimento non supervisionato.