บทความทั้งหมด

การวิเคราะห์ความถี่ข้อความ: จาก word cloud สู่การถอดรหัส

การวิเคราะห์ความถี่ข้อความนับว่าคำหรือตัวอักษรแต่ละตัวปรากฏในข้อความกี่ครั้ง แต่ในภาษาไทย การนับ "ความถี่ของคำ" มีอุปสรรคตั้งแต่ขั้นตอนแรก เพราะภาษาไทยไม่มีช่องว่างคั่นระหว่างคำเลย

ทำไมต้องตัดคำก่อนจะนับความถี่ได้

ต่างจากภาษาอังกฤษที่แค่แยกคำตามช่องว่างก็พอ ข้อความภาษาไทยเขียนติดกันเป็นพืดยาว การนับความถี่คำในภาษาไทยจึงต้องผ่านขั้นตอนตัดคำ (word segmentation) ด้วยพจนานุกรมหรือแบบจำลองภาษาก่อนเสมอ มิฉะนั้นเครื่องมือจะไม่รู้ด้วยซ้ำว่าขอบเขตของแต่ละ "คำ" อยู่ตรงไหน

ความถี่ตัวอักษรทำได้ง่ายกว่าความถี่คำ

ตรงข้ามกับความถี่คำ การนับความถี่ตัวอักษรในภาษาไทยทำได้ตรงไปตรงมากว่ามาก เพราะสามารถนับทีละอักขระ (code point) โดยไม่ต้องรู้ขอบเขตคำ แม้สระบางตัวจะลอยอยู่เหนือหรือใต้พยัญชนะแทนที่จะเรียงในบรรทัดเดียวกันก็ตาม นี่คือเหตุผลที่การวิเคราะห์ความถี่ระดับตัวอักษรในภาษาไทยมักให้ผลลัพธ์ที่น่าเชื่อถือกว่าระดับคำ เว้นแต่จะมีตัวตัดคำที่แม่นยำ

ความถี่ตัวอักษรและการถอดรหัสแบบคลาสสิก

รหัสแทนที่แบบง่ายไม่เปลี่ยนการกระจายความถี่ของตัวอักษร เพียงจัดเรียงใหม่ว่าตัวอักษรใดตรงกับตัวอักษรใด โดยเปรียบเทียบการกระจายความถี่ของข้อความที่เข้ารหัสกับการกระจายที่ทราบของภาษาต้นฉบับ สามารถกู้คืนการจับคู่ตัวอักษรและถอดรหัสได้โดยไม่ต้องลองทุกกุญแจที่เป็นไปได้

ทำไมต้องใช้สิ่งนี้

  • เข้าใจหัวข้อหลักของเอกสารยาวอย่างรวดเร็วจากคำที่ปรากฏบ่อยที่สุด (หลังจากตัดคำแล้ว)
  • ตรวจสอบว่าข้อความมีการกระจายตัวอักษรที่เป็นธรรมชาติหรือไม่ (แบบฝึกหัดการศึกษาด้านการเข้ารหัส)
  • วิเคราะห์การซ้ำของคำเพื่อปรับปรุง SEO ของข้อความในหน้าเว็บ

กฎของ Zipf

ในภาษาธรรมชาติ ความถี่ของคำมักแปรผกผันกับอันดับของคำนั้นในรายการที่เรียงจากความถี่มากไปน้อย: คำที่พบบ่อยที่สุดจะปรากฏบ่อยประมาณสองเท่าของคำที่พบบ่อยเป็นอันดับสอง สามเท่าของคำที่พบบ่อยเป็นอันดับสาม และเป็นเช่นนี้ต่อไป รูปแบบนี้ (กฎของ Zipf) มีความเสถียรมากสำหรับข้อความทั่วไป จนความเบี่ยงเบนอย่างมีนัยสำคัญจากรูปแบบนี้กลายเป็นสัญญาณ: ข้อความนั้นอาจถูกสร้างขึ้นโดยเทียม เป็นสแปมที่ยัดคำสำคัญมากเกินไป หรือเขียนด้วยภาษาอื่นที่ต่างจากที่คาดไว้

ลองใช้เครื่องมือ