Análise de Big Data - Limpeza de Dados

Depois que os dados são coletados, normalmente temos diversas fontes de dados com características diferentes. A etapa mais imediata seria tornar essas fontes de dados homogêneas e continuar a desenvolver nosso produto de dados. No entanto, depende do tipo de dados. Devemos nos perguntar se é prático homogeneizar os dados.

Talvez as fontes de dados sejam completamente diferentes e a perda de informações será grande se as fontes forem homogeneizadas. Nesse caso, podemos pensar em alternativas. Uma fonte de dados pode me ajudar a construir um modelo de regressão e a outra um modelo de classificação? É possível trabalhar com a heterogeneidade a nosso favor, em vez de apenas perder informações? Tomar essas decisões é o que torna a análise interessante e desafiadora.

No caso de resenhas, é possível ter um idioma para cada fonte de dados. Novamente, temos duas opções -

  • Homogenization- Trata-se de traduzir diferentes idiomas para o idioma onde temos mais dados. A qualidade dos serviços de tradução é aceitável, mas se quisermos traduzir grandes quantidades de dados com uma API, o custo seria significativo. Existem ferramentas de software disponíveis para essa tarefa, mas isso também seria caro.

  • Heterogenization- Seria possível desenvolver uma solução para cada idioma? Como é simples detectar a linguagem de um corpus, poderíamos desenvolver um recomendador para cada linguagem. Isso envolveria mais trabalho em termos de ajuste de cada recomendador de acordo com a quantidade de idiomas disponíveis, mas é definitivamente uma opção viável se tivermos alguns idiomas disponíveis.

Mini Projeto Twitter

No caso presente, precisamos primeiro limpar os dados não estruturados e, em seguida, convertê-los em uma matriz de dados para aplicar a modelagem de tópicos nela. Em geral, ao obter dados do twitter, existem vários personagens que não temos interesse em usar, pelo menos na primeira fase do processo de limpeza de dados.

Por exemplo, depois de receber os tweets, obtemos estes caracteres estranhos: "<ed> <U + 00A0> <U + 00BD> <ed> <U + 00B8> <U + 008B>". Provavelmente são emoticons, portanto, para limpar os dados, vamos apenas removê-los usando o seguinte script. Este código também está disponível no arquivo 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 "

A etapa final do miniprojeto de limpeza de dados é limpar o texto que podemos converter em uma matriz e aplicar um algoritmo. A partir do texto armazenado noclean_tweets vetor podemos facilmente convertê-lo em uma matriz de saco de palavras e aplicar um algoritmo de aprendizagem não supervisionado.