คำไทยไม่ได้สั้นอย่างที่ตาเห็น: นับตัวอักษรไทยกับอังกฤษต่างกันตรงไหน

10

เผยแพร่เมื่อ

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

คนที่ค้นหาเรื่องนี้มักไม่ได้อยากฟังนิยามสวยหรู พวกเขากำลังหัวเสียกับงานจริง เช่น ทำไมคำไทยคำเดียวโดนนับหลายตัวกว่าที่คิด ทำไมโปรแกรมหนึ่งบอก 10 ตัว แต่อีกโปรแกรมบอก 12 ตัว หรือทำไมประโยคอังกฤษยาวพอๆ กัน แต่พอแปลเป็นไทยแล้วพื้นที่กลับไม่พอ ถ้าจะคุยเรื่อง นับตัวอักษรภาษาไทย ให้เข้าใจจริง ต้องเลิกมองแค่หน้าตา แล้วลงไปดูโครงสร้างของภาษาแบบไม่หลอกตัวเอง

คำว่า “ตัวอักษร” นี่แหละตัวปัญหา

เวลาคนพูดว่า “มีกี่ตัวอักษร” เขามักเหมารวมหลายอย่างไว้ในคำเดียว ทั้งตัวที่พิมพ์ลงไป ตัวที่มองเห็นเป็นก้อนเดียว และหน่วยที่สมองอ่านออกเป็นเสียงเดียว พอคำเดียวมีหลายชั้น การนับก็เลยไม่ตรงกันตั้งแต่ต้น ไม่ใช่เพราะใครโง่ แต่เพราะแต่ละคนกำลังนับคนละอย่างโดยไม่รู้ตัว

ตาเห็นหนึ่งก้อน ระบบอาจเห็นหลายตัว

ลองดูคำไทยสั้นๆ อย่าง “ก็” คนอ่านส่วนใหญ่รู้สึกว่ามันเป็นก้อนเดียว แต่ถ้าแยกเชิงเทคนิค มันประกอบด้วยพยัญชนะ “ก” และเครื่องหมาย “็” รวมเป็น 2 อักขระ หรือคำว่า “เก่ง” ที่อ่านเป็นหนึ่งพยางค์ ก็ไม่ได้แปลว่ามีหนึ่งตัว มันเกิดจากหลายส่วนที่ประกอบกัน เช่น สระหน้า พยัญชนะ วรรณยุกต์ และพยัญชนะท้าย

ตรงนี้ต่างจากภาษาอังกฤษแบบพื้นฐานอย่าง “cat” ที่โดยทั่วไป c-a-t คือ 3 ตัว มองเห็น 3 ตัว พิมพ์ 3 ตัว นับ 3 ตัว จบง่ายๆ เลย ภาษาอังกฤษในงานทั่วไปมักมีความสัมพันธ์แบบหนึ่งต่อหนึ่งระหว่างสิ่งที่เห็นกับสิ่งที่นับ แต่ภาษาไทยไม่ใจดีแบบนั้น

ไทยกับอังกฤษต่างกันที่โครงสร้าง ไม่ใช่แค่จำนวนตัว

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

ภาษาอังกฤษส่วนใหญ่เรียงตรงไปตรงมา

ในภาษาอังกฤษ ตัวอักษรพื้นฐาน A-Z ทำงานค่อนข้างตรง เสียงจะยากหรือสะกดไม่เป็นตรรกะก็อีกเรื่อง แต่เวลานับตัวอักษรในคำทั่วไปอย่าง house, market, school เราแทบไม่ต้องเถียงกันว่ามีกี่ตัว เพราะแต่ละตัวตั้งอยู่ของมันเอง

แน่นอน ภาษาอังกฤษก็มีกรณีพิเศษ เช่น ตัวอักษรมีเครื่องหมายกำกับในคำยืมอย่าง cafe กับ café หรือการเข้ารหัสที่อาจเก็บไม่เหมือนกันในบางระบบ แต่ในงานประจำวันบนเว็บ ฟอร์ม หรือเอกสารทั่วไป ความยุ่งระดับนั้นไม่ได้เจอบ่อยเท่าภาษาไทย

ภาษาไทยมีตัวหลัก และมีของที่มาเกาะตัวหลัก

ภาษาไทยใช้พยัญชนะเป็นแกน แล้วเอาสระกับวรรณยุกต์มาประกอบ บางตัวอยู่หน้า เช่น “เ-” บางตัวอยู่บน เช่น “่” บางตัวอยู่ล่าง และบางตัวอยู่หลัง พอรวมกันแล้วสิ่งที่เราเห็นเป็นคำสั้นๆ อาจมีจำนวนอักขระมากกว่าที่คิด เช่น “เก้า” ดูแวบแรกเหมือนก้อนเดียวของหนึ่งพยางค์ แต่ตอนพิมพ์จริงมีหลายส่วนประกอบ

นี่คือเหตุผลที่คำไทยมัก “ดูสั้น” แต่ “ถูกนับยาว” โดยเฉพาะในระบบที่นับตามอักขระแต่ละตัว ไม่ได้นับตามก้อนที่สายตาเห็น

ทำไมเครื่องมือนับแล้วคนละเรื่อง

หลายคนพังตรงนี้เต็มๆ เปิดเว็บนับตัวอักษรเจ้าแรกได้ตัวเลขหนึ่ง เอาไปวางในระบบหลังบ้านกลับได้อีกตัวเลขหนึ่ง แล้วคิดว่าเครื่องมือใดเครื่องมือหนึ่งผิด ความจริงอาจไม่มีใครผิด แค่แต่ละระบบใช้หลักนับคนละแบบ

บางระบบนับตามรหัส ไม่ได้นับตามที่คนอ่าน

ในเชิงคอมพิวเตอร์ ข้อความถูกเก็บเป็นหน่วยข้อมูล เช่น code point หรือหน่วยย่อยตามมาตรฐานการเข้ารหัสอย่าง Unicode พอระบบทำงานในระดับนี้ มันไม่ได้สนใจว่าคนมองเห็นเป็นก้อนเดียวหรืออ่านเป็นหนึ่งพยางค์ มันสนใจว่ามีองค์ประกอบกี่ตัวถูกป้อนเข้าไป

ผลคือคำไทยที่มีสระและวรรณยุกต์ประกอบ มักถูกนับละเอียดกว่าความรู้สึกของผู้ใช้ นี่เป็นเหตุผลว่าทำไมเวลาเอาชื่อสินค้า ชื่อบัญชี หรือชื่อไฟล์ไปใส่ในฟอร์ม บางครั้งระบบบอกว่าเกินลิมิตทั้งที่มองด้วยตาแล้วไม่น่าจะเกินเลยสักนิด

บางงานไม่ได้ต้องการ “จำนวนอักขระ” แต่ต้องการ “หน่วยใช้งาน”

อีกปัญหาคือคนชอบใช้คำว่า count characters ทั้งที่งานจริงต้องการอย่างอื่น เช่น ต้องการจำนวนคำสำหรับงานแปล ต้องการความยาวบรรทัดสำหรับซับไตเติล หรือต้องการความพอดีบนหน้าจอมือถือ ซึ่งสามเรื่องนี้ไม่เท่ากันเลย

ภาษาอังกฤษได้เปรียบตรงมีช่องว่างคั่นคำชัดเจน การนับคำเลยค่อนข้างตรงไปตรงมา แต่ภาษาไทยปกติไม่เว้นวรรคทุกคำ การตัดคำจึงต้องอาศัยพจนานุกรมหรืออัลกอริทึมเพิ่มอีกชั้น ถ้าคุณยังไม่แยกให้ออกว่ากำลังนับ “ตัว” “คำ” หรือ “พื้นที่แสดงผล” คุณจะเถียงกับตัวเลขทั้งวันโดยไม่ได้อะไรกลับมา

ใช้กรอบคิดสามชั้นก่อนเถียงเรื่องจำนวน

ถ้าจะให้ใช้งานได้จริง ผมแนะนำให้เลิกถามลอยๆ ว่า “มีกี่ตัวอักษร” แล้วเปลี่ยนเป็นถามให้ชัดว่าคุณต้องการนับชั้นไหน ผมเรียกกรอบนี้แบบบ้านๆ ว่า โมเดล “ตัว-ก้อน-คำ” มันไม่หรู แต่มันกันงานพังได้ดีกว่าคำอธิบายยาวเป็นหน้ากระดาษ

ชั้นที่ 1: นับตามตัวที่ระบบเก็บ

ชั้นนี้เหมาะกับงานฟอร์ม ฐานข้อมูล โปรแกรมตรวจลิมิต หรือ API ถ้าระบบระบุว่าเก็บได้กี่ characters ให้ระวังทันทีว่า characters ในที่นี้อาจหมายถึงอักขระที่เก็บจริง ไม่ใช่ก้อนที่คนอ่านเห็น เวลา นับตัวอักษรภาษาไทย เพื่อส่งเข้าระบบ ชั้นนี้คือชั้นที่พลาดบ่อยสุด เพราะเครื่องหมายประกอบถูกนับแยก

ชั้นที่ 2: นับตามก้อนที่ตาเห็น

ชั้นนี้เหมาะกับงานออกแบบหน้าจอ งานอ่านง่าย หรือการสื่อสารกับคนทั่วไป ถ้าคำว่า “เก่ง” ดูเป็นก้อนอ่านง่ายหนึ่งก้อน คุณอาจสนใจภาพรวมแบบนี้มากกว่าจำนวนอักขระจริง แต่ต้องจำไว้ว่า ก้อนที่เห็น ไม่ได้เท่ากับจำนวนที่ระบบเก็บเสมอ

ชั้นที่ 3: นับตามหน่วยความหมาย

ชั้นนี้ใช้กับงานเขียน งานแปล งานตัดคำ และการคำนวณเนื้อหาที่เกี่ยวกับคำหรือพยางค์มากกว่าตัวอักษร เช่น การประเมินความยาวข้อความสำหรับคนอ่าน หรือการเปรียบเทียบว่าคำแปลไทยกินเนื้อที่มากขึ้นเพราะอะไร บางครั้งประโยคอังกฤษ 8 คำ แปลเป็นไทยแล้วอาจเหลือ 6 คำ แต่จำนวนอักขระกลับมากกว่าเดิมได้ นี่ไม่ใช่เรื่องแปลกเลย

ถ้าต้องทำงานจริง เลือกวิธีนับแบบนี้

พอเห็นโครงสร้างแล้ว เรื่องจะง่ายขึ้นเยอะ เพราะคุณไม่ต้องเดาอีกต่อไปว่าจะเชื่อเครื่องมือไหน ให้เริ่มจากชนิดของงานก่อน แล้วค่อยเลือกวิธีนับให้ตรง งานแต่ละแบบต้องการคนละคำตอบ ไม่ใช่คำตอบเดียวครอบทุกอย่าง

  • ถ้าเป็นฟอร์ม สมัครสมาชิก ชื่อสินค้า ชื่อไฟล์: เช็กกับระบบจริงเสมอ อย่าเชื่อการกะด้วยสายตา โดยเฉพาะคำไทยที่มีวรรณยุกต์และสระประกอบ
  • ถ้าเป็นงานเขียนบนเว็บหรือพาดหัว: อย่ามองแต่จำนวนตัวอักษร เพราะพื้นที่แสดงผลจริงเกี่ยวกับความกว้างของตัวอักษรด้วย ไม่ใช่แค่ตัวเลขล้วนๆ
  • ถ้าเป็นงานแปลหรือซับไตเติล: แยกให้ออกว่ากำลังคุมจำนวนคำ จำนวนตัว หรือความเร็วในการอ่าน เพราะสามอย่างนี้ดึงกันคนละทิศ
  • ถ้าเป็นการเปรียบเทียบไทยกับอังกฤษ: อย่าใช้สูตรเดียวกันแบบทื่อๆ ภาษาอังกฤษมักนับง่ายกว่าในชีวิตประจำวัน แต่ภาษาไทยต้องดูองค์ประกอบภายในคำเพิ่มอีกชั้น

สุดท้ายแล้ว ประเด็นไม่ได้อยู่ที่ภาษาไหนดีกว่า แต่อยู่ที่คุณกำลังใช้ไม้บรรทัดผิดอันหรือเปล่า ถ้าวันนี้ยังนับแบบมองผ่านๆ พรุ่งนี้คุณก็จะยังงงว่าทำไมคำไทยสั้นๆ ถึงโดนระบบมองว่ายาว แล้วงานที่กำลังทำอยู่ตอนนี้ คุณต้องการนับ “ตัวที่พิมพ์” หรือ “สิ่งที่คนอ่านรับรู้” กันแน่?