เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

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 = ___)
แก้ไขและรันโค้ด