DTM เทียบกับ matrix แบบ tidytext
tidyverse คือชุดของแพ็กเกจ R ที่มีแนวคิดร่วมกันและออกแบบมาให้ทำงานร่วมกันได้อย่างลงตัว บทนี้จะครอบคลุมฟังก์ชันแบบ tidy สำหรับจัดการข้อมูล และในแบบฝึกหัดนี้ คุณจะได้เปรียบเทียบ DTM กับ data frame แบบ tidy text ที่เรียกว่า tibble
ใน tidyverse แต่ละการสังเกตการณ์จะเป็นหนึ่งแถวใน data frame ซึ่งทำให้การทำงานข้ามแพ็กเกจต่าง ๆ ง่ายขึ้นมาก เนื่องจากโครงสร้างข้อมูลพื้นฐานเหมือนกัน บางส่วนของคอร์สนี้อ้างอิงจากแพ็กเกจ tidytext ซึ่งใช้การจัดระเบียบข้อมูลในรูปแบบนี้
ตัวอย่างเช่น คุณอาจคุ้นเคยกับตัวดำเนินการ %>% จากแพ็กเกจ magrittr อยู่แล้ว ตัวดำเนินการนี้จะส่งต่ออ็อบเจกต์ทางด้านซ้ายไปเป็นอาร์กิวเมนต์แรกของฟังก์ชันทางด้านขวา
ในตัวอย่างด้านล่าง อ็อบเจกต์ data จะถูกส่งต่อไปยัง function1() สังเกตว่าวงเล็บว่างเปล่า จากนั้นผลลัพธ์จะถูกส่งต่อไปยัง function2() ในฟังก์ชันสุดท้าย ไม่จำเป็นต้องระบุ data อีกครั้ง เพราะส่งต่อมาจากผลลัพธ์ของ function1() แล้ว แต่สามารถเพิ่มพารามิเตอร์อื่น เช่น some_parameter เป็น TRUE ได้ การใช้ pipe ต่อกันแบบนี้จะสร้าง object ในที่สุด
object <- data %>%
function1() %>%
function2(some_parameter = TRUE)
ในการใช้ตัวดำเนินการ %>% ไม่จำเป็นต้องโหลดแพ็กเกจ magrittr เสมอไป เพราะมีให้ใช้งานในแพ็กเกจ dplyr เช่นกัน
dplyr ยังมีฟังก์ชัน inner_join() (ซึ่งจะได้เรียนรู้เพิ่มเติมในภายหลัง) และ count() สำหรับนับข้อมูล นอกจากนี้ยังมีฟังก์ชัน mutate() สำหรับสร้างตัวแปรใหม่หรือแก้ไขตัวแปรที่มีอยู่
object <- data %>%
mutate(new_Var_name = Var1 - Var2)
หรือสำหรับการแก้ไขตัวแปร
object <- data %>%
mutate(Var1 = as.factor(Var1))
นอกจากนี้ยังจะได้ใช้ฟังก์ชัน pivot_wider() จาก tidyr เพื่อจัดระเบียบข้อมูลให้แต่ละแถวเป็นหนึ่งบรรทัดจากหนังสือ และมีค่าบวกกับค่าลบเป็นคอลัมน์
| index | negative | positive |
|---|---|---|
| 42 | 2 | 0 |
| 43 | 0 | 1 |
| 44 | 1 | 0 |
ในการแปลง DTM เป็นรูปแบบ tidy ให้ใช้ tidy() จากแพ็กเกจ broom
tidy_format <- tidy(Document_Term_Matrix)
แบบฝึกหัดนี้ใช้ข้อความจากบทละครโศกนาฏกรรมกรีกเรื่อง Agamemnon ซึ่งเป็นเรื่องราวเกี่ยวกับการนอกใจและการฆาตกรรม สามารถดาวน์โหลดได้ที่นี่
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์ความรู้สึกใน R
คำแนะนำการฝึกหัด
เราได้สร้าง DTM ที่ผ่านการทำความสะอาดแล้วชื่อว่า ag_dtm ไว้ให้แล้วสำหรับแบบฝึกหัดนี้
- สร้าง
ag_dtm_mโดยใช้as.matrix()กับag_dtm - ใช้วงเล็บ
[และ]เพื่อ indexag_dtm_mที่แถว2206 - ใช้
tidy()กับag_dtmแล้วตั้งชื่ออ็อบเจกต์ใหม่ว่าag_tidy - ตรวจสอบ
ag_tidyที่แถว[831:835, ]เพื่อเปรียบเทียบรูปแบบ tidy จะพบคำที่พบบ่อยจากส่วนที่ตรวจสอบในag_dtm_mในขั้นตอนที่ 2
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# As matrix
ag_dtm_m <- ___
# Examine line 2206 and columns 245:250
ag_dtm_m[___, 245:250]
# Tidy up the DTM
ag_tidy <- ___
# Examine tidy with a word you saw
ag_tidy[___, ]