มากกว่าคำ: การแบ่งโทเคน (1)
การขุดข้อความ (text mining) ถูกนำไปใช้ในหลากหลายบริบท เช่น การวิเคราะห์รีวิวสินค้าเพื่อทำความเข้าใจความรู้สึกของผู้ซื้อ หรือการวิเคราะห์ข่าวการเงินเพื่อประเมินแนวโน้มของราคาหุ้น ในการวิเคราะห์ข้อมูลข้อความ ขั้นตอนการเตรียมข้อมูลที่พบบ่อย ได้แก่ การแปลงข้อความเป็นตัวพิมพ์เล็กทั้งหมด (ดู tolower()) และการแยกประโยคออกเป็นคำแต่ละคำ
ft_tokenizer() ทำทั้งสองขั้นตอนนี้พร้อมกัน รูปแบบการใช้งานเหมือนกับฟังก์ชันการแปลงข้อมูลอื่น ๆ ที่ได้เรียนมา โดยไม่ต้องระบุอาร์กิวเมนต์เพิ่มเติม
shop_reviews %>%
ft_tokenizer("review_text", "review_words")
เนื่องจากผลลัพธ์แต่ละแถวอาจมีจำนวนคำไม่เท่ากัน output.col จึงเป็น list column ที่แต่ละองค์ประกอบเป็น list ของ string ในการวิเคราะห์ข้อมูลข้อความ มักจะสะดวกกว่าหากมีหนึ่งคำต่อหนึ่งแถว รูปแบบ list-of-list-of-strings สามารถแปลงเป็น character vector เดี่ยวได้โดยใช้ unnest() จากแพ็กเกจ tidyr ปัจจุบันยังไม่มีวิธี unnest ข้อมูลบน Spark โดยตรง จึงต้องรวบรวมข้อมูลมายัง R ก่อน แล้วจึงแปลง รูปแบบโค้ดมีดังนี้
library(tidyr)
text_data %>%
ft_tokenizer("sentences", "word") %>%
collect() %>%
mutate(word = lapply(word, as.character)) %>%
unnest(word)
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับแพ็กเกจ tidyr สามารถเรียนได้ที่คอร์ส Cleaning Data in R
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
แนะนำ Spark ด้วย sparklyr ใน R
คำแนะนำการฝึกหัด
ระบบได้สร้าง Spark connection ให้แล้วในชื่อ spark_conn และกำหนด tibble ที่เชื่อมต่อกับ track metadata ที่จัดเก็บใน Spark ไว้ล่วงหน้าในชื่อ track_metadata_tbl
- สร้างตัวแปรชื่อ
title_textจากtrack_metadata_tbl- เลือกฟิลด์
artist_nameและtitle - ใช้
ft_tokenizer()เพื่อสร้างฟิลด์ใหม่ชื่อwordซึ่งเก็บชื่อเพลงที่ถูกแยกออกเป็นคำแต่ละคำ - รวบรวมผลลัพธ์
- แปลงคอลัมน์
wordโดยทำให้แบนราบเป็น list ของ character vector โดยใช้lapplyและas.character - ใช้
unnest()เพื่อทำให้ list column แบนราบ และได้หนึ่งคำต่อหนึ่งแถว
- เลือกฟิลด์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# track_metadata_tbl has been pre-defined
track_metadata_tbl
title_text <- track_metadata_tbl %>%
# Select artist_name, title
___ %>%
# Tokenize title to words
___ %>%
# Collect the result
___ %>%
# Flatten the word column
___ %>%
# Unnest the list column
___