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