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

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
  • ใช้วงเล็บ [ และ ] เพื่อ index ag_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[___, ]
แก้ไขและรันโค้ด