Phân tích dữ liệu lớn - Xóa dữ liệu

Khi dữ liệu được thu thập, chúng ta thường có các nguồn dữ liệu đa dạng với các đặc điểm khác nhau. Bước trước mắt nhất là làm cho các nguồn dữ liệu này đồng nhất và tiếp tục phát triển sản phẩm dữ liệu của chúng tôi. Tuy nhiên, nó phụ thuộc vào loại dữ liệu. Chúng ta nên tự hỏi liệu việc đồng nhất dữ liệu có thực tế hay không.

Có thể các nguồn dữ liệu hoàn toàn khác nhau và tổn thất thông tin sẽ lớn nếu các nguồn được đồng nhất. Trong trường hợp này, chúng ta có thể nghĩ đến các phương án thay thế. Một nguồn dữ liệu có thể giúp tôi xây dựng mô hình hồi quy và nguồn còn lại là mô hình phân loại không? Có thể làm việc với sự không đồng nhất có lợi cho chúng ta hơn là chỉ mất thông tin không? Đưa ra những quyết định này là điều khiến phân tích trở nên thú vị và đầy thách thức.

Trong trường hợp đánh giá, có thể có một ngôn ngữ cho mỗi nguồn dữ liệu. Một lần nữa, chúng tôi có hai lựa chọn -

  • Homogenization- Nó liên quan đến việc dịch các ngôn ngữ khác nhau sang ngôn ngữ mà chúng tôi có nhiều dữ liệu hơn. Chất lượng của các dịch vụ dịch có thể chấp nhận được, nhưng nếu chúng tôi muốn dịch một lượng lớn dữ liệu bằng API, chi phí sẽ rất đáng kể. Có các công cụ phần mềm có sẵn cho nhiệm vụ này, nhưng điều đó cũng sẽ tốn kém.

  • Heterogenization- Có thể phát triển một giải pháp cho mỗi ngôn ngữ không? Vì việc phát hiện ngôn ngữ của một kho ngữ liệu rất đơn giản, chúng tôi có thể phát triển một đề xuất cho mỗi ngôn ngữ. Điều này sẽ đòi hỏi nhiều công việc hơn trong việc điều chỉnh từng giới thiệu theo số lượng ngôn ngữ có sẵn nhưng chắc chắn là một lựa chọn khả thi nếu chúng tôi có sẵn một vài ngôn ngữ.

Dự án nhỏ Twitter

Trong trường hợp hiện tại, trước tiên chúng ta cần làm sạch dữ liệu phi cấu trúc và sau đó chuyển nó thành ma trận dữ liệu để áp dụng mô hình chủ đề trên đó. Nói chung, khi lấy dữ liệu từ twitter, có một số ký tự mà chúng tôi không muốn sử dụng, ít nhất là trong giai đoạn đầu tiên của quá trình làm sạch dữ liệu.

Ví dụ, sau khi nhận được tweet, chúng ta nhận được các ký tự lạ sau: "<ed> <U + 00A0> <U + 00BD> <ed> <U + 00B8> <U + 008B>". Đây có thể là những biểu tượng cảm xúc, vì vậy để làm sạch dữ liệu, chúng tôi sẽ xóa chúng bằng cách sử dụng tập lệnh sau. Mã này cũng có sẵn trong tệp 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 "

Bước cuối cùng của dự án mini làm sạch dữ liệu là làm sạch văn bản mà chúng ta có thể chuyển đổi thành ma trận và áp dụng một thuật toán. Từ văn bản được lưu trữ trongclean_tweets vectơ chúng ta có thể dễ dàng chuyển nó thành ma trận túi từ và áp dụng một thuật toán học không giám sát.