#อ่านNLProc Talk: ต้นตาล วรรณพงษ์ ภัททิยไพบูลย์

Can Udomcharoenchaikit
AIResearch.in.th
Published in
3 min readNov 26, 2019

ถ้าใครทำงานเกี่ยวกับ NLP บนภาษาไทย คงจะเคยได้ยิน library ที่ชื่อว่า PyThaiNLP วันนี้เพจ #อ่านNLProc จะมาคุยกับ open source developer ซึ่งเป็นคนริเริ่มโปรเจคนี้และเป็นหนึ่งใน maintainer หลักด้วย ซึ่งก็คือ ต้นตาล วรรณพงษ์ ภัททิยไพบูลย์

รูปของ วรรณพงษ์ ภัททิยไพบูลย์ (ต้นตาล) ที่งาน Thai NLP Meetup ครั้งที่ 1

#อ่านNLProc: อะไรคือ PyThaiNLP ?

ต้นตาล: ข้อนี้ถ้าเป็นเมื่อก่อน ผมจะตอบว่าเป็นโมดูล NLP ภาษาไทยในภาษาไพธอน ถ้าปัจจุบันผมขอตอบว่า ปัจจุบัน PyThaiNLP เป็นโครงการหนึ่งที่ร่วมกันพัฒนาซอฟต์แวร์เปิดกับชุดข้อมูลเปิดด้านการประมวลผลภาษาธรรมชาติภาษาไทยโดยขับเคลื่อนด้วยชุมชนนักพัฒนา NLP ภาษาไทย ตามธรรมชาติของ Open Source ไม่ได้อยู่แค่ตัวโมดูล PyThaiNLP ในภาษาไพธอน

#อ่านNLProc: อะไรเป็นจุดที่ทำให้เริ่มทำโปรเจค PyThaiNLP ?

ต้นตาล: เริ่มแรกมาจากที่ผมต้องการโมดูลตัดคำ, POS Tagger (ตัวกำกับชนิดของคำ) สำหรับภาษาไทย สมัยม.6 เพราะช่วงนั้นผมต้องการลองสร้าง chatbot ภาษาไทย โดยดูจากบทความต่างประเทศซึ่งใช้ NLTK กัน แต่พอมาค้นดูของภาษาไทยกลับพบไม่มี รวมถึงเครื่องมือด้าน NLP ภาษาไทยในตอนนั้นมีจำนวนน้อย แถมยากที่จะเรียกใช้งาน มี API ที่ซับซ้อน มีแค่โค้ด IBM ICU ตัดคำภาษาไทยอยู่บนอินเทอร์เน็ต แต่กลับไม่มีใครทำออกมาเป็นโมดูลให้เรียกใช้งานได้ง่าย ๆ เลย ผมจึงลองสร้างโมดูลตัดคำขึ้นมา เพื่อใช้กับ chatbot ที่ทำเล่น ๆ

#อ่านNLProc: ตอนนั้น IBM ICU มีปัญหาอะไรบ้าง ทำไมถึงต้องทำเอง แล้วโมดูลตัดคำตอนแรกสร้างอย่างไร แล้วตอนนี้ PyThaiNLP อะไรเป็นตัวตัดคำ ?

ต้นตาล: IBM ICU ปัญหาช่วงนั้นคือ โค้ดตัดคำภาษาไทยด้วย ICU ใน python มี แต่ไม่มีใครรวบรวมโค้ดได้เป็นหนึ่งเดียว และไม่มี POS tagger ด้วยครับ ตอนแรกของ PyThaiNLP ใช้ IBM ICU ตัดคำ NLTK ทำส่วน POS tagger ปัจจุบันใช้ onecut (หรือที่รู้จักกันว่า newmm) ที่จริงชื่อ onecut แต่ผมเปลี่ยนชื่อตอนนำมารวมโค้ด PyThaiNLP เพราะเมื่อก่อน PyThaiNLP ก็มีตัวตัดคำ Maximum Matching ซึ่งเป็นโค้ดเก่า และมีโค้ดตัดคำของพี่ป๋อง (Korakot Chaovavanich) ชื่อ multi_cut ผมต้องการเอาโค้ดพี่ป๋องมาแทนที่โค้ดเก่าเดิม เลยตั้งชื่อเป็น newmm เพื่อสื่อว่า multi_cut จะถูกแทนที่เป็น mm ในอนาคต ปัจจุบันโค้ดของพี่ป๋อง ตัวตัดคำ multi_cut ได้แทนที่ mm เดิม และ onecut เป็น newmm แทนครับ

#อ่านNLProc: NLTK ทำ POS Tagger ภาษาไทยได้ด้วย ?

ต้นตาล: ได้ครับ แต่ต้องอาศัยตัวตัดคำ ก่อนนำไปเข้า NLTK และต้อง train เองครับ

#อ่านNLProc: ใช้ชุดข้อมูลอันไหนทำ POS Tagger เหรอครับ ?

ต้นตาล: ใช้ ORCHID Corpus ครับ

#อ่านNLProc: PyThaiNLP ตอนแรกเริ่มยังไง ทำอะไรได้บ้าง แล้วตอนนี้ไปถึงไหนแล้ว กำลังต้องการทำอะไรต่อ ?

ต้นตาล: ตอนแรก ๆ ผมใช้เวลาหลังเลิกเรียนมานั่งโค้ดตัวโมดูล Python โดยใช้โค้ดที่ผมเคยศึกษาหรือเขียนเอาไว้มาประกอบกันเป็นโมดูล พอได้ตัดคำแล้วก็ลองทำ PosTag ด้วย NLTK มาเขียนเพิ่มในโมดูลเอาไว้ และเขียนฟังก์ชันอื่น ๆ เข้ามา แล้วก็อัพขึ้น GitHub ตั้งชื่อ PyThaiNLP ไอเดียชื่อมาจาก PyThai ซึ่งเป็นโมดูลตัดคำตัวหนึ่ง ผมต้องการสร้างโมดูล NLP เต็มรูปแบบ จึงเติม NLP เข้าไปต่อท้ายได้เป็น PyThaiNLP ในที่สุด จากนั้นก็อัพโหลดขึ้น pypi และประชาสัมพันธ์ที่เพจ “สมาคม Python Dev แห่งประเทศไทย” (ปัจจุบันเป็นเพจ Python Dev Thailand) ให้เป็นที่รู้จัก ผ่านการลองผิดลองถูกมามากพอควรกว่า 3 ปี ส่วนที่ PyThaiNLP ทำไปแล้วตอนนี้ด้านการประมวลผลภาษาธรรมชาติ เช่น ตัดคำ, POS tagger, Language model รวมถึง Text-to-speech ด้วย IPA ที่เราได้ลองทำโดยใช้โค้ดของ Google และอื่น ๆ ส่วนที่กำลังทำ เราได้ร่วมมือกับโครงการ VISTEC- depa กำลังสร้าง Dataset ชุดใหม่อยู่หลายอัน และนอกจากนั้น สิ่งที่เราต้องการทำอีกนั้นคือ การตัดประโยค EDU ที่ยังไม่ได้เริ่มทำ เพราะยังขาดแคลนข้อมูลอยู่ ส่วนตัวผมอยากพัฒนาส่วน text-to-speech ให้สามารถดึงไปใช้งานได้ง่ายกว่านี้ รวมถึง ASR และส่วนด้าน NLU กับ NLG ซึ่งเป็นความท้าทายอยู่ใน ณ เวลานี้

#อ่านNLProc: โมดูลไหนที่ชอบใน PyThaiNLP ?

ต้นตาล: ที่จริงผมชอบทุกโมดูล แต่โมดูลที่ชอบมากที่สุด คือ NER (Named-Entity Recognition) ครับ เพราะน่าจะเป็นโค้ดที่ผมใช้เวลากับมันมากที่สุดใน PyThaiNLP ประมาณเกือบ 1 ปีกว่า ๆ ทั้งโค้ดและจัดเก็บความรู้ คลังข้อมูลครับ แถมเป็นโค้ดส่วนที่ผมโค้ดแล้วโดนแก้น้อยที่สุดด้วยครับ

#อ่านNLProc: ในตอนที่สร้างชุดข้อมูล NER เอง พบความท้าทายหรือปัญหาอะไรบ้างชุดข้อมูล NER ที่สร้างไว้ขนาดใหญ่แค่ไหนครับ ?

ต้นตาล: ขนาดที่ได้ประมาณ 6 พันบรรทัด ครับ ปัญหาที่เจอคือ ไม่มีแนวทางกำกับเลย ผมลองผิดลองถูกมามาก เลยกลายเป็นจริง ๆ แล้วมั่วจนเห็นแนวทางว่าควรทำอย่างไร เลยเริ่มมีแนวทางกำกับและเลือกโดเมนตามมา ไม่รู้ว่าสิ่งที่ลองทำผลลัพธ์จะออกมาโอเคไหมครับ เนื่องจากผมเป็น computer scientist ไม่ใช่นักภาษาศาสตร์ ไม่ใช่ทางผมโดยตรง และโดเมนที่ผมทำ โดเมนที่ทำได้คือโดเมนข่าว เพราะข้อมูลอื่น ๆ มีลิขสิทธิ์เอามาทำไม่ได้ครับ อย่างนิยายและเรื่องราวครับ ผมศึกษาจากชุดข้อมูลที่มีว่าเขากำกับแบบใด จากของจุฬาฯ ที่ผมนำมาพัฒนาต่อครับ

#อ่านNLProc: ในฐานะ open source developer คุณมีมุมมองต่อวงการวิจัยไทยอย่างไร ?

ต้นตาล: ผมขอบอกก่อนว่าผมอาจจะรู้แค่วงการวิจัยด้าน NLP ภาษาไทย มุมมองต่อวงการวิจัยไทย ผมมองว่า มีคำหนึ่งที่คนทั่วไปกล่าวกับงานวิจัยไทยว่า “งานวิจัยขึ้นหิ้ง” มองอีกมุม ทั้ง ๆ ที่บางอย่างเป็นองค์ความรู้หนึ่งที่รอการต่อยอดในอนาคตอย่าง basic research และนักวิจัยอาจจะไม่ได้ทำต่อหรือไม่ได้งบสนับสนุนในการต่อยอดงานวิจัยที่ได้ ผมตามเรื่องพวกนี้จากอ.อิ๊ (สรณะ นุชอนงค์) ผมว่าภาครัฐของไทยเราไม่ค่อยให้ความสำคัญกับ basic research มากเท่าไร ซึ่งทางภาครัฐควรจะส่งเสริมมากกว่านี้ โชคดีที่ภาคเอกชนบางส่วนยังให้ความสำคัญกับการวิจัย basic research แต่วงการงานวิจัยไทยเท่าที่ผ่านมาในอดีตอาจจะไม่ค่อยเปิดเผยข้อมูลและโค้ดมากนัก เช่น สมัยก่อน อินเทอร์เน็ตยังไม่เปิดกว้าง งานวิจัยต่าง ๆ จึงไม่สามารถอัพโหลดโค้ดเหล่านั้นขึ้นไปได้ ทำให้มีโค้ดที่ไม่ได้เผยแพร่หายไปในบางงานวิจัย และมีบางคนที่ไม่ต้องการเปิดเผยโค้ดและชุดข้อมูลที่ใช้ในงานวิจัย เพราะอาจจะติดข้อจำกัดหลาย ๆ อย่าง ต่างจากระยะหลัง ๆ มานี้ วงการวิจัยไทย เริ่มมีการเปิดเผยข้อมูลและโค้ดที่ใช้ในการวิจัยมากขึ้น เปิดเผยทรัพยากรแหล่งที่มามากยิ่งขึ้น เปิดกว้างมากยิ่งขึ้น โดยรวมดีขึ้นกว่าเมื่อก่อนมากขึ้น การเปิดเผยโค้ดและชุดข้อมูลที่ใช้ในการวิจัย ช่วยประหยัดทรัพยากร ทำซ้ำเพื่อตรวจสอบได้ง่ายขึ้น และช่วยเร่งให้การวิจัยต่อยอดเป็นไปได้ง่ายยิ่งขึ้น เป็นประโยชน์โดยรวมของวงการวิจัยไทย

#อ่านNLProc: มองอนาคตของ NLP ภาษาไทยอย่างไร ?

ต้นตาล: อนาคตของ NLP ภาษาไทย ผมมองว่าน่าจะออกไปในทาง language model, Dataset ใหม่ ๆ ทั้งที่เปิดและปิดที่ดีกว่าที่เคยมี และมีมากกว่าเดิม, เครื่องมือด้าน NLP ที่มากขึ้น , Text-to-speech ASR OCR ภาษาไทยสาย open source มีให้ใช้งาน , อาจจะมี state of the art สาย NLP ระดับโลกเกิดขึ้นจากการค้นคว้าทาง NLP ภาษาไทยก็เป็นไปได้, NLP ภาษาท้องถิ่นไทย เพื่อการอนุรักษ์ภาษาถิ่นและเพื่อให้เข้าถึงผู้คนได้มากกว่าเดิม, เครื่องแปลภาษาที่มีความแม่นยำสูง, แปลภาษาด้วยเสียงโดยไม่ผ่าน TTS/ASR ที่รองรับภาษาไทย สามารถแปลได้ทันทีที่พูด , ความท้าทายด้าน NLU และ NLG ภาษาไทยจะมากขึ้น

บทความนี้สนับสนุนโดย:

--

--