การวิเคราะห์ข้อมูลขนาดใหญ่ - การล้างข้อมูล

เมื่อรวบรวมข้อมูลแล้วเราจะมีแหล่งข้อมูลที่หลากหลายและมีลักษณะที่แตกต่างกัน ขั้นตอนที่รวดเร็วที่สุดคือการทำให้แหล่งข้อมูลเหล่านี้เป็นเนื้อเดียวกันและพัฒนาผลิตภัณฑ์ข้อมูลของเราต่อไป อย่างไรก็ตามขึ้นอยู่กับประเภทของข้อมูล เราควรถามตัวเองว่าสามารถทำให้ข้อมูลเป็นเนื้อเดียวกันได้จริงหรือไม่

บางทีแหล่งข้อมูลอาจแตกต่างกันอย่างสิ้นเชิงและข้อมูลจะสูญหายไปมากหากแหล่งข้อมูลนั้นถูกทำให้เป็นเนื้อเดียวกัน ในกรณีนี้เราสามารถคิดหาทางเลือกอื่น แหล่งข้อมูลหนึ่งสามารถช่วยฉันสร้างแบบจำลองการถดถอยและอีกแหล่งหนึ่งเป็นแบบจำลองการจำแนกได้หรือไม่ เป็นไปได้หรือไม่ที่จะทำงานร่วมกับความแตกต่างจากความได้เปรียบของเราแทนที่จะสูญเสียข้อมูลเพียงอย่างเดียว? การตัดสินใจเหล่านี้เป็นสิ่งที่ทำให้การวิเคราะห์น่าสนใจและท้าทาย

ในกรณีของบทวิจารณ์เป็นไปได้ที่จะมีภาษาสำหรับแหล่งข้อมูลแต่ละแหล่ง อีกครั้งเรามีสองทางเลือก -

  • Homogenization- เกี่ยวข้องกับการแปลภาษาต่างๆเป็นภาษาที่เรามีข้อมูลมากขึ้น คุณภาพของบริการแปลเป็นที่ยอมรับได้ แต่หากเราต้องการแปลข้อมูลจำนวนมากด้วย API ค่าใช้จ่ายจะสูงมาก มีเครื่องมือซอฟต์แวร์สำหรับงานนี้ แต่ก็มีค่าใช้จ่ายสูงเช่นกัน

  • Heterogenization- เป็นไปได้ไหมที่จะพัฒนาโซลูชันสำหรับแต่ละภาษา เนื่องจากเป็นเรื่องง่ายในการตรวจจับภาษาของคลังข้อมูลเราจึงสามารถพัฒนาผู้แนะนำสำหรับแต่ละภาษาได้ สิ่งนี้จะเกี่ยวข้องกับการทำงานมากขึ้นในแง่ของการปรับแต่งผู้แนะนำแต่ละรายตามจำนวนภาษาที่มีอยู่ แต่เป็นตัวเลือกที่ใช้ได้อย่างแน่นอนหากเรามีภาษาไม่กี่ภาษา

Twitter Mini Project

ในกรณีปัจจุบันเราต้องทำความสะอาดข้อมูลที่ไม่มีโครงสร้างก่อนจากนั้นจึงแปลงเป็นเมทริกซ์ข้อมูลเพื่อใช้การสร้างแบบจำลองหัวข้อกับข้อมูลนั้น โดยทั่วไปเมื่อรับข้อมูลจาก 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 เวกเตอร์เราสามารถแปลงเป็นเมทริกซ์ถุงคำได้อย่างง่ายดายและใช้อัลกอริทึมการเรียนรู้ที่ไม่มีผู้ดูแล