Stressed Out!
ในแบบฝึกหัดนี้ คุณจะปรับชุดคำเชิงลบให้เหมาะสมกับข้อความที่กำลังวิเคราะห์ แล้วเปรียบเทียบคะแนนจาก polarity() แบบค่าเริ่มต้นกับแบบกำหนดเอง
เพลงยอดนิยมของ Twenty One Pilots ชื่อว่า "Stressed Out" หากลองอ่านเนื้อเพลง จะพบว่าเพลงนี้พูดถึงความทรงจำในวัยเด็กด้วยความคิดถึง โดยรวมแล้ว คนส่วนใหญ่จะบอกว่าโทนของเพลงเป็นเชิงลบ เนื้อเพลงพูดถึงความเครียด ความกลัว และการแกล้งทำซ้ำแล้วซ้ำเล่า
มาลองเปรียบเทียบเนื้อเพลงนี้โดยใช้ทั้ง subjectivity lexicon ค่าเริ่มต้น และแบบที่กำหนดเองกัน
ก่อนอื่น ต้องตรวจสอบก่อนว่า subjectivity lexicon key.pol มีคำที่ต้องการเพิ่มอยู่แล้วหรือไม่ วิธีหนึ่งที่ใช้ตรวจสอบได้คือฟังก์ชัน grep() ซึ่งจะคืนค่าแถวที่มีอักขระตรงกับรูปแบบที่ค้นหา ตัวอย่างการใช้งานร่วมกับการ indexing มีดังนี้
data_frame[grep("search_pattern", data_frame$column), ]
เมื่อยืนยันแล้วว่าคำแสลงหรือคำใหม่ยังไม่มีใน lexicon key.pol ก็สามารถเพิ่มคำเหล่านั้นได้ โค้ดด้านล่างใช้ sentiment_frame() เพื่อสร้าง lexicon ใหม่ โดย sentiment_frame() รับเวกเตอร์คำเชิงบวกเดิม positive.words จากนั้นนำ negative.words เดิมมาเชื่อมกับ "smh" และ "kappa" ซึ่งเป็นคำแสลงเชิงลบ แม้จะกำหนดน้ำหนักเชิงบวกและเชิงลบเองได้ แต่ค่าเริ่มต้นคือ 1 และ -1 จึงไม่ต้องระบุในตัวอย่างนี้
custom_pol <- sentiment_frame(positive.words, c(negative.words, "hate", "pain"))
ตอนนี้พร้อมแล้วสำหรับการวิเคราะห์ polarity โดยอ้างอิง subjectivity lexicon แบบ กำหนดเอง!
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์ความรู้สึกใน R
คำแนะนำการฝึกหัด
เราได้สร้างตัวแปร stressed_out ที่เก็บเนื้อเพลง "Stressed Out" ของ Twenty One Pilots ไว้ให้แล้ว
- ใช้
polarity()กับstressed_outเพื่อดูคะแนนค่าเริ่มต้น - ตรวจสอบ
key.polว่ามีคำที่มี "stress" อยู่หรือไม่ โดยใช้grep()เพื่อ index ใน data frame ผ่านคอลัมน์x - สร้าง
custom_polเป็น sentiment data frame ใหม่- เรียก
sentiment_frame()และส่งpositive.wordsเป็นอาร์กิวเมนต์แรก โดยไม่ต้องเพิ่มคำใหม่ - จากนั้นใช้
c()เชื่อมnegative.wordsเข้ากับคำใหม่ "stressed" และ "turn back"
- เรียก
- เรียก
polarity()กับstressed_outอีกครั้ง โดยเพิ่มพารามิเตอร์polarity.frame = custom_polเพื่อเปรียบเทียบว่าคำใหม่เหล่านี้เปลี่ยนคะแนนให้สะท้อนความหมายของเพลงได้แม่นยำขึ้นอย่างไร
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# stressed_out has been pre-defined
head(stressed_out)
# Basic lexicon score
___(___)
# Check the subjectivity lexicon
___[___("stress", x)]
# New lexicon
custom_pol <- ___(___, c(negative.words, "___", "___"))
# Compare new score
___(___, polarity.frame = ___)