การวิเคราะห์อารมณ์เชิงลึก
ในแบบฝึกหัดนี้ เราจะก้าวไปไกลกว่าการกรองคำตามแง่บวกและแง่ลบ โดยจะแบ่งข้อความตามอารมณ์ทั้ง 8 ประเภทในวงล้ออารมณ์ของ Plutchik เพื่อสร้างภาพประกอบ แนวทางนี้ช่วยให้เห็นการใช้คำได้ชัดเจนยิ่งขึ้น เพราะจับคู่คำกับอารมณ์เฉพาะเจาะจง แทนที่จะแยกเพียงแค่บวกหรือลบ
โดยใช้ subjectivity lexicon "nrc" จาก tidytext แล้วทำ inner_join() กับข้อความของคุณ lexicon "nrc" มีทั้ง 8 อารมณ์ บวกกับคลาสคำแง่บวกและแง่ลบ ดังนั้นหลังจาก inner_join() แล้ว จะต้องตัดคำที่เป็นบวกและลบออก วิธีหนึ่งคือใช้การนิเสธ ! ร่วมกับ grepl()
ฟังก์ชัน "Global Regular Expression Print Logical" หรือ grepl() จะคืนค่า True หรือ False เมื่อพบรูปแบบสตริงในแต่ละแถว ในแบบฝึกหัดนี้จะค้นหาคำว่า positive หรือ negative โดยใช้ตัวดำเนินการ | ซึ่งหมายถึง "หรือ" ดังตัวอย่างด้านล่าง โดยทั่วไปเส้นตรงนี้จะอยู่เหนือปุ่ม Enter บนแป้นพิมพ์ เนื่องจาก ! นิเสธอยู่หน้า grepl() ค่า T หรือ F จึงถูกสลับ ทำให้ "positive|negative" ถูกตัดออกแทนที่จะเก็บไว้
Object <- tibble %>%
filter(!grepl("positive|negative", column_name))
จากนั้นใช้ count() กับคำที่ระบุได้ ร่วมกับ pivot_wider() เพื่อจัดรูปแบบ data frame
comparison.cloud() ต้องการให้ข้อมูลนำเข้ามี row names ดังนั้นจึงต้องแปลงเป็น data.frame แบบ base-R โดยเรียก data.frame() พร้อมระบุอาร์กิวเมนต์ row.names
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์ความรู้สึกใน R
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
moby_tidy <- moby %>%
# Inner join to nrc lexicon
___(___, by = c("term" = "word")) %>%
# Drop positive or negative
___(!___("___", sentiment)) %>%
# Count by sentiment and term
___(___, ___) %>%
# Pivot sentiment, using n for values
___(names_from = ___, values_from = ___, values_fill = ___) %>%
# Convert to data.frame, making term the row names
data.frame(row.names = "___")
# Examine
head(moby_tidy)