สังเกตกฎของ Zipf ได้จากที่ไหน?
แม้ Zipf จะสังเกตว่าการใช้คำมีแนวโน้มลดลงอย่างชันและคาดเดาได้ แต่บางคนอาจยังไม่เชื่อในกฎของ Zipf อาจมีความคิดว่า "ฉันรู้จักคำศัพท์มากมาย และมีคลังคำที่หลากหลาย" ซึ่งอาจเป็นความจริงสำหรับบางคน แต่ไม่ใช่สำหรับคนส่วนใหญ่! เพื่อพิสูจน์เรื่องนี้ มาสร้างภาพจากทวีต 3 ล้านรายการที่กล่าวถึง "#sb" กัน โดยพึงระลึกไว้ว่าภาพที่ได้อาจไม่สอดคล้องกับกฎของ Zipf อย่างสมบูรณ์ เนื่องจากทวีตทั้งหมดใช้แฮชแท็กเดียวกัน จึงมีความเบี่ยงเบนอยู่บ้าง อย่างไรก็ตาม กราฟที่จะสร้างขึ้นแสดงให้เห็นถึงการลดลงอย่างชัน ซึ่งสะท้อนถึงความหลากหลายทางคำศัพท์ที่ต่ำในกลุ่มทวีตหลายล้านรายการ นี่จึงเป็นเหตุผลทางวิทยาศาสตร์ที่สนับสนุนการใช้ lexicon ในการวิเคราะห์ภาษาธรรมชาติ!
ในแบบฝึกหัดนี้จะใช้แพ็กเกจ metricsgraphics แม้ผู้พัฒนาแนะนำให้ใช้ pipe operator %>% แต่เราจะสร้างกราฟทีละขั้นตอนเพื่อทำความเข้าใจแต่ละส่วนของกราฟ ฟังก์ชันหลักของแพ็กเกจ metricsgraphics คือ mjs_plot() ซึ่งเป็นจุดเริ่มต้นในการสร้าง JavaScript plot เมื่อได้กราฟพื้นฐานแล้ว จึงค่อยเพิ่ม layer อื่น ๆ ทับลงไป
ตัวอย่าง workflow ของ metricsgraphics แบบไม่ใช้ operator %>% มีดังนี้:
metro_plot <- mjs_plot(data, x = x_axis_name, y = y_axis_name, show_rollover_text = FALSE)
metro_plot <- mjs_line(metro_plot)
metro_plot <- mjs_add_line(metro_plot, line_one_values)
metro_plot <- mjs_add_legend(metro_plot, legend = c('names', 'more_names'))
metro_plot
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์ความรู้สึกใน R
คำแนะนำการฝึกหัด
- ใช้
head()กับsb_wordsเพื่อดูคำที่พบบ่อยที่สุด - สร้างคอลัมน์ใหม่ชื่อ
expectationsโดยหารfreq[1](ความถี่ของคำที่พบมากที่สุด) ด้วยคอลัมน์rank - เริ่มสร้าง
sb_plotโดยใช้mjs_plot()- ส่ง
sb_wordsโดยกำหนดx = rankและy = freq - ภายใน
mjs_plot()ให้ตั้งค่าshow_rollover_textเป็นFALSE
- ส่ง
- เขียนทับ
sb_plotโดยใช้mjs_line()แล้วส่งsb_plotเข้าไป - เพิ่มข้อมูลใน
sb_plotด้วยmjs_add_line()- ส่ง
sb_plotobject ก่อนหน้าและเวกเตอร์expectationsเข้าไป
- ส่ง
- เพิ่ม legend ใน
sb_plotobject ใหม่โดยใช้mjs_add_legend()- ส่ง
sb_plotobject ก่อนหน้าเข้าไป - ป้ายกำกับ legend ควรประกอบด้วย
"Frequency"และ"Expectation"
- ส่ง
- เรียก
sb_plotเพื่อแสดงกราฟ ลองนำเมาส์ไปวางเหนือจุดใดจุดหนึ่งเพื่อไฮไลต์จุดของfreqและExpectationพร้อมกัน นี่คือความสามารถของ JavaScript!
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Examine sb_words
___
# Create expectations
sb_words$expectations <- sb_words %$%
{___[___] / ___}
# Create metrics plot
sb_plot <- ___(___, x = ___, y = ___, ___ = ___)
# Add 1st line
sb_plot <- ___(___)
# Add 2nd line
sb_plot <- ___(___, ___)
# Add legend
sb_plot <- ___(___, legend = c("___", "___"))
# Display plot
sb_plot