AFINN: ได้เลย ฉันพร้อม
ต่อไปเราจะมาทำความรู้จักกับ AFINN lexicon กัน AFINN lexicon ใช้ค่าตัวเลขตั้งแต่ 5 ถึง -5 ไม่ใช่แค่บวกหรือลบเพียงอย่างเดียว และต่างจาก Bing lexicon ตรงที่คอลัมน์คะแนน sentiment ของ AFINN จะใช้ชื่อว่า value
เช่นเดิม ให้ใช้ inner_join() แล้วตามด้วย count() จากนั้นเพื่อรวมคะแนนของแต่ละบรรทัด เราจะใช้ฟังก์ชัน group_by() และ summarize() จาก dplyr ฟังก์ชัน group_by() รับ data frame ที่มีอยู่แล้วแปลงเป็น grouped data frame ซึ่งการดำเนินการต่าง ๆ จะทำ "ตามกลุ่ม" จากนั้น summarize() จะช่วยให้คำนวณค่าสำหรับแต่ละกลุ่มใน data frame ได้ โดยใช้ฟังก์ชันที่รวบรวมข้อมูล เช่น sum() หรือ mean() ตัวอย่างเช่น
data_frame %>%
group_by(book_line) %>%
summarize(total_value = sum(book_line))
ใน tidy version ของ Huckleberry Finn บรรทัดที่ 9703 มีคำว่า "best", "ever", "fun", "life" และ "spirit" โดย "best" และ "fun" มีคะแนน AFINN เท่ากับ 3 และ 4 ตามลำดับ หลังจากรวมคะแนนแล้ว บรรทัดที่ 9703 จะมีคะแนนรวมเท่ากับ 7
ใน tidyverse นิยมใช้ filter() แทน subset() เนื่องจากรวมความสามารถของ subset() ไว้ด้วยพร้อม syntax ที่กระชับกว่า ตัวอย่างด้านล่างใช้ filter() กับ data_frame โดยกรองเฉพาะแถวที่ค่าใน column1 เท่ากับ 24 สังเกตว่าชื่อคอลัมน์ไม่ต้องใส่เครื่องหมายคำพูด
filter(data_frame, column1 == 24)
ออบเจกต์ afinn คือ AFINN lexicon และออบเจกต์ huck คือ tidy version ของ Adventures of Huckleberry Finn โดย Mark Twain ที่เตรียมไว้สำหรับการวิเคราะห์
บรรทัดที่ 5400 คือ All the loafers looked glad; I reckoned they was used to having fun out of Boggs. โดย stopword และเครื่องหมายวรรคตอนถูกลบออกจากชุดข้อมูลแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์ความรู้สึกใน R
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# See abbreviated line 5400
huck %>% filter(line == 5400)
# What are the scores of the sentiment words?
afinn %>% filter(word %in% c("fun", "glad"))
huck_afinn <- huck %>%
# Inner Join to AFINN lexicon
inner_join(___, by = c("___" = "___")) %>%
# Count by value and line
___(___, ___)