Big Data Analytics - Nettoyage des données

Une fois les données collectées, nous disposons généralement de sources de données diverses avec des caractéristiques différentes. L'étape la plus immédiate serait de rendre ces sources de données homogènes et de continuer à développer notre produit de données. Cependant, cela dépend du type de données. Nous devons nous demander s'il est pratique d'homogénéiser les données.

Peut-être que les sources de données sont complètement différentes et que la perte d'informations sera importante si les sources étaient homogénéisées. Dans ce cas, nous pouvons penser à des alternatives. Une source de données peut-elle m'aider à créer un modèle de régression et l'autre un modèle de classification? Est-il possible de travailler avec l'hétérogénéité à notre avantage plutôt que de simplement perdre des informations? Prendre ces décisions est ce qui rend l'analyse intéressante et stimulante.

Dans le cas des avis, il est possible d'avoir une langue pour chaque source de données. Encore une fois, nous avons deux choix -

  • Homogenization- Il s'agit de traduire différentes langues dans la langue où nous avons le plus de données. La qualité des services de traduction est acceptable, mais si nous souhaitons traduire des quantités massives de données avec une API, le coût serait important. Il existe des outils logiciels disponibles pour cette tâche, mais cela serait également coûteux.

  • Heterogenization- Serait-il possible de développer une solution pour chaque langue? Comme il est simple de détecter la langue d'un corpus, nous pourrions développer un recommandeur pour chaque langue. Cela impliquerait plus de travail en termes de réglage de chaque recommandateur en fonction de la quantité de langues disponibles, mais c'est certainement une option viable si nous avons quelques langues disponibles.

Mini projet Twitter

Dans le cas présent, nous devons d'abord nettoyer les données non structurées, puis les convertir en matrice de données afin d'y appliquer la modélisation de sujets. En général, lors de l'obtention de données sur Twitter, il y a plusieurs caractères que nous ne souhaitons pas utiliser, du moins dans la première étape du processus de nettoyage des données.

Par exemple, après avoir reçu les tweets, nous obtenons ces caractères étranges: "<ed> <U + 00A0> <U + 00BD> <ed> <U + 00B8> <U + 008B>". Ce sont probablement des émoticônes, donc pour nettoyer les données, nous allons simplement les supprimer en utilisant le script suivant. Ce code est également disponible dans le fichier 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 "

La dernière étape du mini-projet de nettoyage des données consiste à nettoyer le texte que nous pouvons convertir en matrice et à appliquer un algorithme. À partir du texte stocké dans leclean_tweets vector, nous pouvons facilement le convertir en une matrice de sacs de mots et appliquer un algorithme d'apprentissage non supervisé.