JTCC: library ตัดกลุ่มของตัวอักษรไทย
TCC คือกลุ่มของตัวอักษรไทยที่ไม่สามารถแยกจากกันได้ตามหลักการเขียนของภาษาไทย เสนอครั้งแรกใน paper Character Cluster Based Thai Information Retrieval TCC หนึ่งอาจจะไม่เป็นคำหรือไม่เป็นพยางค์ด้วยซ้ำ ตัวอย่างต่อไปนี้เป็น TCC ทั้งสิ้น
จะ, กับ, เข้, เพราะ, อื้อ, รู้, ใส่
เป็นต้น จะเห็นว่าแต่ละ TCC ที่ยกตัวอย่างไปไม่สามารถแยกตัวอักษรใดออกมาได้เลย เพราะถ้าแยกแล้วจะไม่สามารถอ่านได้ เช่น “ใส่” มี 3 ตัวอักษรแยก “ใ” ออกมาก็ไม่มีความหมายเพราะ “ใ” ต้องตามด้วยพยัญชนะบางอย่าง แยกไม้เอกยิ่งไม่ได้ใหญ่เพราะไม้เอกอยู่ตัวเดียวโดดๆ ไม่ได้ แบบนี้เป็นต้น มาดูตัวอย่างการแบ่ง TCC ที่ยาวขึ้นบ้าง
- Input: ฉันฝากขวดขี้ผึ้งใส่ถุงให้เศรษฐี
- Output TCCs: ฉัน|ฝา|ก|ข|ว|ด|ขี้|ผึ้|ง|ใส่|ถุ|ง|ให้|เศ|ร|ษ|ฐี|
สังเกตตรงคำว่า “ฝาก” เราไม่แยก TCC เป็น “ฝาก|” แต่แยกเป็น “ฝา|ก|” เพราะเราไม่สามารถบอกได้ว่า “ก” จะเป็นตัวสะกดหรือจะเป็นพยัญชนะต้นให้กับ TCC ตัวถัดไป จึงต้องแบ่งย่อยไว้ก่อน คำว่า “ขวด” ที่แบ่งแบบนั้นก็ด้วยเหตุผลเดียวกัน สำหรับผู้ที่ทำงานด้านการประมวลผลภาษาธรรมชาติคงรู้จัก TCC ดีอยู่แล้ว แล้วอาจจะเขียนโปรแกรมตัดได้ไม่ยากเย็นนัก เช่นใช้ regular expression
เร็วๆนี้ เพิ่งนำตัวตัด TCC ที่พัฒนาขึ้นมาปล่อยเป็น library (open-source) ชื่อ JTCC พัฒนาด้วยภาษา Java โดยใช้ parser generator ที่ชื่อ ANTLR ช่วยเพื่อสร้าง parser จาก grammar ของ TCC ที่เขียนไว้ หากสนใจก็เชิญนำไปใช้ได้ด้วย license GPLv3 ตัว library ยังไม่สมบูรณ์มากนัก แน่นอนยังมีจุดบกพร่อง (ดูได้ที่หน้า issue ในเว็บของ JTCC) หากมีข้อเสนอแนะหรือคำถามก็เชิญได้เลยครับ
เว็บหลักของ JTCC : http://jtcc.googlecode.com
