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