สร้าง Tidy Text Tibble!
เมื่อได้เรียนรู้หลักการ tidy แล้ว โค้ดนี้จะช่วยจัดระเบียบข้อมูลให้อยู่ในรูป tibble เพื่อให้ทำงานภายใน tidyverse ได้สะดวก
ก่อนหน้านี้ได้เรียนรู้ว่าการใช้ tidy() กับออบเจกต์ TermDocumentMatrix() จะแปลง TDM ให้เป็น tibble ในแบบฝึกหัดนี้จะสร้างข้อมูลคำโดยตรงจากคอลัมน์รีวิวที่ชื่อว่า comments
ขั้นแรกใช้ unnest_tokens() เพื่อแปลงข้อความเป็นตัวพิมพ์เล็กและตัดรีวิวออกเป็นคำเดี่ยว
บางครั้งการบันทึกลำดับคำเดิมภายในแต่ละกลุ่มของ corpus อาจมีประโยชน์ ให้ใช้ mutate() เพื่อทำสิ่งนี้ โดยภายใน mutate() จะใช้ seq_along() เพื่อสร้างลำดับตัวเลขตั้งแต่ 1 จนถึงความยาวของออบเจกต์ ซึ่งจะเก็บลำดับคำตามที่ปรากฏในข้อความต้นฉบับ
ใน package tm จะใช้ removeWords() เพื่อลบ stopwords แต่ใน tidyverse ต้องโหลด stop words lexicon ก่อน แล้วจึงใช้ anti_join() ระหว่าง tidy text data frame กับ stopwords
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์ความรู้สึกใน R
คำแนะนำการฝึกหัด
- สร้าง
tidy_reviewsโดย pipe (%>%) ออบเจกต์รีวิวต้นฉบับbos_reviewsไปยังฟังก์ชันunnest_tokens()ส่งชื่อคอลัมน์ใหม่wordและระบุคอลัมน์commentsโดยใน tidyverse ไม่จำเป็นต้องใช้$หรือเครื่องหมายคำพูด - สร้างตัวแปรใหม่แบบ tidy! เขียน
tidy_reviewsใหม่โดย pipetidy_reviewsไปยังgroup_byด้วยคอลัมน์idจากนั้น%>%ต่อไปยังmutate()ภายใน mutate ให้สร้างตัวแปรใหม่original_word_orderให้มีค่าเท่ากับseq_along(word) - แสดงผล tibble
tidy_reviews - โหลด stopwords "SMART" ที่เตรียมไว้ล่วงหน้าเข้า R session ด้วย
data("stop_words") - เขียนทับ
tidy_reviewsโดย pipetidy_reviewsต้นฉบับไปยังanti_join()ด้วย%>%แล้วส่งstop_wordslexicon ที่เตรียมไว้เข้าไปในanti_join()
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Vector to tibble
tidy_reviews <- bos_reviews %>%
___(___, ___)
# Group by and mutate
tidy_reviews <- tidy_reviews %>%
___(___) %>%
___(original_word_order = ___(___))
# Quick review
___
# Load stopwords
___
# Perform anti-join
tidy_reviews_without_stopwords <- tidy_reviews %>%
___(___)