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

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

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

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

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

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

Мини-проект Twitter

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

Например, после получения твитов мы получаем эти странные символы: «<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 vector, мы можем легко преобразовать его в матрицу набора слов и применить алгоритм обучения без учителя.