ตัดคำภาษาไทยและภาษาอื่นไปถึงไหนกันแล้ว?

Mr.P L
3 min readFeb 2, 2024

เมื่อการสร้างโมเดลตัดคำไม่ใช่เรื่องท้าทายอีกต่อ แล้วอะไรละที่ยังท้าทาย?

เกริ่นก่อนเริ่ม

บทความนี้เป็นการรวบรวมข้อมูลจากงานวิจัยที่ได้รับการตีพิมพ์ในระดับนานาชาติ ซึ่งมีการอ้างอิงทฤษฏี ผลลัพธ์ และการนำไปใช้ตามที่งานวิจัยได้เขียนเอาไว้

ตัดคำภาษาไทยคืออะไร? “การพยายามรวมตัวอักษรจนได้ 1 คำ แบบถูกต้องตามหลักภาษาและถูกสถานการณ์” ยกตัวอย่างเช่น ตามกลม (ตัวอย่างอมตะในการตัดคำภาษาไทย)

จะเห็นได้ว่า “ตามกลม” สามารถตัดคำได้สองแบบคือ ตาก|ลม กับ ตา|กลม ขึ้นอยู่กับสถานการณ์ เมื่อตัดคำเสร็จแล้ว เราก็เอาคำเหล่านั้นที่ตัดมาได้ไปเข้าโมเดลต่างๆ (Text classification, NER, POS, Language Modeling)

ความยากและการเอาไปใช้จริง? ที่จริงดูผิวเผินเหมือนจะไม่ได้ยากอะไร ซึ่งความจริงก็ไม่ได้ยากอะไร (เพราะโมเดลในปัจจุบันสามารถทำความแม่นยำได้ 95%++) แต่สิ่งที่ยากของการตัดคำคือ การนำไปใช้ในโลกจริง

เช่น ถ้าเราเทรนโมเดลตัดคำบนโดเมนข่าว แต่พอใช้จริง ดันเอาใช้กับโดเมน Social Media ผลการตัดคำก็จะแย่ลงแบบเห็นได้ชัด[i,ii,iii]

โมเดลถูกเทรนบน BEST-2010 เทสบน Wisesight, TNHC ความแม่นยำลดลงแบบเห็นได้ชัด https://aclanthology.org/2020.coling-main.407.pdf

เนื่องจากการตัดคำเป็น Upstream task (งานอันแรกๆที่ต้องทำ) การจะเอาไปใช้ต่อกับงานอื่นๆมักจะส่งผลถ้าเกิดใช้ผิดโดเมนหรือผิดโมเดล เช่น เทรนตัวตัดคำ “A” ใช้กับโมเดล NER “B” แต่พอเวลาใช้จริงๆเราดันใช้ตัวตัดคำ “B” แทน ผลลัพธ์ NER ก็จะแย่ลงอีก (ถ้า “A” และ “B” ประสิทธิภาพต่างกัน)

หรือแม้กระทั่งปัญหาอย่างเช่นความเร็วในการตัด โมเดลที่มีความแม่นยำสูงๆในปัจจุบันมักจะสร้างจาก Deep Learning เช่น Deepcut, Attacut (CNN) ทำให้เวลาเอาไปใช้งานจริง inference time อาจจะเยอะไปหน่อย (ถึงแม้ Attacut จะลดระยะเวลาไปได้หลายเท่า แต่ยังห่างกับการตัดด้วย dictionary)

https://aclanthology.org/2020.coling-main.407.pdf

เพราะฉนั้นเวลาใช้เราก็อาจจะต้องนึกถึงว่าจะเอาไปใช้กับงานอะไรเช่น การใช้กับ text/sentiment classification การตัดคำอาจจะไม่ส่งผลอะไรมาก แต่ถ้าเป็นงานที่ต้องพึ่งการตัดคำอย่างเช่น NER หรือ POS การตัดคำก็จะส่งผลอย่างมาก [iii]

Handling Cross- and Out-of-Domain Samples in Thai Word Segmentation โชว์ให้เห็นว่าถ้าเป็น token classification ตัวตัดคำถึงจะมีผล

แล้วภาษาไหนบ้างที่ต้องการโมเดลตัดคำ?

ที่จริงแล้วทุกภาษาต้องการการตัดคำ! นั้นคือเหตุผลว่าทำไมแม้แต่ภาษาอังกฤษยังต้องมี sentencepiece/wordpiece/bpe ! แต่ที่จริงแล้วการตัดคำบนภาษาที่มี word boundary ในตัวมันอาจจะไม่เรียกว่าตัดคำ อาจจะเป็นการแยกคำออกเป็น sub-word เพื่อรองรับ oov แทน

แต่ถ้าพูดถึงภาษาที่ต้องการโมเดลตัดคำจริงๆ และถ้าดูจากจำนวนการตีพิมพ์จาก dblp จะพบว่าภาษาจีนมีจำนวนการตีพิมพ์เกี่ยวกับตัดคำมากที่สุด ทั้งจำนวนการตีพิมพ์บน Top conference (ACL, EMNLP) และจำนวน citation (ก็คนเขาเยอะกว่าอะนะ)

https://dblp.uni-trier.de/search?q=chinese%20word%20segmentation

แต่การตัดคำบนภาษาจีนก็ยังเป็นที่ถกเถียงว่ายังจำเป็นหรือไม่ ยกตัวอย่างเช่น ACL2019 มีเปเปอร์ที่ชื่อว่า Is Word Segmentation Necessary for Deep Learning of Chinese Representations? ได้ออกเปเปอร์เพื่อบอกว่าที่จริงแล้วภาษาจีนไม่จำเป็นต้องตัดคำ เพราะในการตัดคำบางทีต้องเจอ OOV (out-of-vocaburary) หรือเจอปัญหา domain dependcy ทำให้ตัดคำได้แย่ลงในบางเคส สู้ใช้ 1 Char = 1 Word ไปเลยดีกว่าไหม? ซึ่งในการทดลอง downstream task พบว่า Char Model ดีกว่า Sub-word Model!

Char = Char Model, Word = Word Modelhttps://aclanthology.org/P19-1314.pdf

แต่พอปีถัดมา (EMNLP2020) ก็มีเปเปอร์ที่ชื่อว่า RethinkCWS: Is Chinese Word Segmentation a Solved Task? ออกมาบอกว่าที่จริงแล้วเราควรจะทำโมเดลตัดคำให้ performance ดีขึ้นเพราะโมเดลที่มีตอนนี้ยังแก้ปัญหา out-of-domain ไม่ได้ดีเท่าที่ควรทำให้ผลการเอาไปใช้จริงๆอาจไม่ดีเท่าที่คิด เพราะฉนั้นมาทำตัดคำกันต่อเถอะ!

ความคิดเห็นส่วนตัว

ที่จริงคิดว่าตัดคำจีนน่าจะลดจำนวนการตีพิมพ์ได้แล้วเพราะเปเปอร์ปี2019 [iv] ได้แสดงให้เห็นแล้วว่าไม่จำเป็นต้องตัดก็ได้แล้ว ถ้ามันยากลำบากขนาดนั้น ซึ่งจำนวนการตีพิมพ์ตัวตัดคำภาษาจีนก็ลดลงจริงๆ (ACL2021 มีแค่งานเดียว ไม่แน่ว่าอาจจะหนีไปส่งที่ conference อื่นแล้ว)

แล้วตัวตัดคำภาษาไทยไปถึงไหนแล้ว?

ถ้าอ่านมาถึงจุดนี้หลายคนอาจจะคิดได้สองแบบคือ

  1. โมเดลตัดคำไทยน่าจะไปไกลพอๆกับจีน: มีโมเดลเทพๆ ตีพิมพ์กระจุยกระจาย
  2. ยังตัดคำไม่ได้

ถ้าคุณคิดว่าข้อสองคือคำตอบ “ใช่ครับ” ยังตัดไม่ได้…. แต่ตอนนี้ที่ยังตัดไม่ได้คือ กรณีที่โมเดลไม่เคยเห็นคำนั้นมาก่อน/การสะกดผิด ซึ่งมีงานวิจัยจำนวนน้อยมากที่รองรับ OOV ที่เกิดขึ้นในการตัดคำ (แต่งานของจีนปีหลังๆเริ่มพูดถึงเยอะขึ้น) หรือการรองรับการสะกดผิดในการตัดคำ

เรายังต้องพัฒนาการตัดคำอยู่ไหม?

ต้องพัฒนาสิ! แต่จะต้องเป็นโมเดลที่แก้ปัญหาได้ถูกจุด เช่น รองรับการตัดคำข้ามโดเมน หรือ ถ้าเจอการสะกดผิดก็ยังตัดได้ถูกต้อง นี้คือ challenge หลักของงานนี้ เราควรมองข้ามการตัดคำของ ตา กลม กับ ตาก ลม ได้แล้ว

อะไรคือข้อจำกัดในภาษาไทย? ตัวตัดคำ?

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

งั้นข้ออ้างของคุณที่จะไม่ทำ nlp ภาษาไทยคืออะไรละ? ตัวตัดคำยังไม่ดีพอ?

อ้างอิง

[i] Syllable­based Neural Thai Word Segmentation https://aclanthology.org/2020.coling-main.407.pdf

[ii] Domain Adaptation of Thai Word Segmentation Models using Stacked Ensemble

https://aclanthology.org/2020.emnlp-main.315.pdf

[iii] Handling Cross- and Out-of-Domain Samples in Thai Word Segmentation

https://aclanthology.org/2021.findings-acl.86.pdf

[iv] Is Word Segmentation Necessary for Deep Learning of Chinese Representations?

https://aclanthology.org/P19-1314.pdf

--

--

Mr.P L

Lifestyle of Programmer & IoT (Node-RED|Blynk) & Data Science (ML,DL,NLP) and Whatever I want to do | cat can coding too | Ph.D. -> VISTEC -> IST