Büyük Veri Analitiği - Verileri Temizleme

Veriler toplandıktan sonra, normalde farklı özelliklere sahip çeşitli veri kaynaklarımız olur. En acil adım, bu veri kaynaklarını homojen hale getirmek ve veri ürünümüzü geliştirmeye devam etmek olacaktır. Ancak, veri türüne bağlıdır. Verileri homojenleştirmenin pratik olup olmadığını kendimize sormalıyız.

Belki veri kaynakları tamamen farklıdır ve kaynaklar homojenleştirilirse bilgi kaybı büyük olacaktır. Bu durumda alternatifler düşünebiliriz. Bir veri kaynağı bir regresyon modeli ve diğeri bir sınıflandırma modeli oluşturmama yardımcı olabilir mi? Sadece bilgi kaybetmektense, bizim avantajımız olan heterojenlikle çalışmak mümkün müdür? Bu kararları almak, analitiği ilginç ve zorlu kılan şeydir.

İnceleme durumunda, her veri kaynağı için bir dil olması mümkündür. Yine, iki seçeneğimiz var -

  • Homogenization- Farklı dilleri daha fazla veriye sahip olduğumuz dile çevirmeyi içerir. Çeviri hizmetlerinin kalitesi kabul edilebilir, ancak büyük miktarda veriyi bir API ile çevirmek istersek, maliyet önemli olacaktır. Bu görev için mevcut yazılım araçları vardır, ancak bu da maliyetli olacaktır.

  • Heterogenization- Her dil için bir çözüm geliştirmek mümkün müdür? Bir külliyatın dilini tespit etmek basit olduğundan, her dil için bir önerici geliştirebiliriz. Bu, her bir tavsiyeyi mevcut dil miktarına göre ayarlamak açısından daha fazla çalışma gerektirecektir, ancak mevcut birkaç dilimiz varsa kesinlikle uygun bir seçenektir.

Twitter Mini Projesi

Mevcut durumda, konu modellemesini uygulamak için önce yapılandırılmamış verileri temizlememiz ve ardından bir veri matrisine dönüştürmemiz gerekiyor. Genel olarak, twitter'dan veri alırken, en azından veri temizleme işleminin ilk aşamasında kullanmak istemediğimiz birkaç karakter vardır.

Örneğin, tweetleri aldıktan sonra şu garip karakterleri alıyoruz: "<ed> <U + 00A0> <U + 00BD> <ed> <U + 00B8> <U + 008B>". Bunlar muhtemelen ifadelerdir, bu nedenle verileri temizlemek için aşağıdaki komut dosyasını kullanarak onları kaldıracağız. Bu kod ayrıca bda / part1 / Collect_data / Cleaning_data.R dosyasında da mevcuttur.

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 "

Veri temizleme mini projesinin son adımı, bir matrise dönüştürebileceğimiz ve bir algoritma uygulayabileceğimiz metni temizlemektir. İçinde depolanan metindenclean_tweets vektör, bunu bir torba kelime matrisine kolayca dönüştürebilir ve denetimsiz bir öğrenme algoritması uygulayabiliriz.