Учебники

Аналитика больших данных — очистка данных

Как только данные собраны, у нас обычно есть различные источники данных с различными характеристиками. Самым непосредственным шагом было бы сделать эти источники данных однородными и продолжать развивать наш продукт данных. Однако это зависит от типа данных. Мы должны спросить себя, целесообразно ли гомогенизировать данные.

Возможно, источники данных совершенно разные, и потеря информации будет большой, если источники будут гомогенизированы. В этом случае мы можем думать об альтернативах. Может ли один источник данных помочь мне построить модель регрессии, а другой — модель классификации? Можно ли работать с неоднородностью на наше преимущество, а не просто терять информацию? Принятие этих решений — вот что делает аналитику интересной и сложной.

В случае обзоров, можно иметь язык для каждого источника данных. Опять же, у нас есть два варианта —

  • Гомогенизация — включает перевод разных языков на язык, на котором у нас больше данных. Качество услуг перевода приемлемо, но если мы хотим перевести большие объемы данных с помощью API, стоимость будет значительной. Для этой задачи доступны программные средства, но это будет слишком дорого.

  • Гетерогенизация — можно ли разработать решение для каждого языка? Так как язык корпуса просто определить, мы могли бы разработать рекомендацию для каждого языка. Это потребовало бы дополнительной работы с точки зрения настройки каждого рекомендателя в соответствии с количеством доступных языков, но, безусловно, является приемлемым вариантом, если у нас есть несколько доступных языков.

Гомогенизация — включает перевод разных языков на язык, на котором у нас больше данных. Качество услуг перевода приемлемо, но если мы хотим перевести большие объемы данных с помощью API, стоимость будет значительной. Для этой задачи доступны программные средства, но это будет слишком дорого.

Гетерогенизация — можно ли разработать решение для каждого языка? Так как язык корпуса просто определить, мы могли бы разработать рекомендацию для каждого языка. Это потребовало бы дополнительной работы с точки зрения настройки каждого рекомендателя в соответствии с количеством доступных языков, но, безусловно, является приемлемым вариантом, если у нас есть несколько доступных языков.

Twitter Mini Project

В данном случае нам нужно сначала очистить неструктурированные данные, а затем преобразовать их в матрицу данных, чтобы применить к ним моделирование тем. В целом, при получении данных из твиттера есть несколько символов, которые нам не нужны, по крайней мере, на первом этапе процесса очистки данных.

Например, после получения твитов мы получаем следующие странные символы: «<ed> <U + 00A0> <U + 00BD> <ed> <U + 00B8> <U + 008B>». Вероятно, это смайлики, поэтому для очистки данных мы просто удалим их, используя следующий скрипт. Этот код также доступен в файле 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 "

Последний шаг мини-проекта по очистке данных — очистить текст, который мы можем преобразовать в матрицу, и применить алгоритм. Из текста, хранящегося в векторе clean_tweets, мы можем легко преобразовать его в матрицу пакетов слов и применить алгоритм обучения без присмотра.