แบ่งแล้วพิชิต: ใช้ค่า Polarity สร้าง Comparison Cloud
ตอนนี้ที่เห็นแล้วว่า polarity สามารถนำมาแบ่งคอร์ปัสได้อย่างไร มาลองทำกันเลย! โค้ดในแบบฝึกหัดนี้จะพาแบ่งคอร์ปัสตามค่าความรู้สึก เพื่อให้สามารถมองเข้าไปในข้อมูลแต่ละส่วนย่อยแทนที่จะมองภาพรวมทั้งหมด
ใน R session มีออบเจ็กต์ oz_pol ซึ่งสร้างขึ้นโดยการใช้ polarity() กับข้อความ "The Wonderful Wizard of Oz"
เพื่อความสะดวก เราได้สร้างฟังก์ชันที่กำหนดเองอย่างง่ายชื่อ pol_subsections() ซึ่งจะแบ่งคอร์ปัสตามค่า polarity โดยฟังก์ชันรับ data frame ที่แต่ละแถวเป็นประโยคหรือเอกสาร จากนั้นกรองข้อมูลเฉพาะแถวที่มีค่า polarity มากกว่าหรือน้อยกว่า 0 แล้วนำประโยคที่มีค่าบวกและลบ (non-zero polarity) มา paste รวมกันด้วยพารามิเตอร์ collapse เพื่อจัดกลุ่มคำให้เป็นคอร์ปัสเดียว และสุดท้ายนำทั้งสองเอกสารมา concatenate เป็น vector เดียวที่ประกอบด้วยสองเอกสารที่แตกต่างกัน
pol_subsections <- function(df) {
x.pos <- subset(df$text, df$polarity > 0)
x.neg <- subset(df$text, df$polarity < 0)
x.pos <- paste(x.pos, collapse = " ")
x.neg <- paste(x.neg, collapse = " ")
all.terms <- c(x.pos, x.neg)
return(all.terms)
}
ตอนนี้ได้ตัดประโยคที่เป็นกลางออกไปแล้ว และต้องการจัดระเบียบข้อความที่เหลือ ในแบบฝึกหัดนี้จะใช้ตัวดำเนินการ %>% อีกครั้งเพื่อส่งออบเจ็กต์ต่อไปยังฟังก์ชัน หลังจากทำความสะอาดข้อมูลเบื้องต้นแล้ว ให้ใช้ comparison.cloud() เพื่อสร้างภาพแสดงผล
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์ความรู้สึกใน R
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
oz_df <- oz_pol$all %>%
# Select text.var as text and polarity
___(text = ___, polarity = ___)
# Apply custom function pol_subsections()
all_terms <- ___(___)
all_corpus <- all_terms %>%
# Source from a vector
___() %>%
# Make a volatile corpus
___()