#อ่านNLProc Talk: เต้ อรรถพล ธำรงรัตนฤทธิ์

Can Udomcharoenchaikit
AIResearch.in.th
Published in
6 min readJul 15, 2021

--

ติดตามข่าวสารและบทความ NLP ในภาษาไทยได้ที่ เพจ อ่าน #NLProc และ เพจ AIResearch.in.th

สำหรับคนที่สนใจเรียนวิชาภาษาศาสตร์คอมพิวเตอร์ในประเทศไทยคงจะเคยเห็นช่อง YouTube ภาษาศาสตร์คอมพิวเตอร์ Thai NLP ที่มีวีดีโอสอนทั้งวิชา Computational Linguistics และ Syntax ของภาษาศาสตร์ วันนี้เพจ #อ่านNLProc ได้คุยกับอาจารย์เต้ อรรถพล ธำรงรัตนฤทธิ์ ผู้สอนวิชา Computational Linguistics จากจุฬาลงกรณ์มหาวิทยาลัย

#อ่านNLProc: สวัสดีครับ อาจารย์เต้ พอจะช่วยแนะนำตัวเองได้ไหมครับ ว่าตอนนี้ทำอะไรอยู่

อาจารย์เต้: สวัสดีครับ อรรถพลครับ ผู้ช่วยศาสตราจารย์ ดร.อรรถพล ธำรงรัตนฤทธิ์ ตอนนี้เป็นอาจารย์อยู่ที่ภาคภาษาศาตร์ คณะอักษรศาสตร์ จุฬาลงกรณ์มหาวิทยาลัยครับ แล้วก็เป็น lead instructor ที่ True Digital Academy ก่อนหน้านี้ทำงานบริษัทอยู่ 2 ปี ที่ Yelp กับ LinkedIn เป็น software engineer ที่ทำงานด้าน data product และ NLP ครับ

#อ่านNLProc: แล้วทำไมอาจารย์เต้ถึงเลือกกลับมาเป็นอาจารย์ที่จุฬาฯครับ

อาจารย์เต้: หนึ่งคือเป็นนักเรียนทุนครับ สิ่งที่สะดวกที่สุดก็คือควรจะกลับมาทำงาน แล้วก็มีตัวเลือกอื่นก็คืออยู่ต่อแล้วจ่ายทุนคืน แต่ที่อยากกลับมาเพราะอยากลองกลับมา เพราะพ่อแม่เพื่อนเราก็อยู่ที่นี่ มันก็บ้านเราอยู่ดี ก็เลยบอกตัวเองว่าก็ลองดูสัก 6–7 ปี ว่าได้ทำงานที่อยากทำไหม ว่า lifestyle มันเข้ากับเราไหม ประกอบกับได้งานที่อยากได้ด้วยก็คือเป็นอาจารย์ ได้ทำงานวิจัยแบบจริง ๆ จัง ๆ แล้วก็ได้ทำงานสอนด้วยก็เป็นสองส่วนที่ชอบ ทางอักษรจุฬาฯ ก็ได้ทาบทามให้มาเป็นอาจารย์เพราะเขากำลังเปิดหลักสูตร language technology อยู่พอดีมันก็เลยลงตัวหมด ก็เลยบอกตัวเองว่าลองดูสักตั้งนึง ถ้ามันไม่เป็นอย่างที่คิดก็ค่อยว่ากัน

#อ่านNLProc: แล้วกลับมาแล้วเป็นอย่างไรบ้างครับ เป็นอย่างที่คิดไหม

อาจารย์เต้: ก็ผจญภัยหน่อยสมบุกสมบันนิดนึง แต่ตอนกลับมาก็รู้แหละว่าต้องมีอุปสรรค ก็เลยทำใจไว้อยู่ว่ามันคงไม่ได้ราบรื่นอะไรขนาดนั้น ก็เลยทำใจว่าเดี๋ยวก็ต้องแก้อุปสรรค แก้ปัญหาไปทีละอย่าง ๆ แต่พอกลับมาจริง ๆ มันก็ไม่ได้แย่ขนาดนั้น แต่มันก็มีปัญหาอยู่แล้วแหละ ไม่ว่าจะทำงานอะไรก็ต้องมีปัญหาอยู่แล้วแหละ แต่ว่าเป็นที่พอไหว พอทำได้ คือทรัพยากรเราไม่ได้เยอะเท่าเมืองนอกจริง ๆ แบบเป็นอาจารย์วันแรก ก็ไม่ได้มีอะไรให้มาเลยแบบปากกาสักด้ามก็ยังไม่มีเลย นึกออกไหม แบบทุกอย่างต้องเตรียมมาเอง เงินที่ไว้สำหรับเริ่มต้น lab อะไรแบบนี้ก็ค่อนข้างน้อย ซึ่งก็ต้องค่อย ๆ แก้กันไป ค่อย ๆ ก่อร่างสร้างตัว ค่อย ๆ หา grant หาลูกศิษย์ คือต้องเริ่มจากศูนย์จริง ๆ เมื่อเทียบกับอาจารย์ที่เมืองนอกแบบนี้ หรืออาจารย์บางสถาบัน ซึ่งนั้นก็ถือเป็นอุปสรรคเหมือนกัน แต่มันก็มีทางแก้ ค่อย ๆ หา grant ค่อย ๆ สร้างคน สร้างทีม ไม่ได้มาถึงแล้วแบบมี postdoc เลย ซึ่งอาจารย์เมืองนอกมาถึงเค้าอาจจะมี postdoc ร่วมงานด้วยเลยสองคน ซึ่งเราไม่ได้สิทธิพิเศษขนาดนั้น ซึ่งก็ต้องค่อย ๆ แก้กันไป

#อ่านNLProc: ก่อนหน้านี้เคยได้ยินว่าอาจารย์เรียนสายศิลป์มาก่อนใช่ไหมครับ แล้วทำไมถึงเริ่มมาสนใจงานด้านคอมพิวเตอร์ ด้าน NLP ครับ มีจุดเริ่มต้นอย่างไร

อาจารย์เต้: ใช่ครับ เรียนศิลป์ฝรั่งเศสตอนม.ปลายครับ จริง ๆ ก็รู้ตั้งแต่ตอนม.ปลายแล้วแหละ คิดว่าสายศิลป์หลักสูตรมันไม่ค่อยได้ หลักสูตรมันควรจะได้มีการพูดคุย คิดอะไรกว้าง ๆ แต่ว่าเวลาการเอาไปใช้จริงมันไม่มี ก็เลยแบบรู้สึกตอนม.ปลายไม่ค่อยได้เรียนอะไร พูดกันตรง ๆ ก็เลยไปดูแบบว่าเลขมันต้องมีอะไรสิ เพราะสมัยรุ่นที่พี่เรียนเนี่ยไม่ได้เรียนเลขเลยนะ คือไม่มีคาบเรียนเลย ก็เลยไปเรียนข้างนอกเอา ก็รู้สึกว่าตัวเองก็ไม่ได้เกลียดเลขขนาดนั้น ก็พอไปได้ แล้วพอได้ทุนรัฐบาลไปเรียนที่ Stanford ก็มันไม่ต้องเลือกเอก เราก็ได้ explore อะไรน่าสนใจ วิชาไหนฮิต วิชาไหนดังเราก็ไปเรียน

แล้วก็ได้ไปเจอ computer science ครับ ซึ่งถูกโฉลกมาก ซึ่งชอบมากเลย ซึ่งตอนแรกนึกว่าจะเรียนไปเล่น ๆ แบบเป็นวิชาเลือก แต่ปรากฏว่าชอบก็เลยเรียนต่อไปเรื่อย ๆ แล้วก็ไปเจอเอกเท่ ๆ อันนึงชื่อ symbolic system เป็นเอกแบบกว้าง ๆ สหสาขาวิชาที่เรียนทั้ง philosophy, linguistics, computer science, และ psychology ก็คือเกี่ยวกับ AI เกี่ยวกับความคิดของคนถ้าเกิดเราเข้าใจกระบวนการคิดของคนแล้ว เราจะเอาไปสร้างเป็น AI ได้อย่างไร แบบความรู้มันเกิดขึ้นตรงไหน รู้ได้ไงว่าเราแบบได้ความรู้ตรงนั้นมาแล้ว มันเป็นไอเดียที่สามารถเอาไปเป็นแรงบันดาลใจในการสร้างอัลกอริทึมต่าง ๆ ได้ หรือจะเรียกโดยทั่วไปกว่านั้นว่า cognitive science ซึ่ง NLP มันก็อยู่ในนี้

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

#อ่านNLProc: มันมีความยากสำหรับคนที่เรียนศิลป์ภาษามาก่อนไหมครับถ้าเกิดอยากย้ายมาเรียนสายเทคโนโลยีแบบนี้ มันมีความท้าทายอะไรบ้าง

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

#อ่านNLProc: ตอนเรียนปริญญาเอกอาจารย์ทำหัวข้ออะไรเหรอครับ ทำไมถึงเลือกทำวิจัยหัวข้อนั้น

อาจารย์เต้: ตอนนั้นเป็นช่วงที่ Neural Network กับ Deep Learning เข้ามาพอดี แต่ตอนนั้นความรู้มันยังเป็นวุ้น ๆ อยู่ คนเพิ่งกำลังเอาเทคนิคด้าน Neural Network กลับมาใหม่ ในบริบทที่เรามีคอมพิวเตอร์ที่ดีขึ้นแล้ว เรามีเทคนิคต่าง ๆ มาช่วยมากขึ้น เช่น optimizer ที่ดีขึ้น, batch normalization, dropout พวกเทคนิค regularization ซึ่งสมัยก่อนในยุค 80–90 เรายังไม่มีอะไรพวกนี้ ตอนที่เรียนก็เป็นช่วงนั้นพอดี หัวข้อที่ทำคือ Neural Discourse Parsing ซึ่ง Neural หมายถึง neural network model ส่วน Discourse หมายถึงปรากฏการณ์อะไรก็ได้ที่ความหมายของหนึ่งประโยคมันส่งผลต่อความหมายของประโยคถัดไป แล้ว Parsing ก็คือต้องการแยก relationship ว่าความหมายของประโยคนึงมันส่งผลต่อประโยคถัดไปในลักษณะไหน และส่งผลต่อประโยคไหนบ้าง ก็คือใช้ neural network ในการช่วยแจกแจงความสัมพันธ์ระหว่างประโยค

#อ่านNLProc: น่าสนใจมากครับแล้ว ตอนนี้ทำวิจัยเรื่องอะไรอยู่บ้าง

อาจารย์เต้: ทำทุกสิ่งทุกอย่าง แล้วแต่นักเรียนจะสนใจหัวข้อไหนบ้าง

#อ่านNLProc: แล้วมีสานต่อจากงานที่ทำตอนปริญญาเอกไหมครับ

อาจารย์เต้: มีครับ ๆ ตอนนี้กำลังศึกษา discourse connective ซึ่งก็คือ conjunction แต่ในบริบทของ discourse modeling เราเรียกว่า discourse connective เพราะเป็นตัวเชื่อมระหว่าง discourse unit แต่ลองมาทำกับภาษาไทยดู เพราะว่าภาษาไทยตัว discourse connective มันถูก integrate อยู่ในโครงสร้างประโยค อยู่ในแกรมม่า ซึ่งหมายความว่ามันมีตำแหน่งพิเศษของมัน โดยปกติในภาษาอังกฤษคำเชื่อมมันอยู่ตามตำแหน่งของ adverb คือ adverb อยู่ตรงไหนได้มันก็อยู่ตรงนั้น มันทำให้มันไม่ชัดขนาดนั้นว่ามันมีสถานะพิเศษ แต่ว่าในภาษาไทย discourse connective มันมีสถานะพิเศษจริง ๆ ตอนนี้พยายามรวบรวมข้อมูลว่ามันมี discourse connective ประเภทไหนบ้าง และมันสามารถแจกแจงความสัมพันธ์ประเภทไหนได้บ้าง มันจะตรงกับของภาษาอังกฤษหรือไม่ หรือ distribution ของความสัมพันธ์มันจะเป็นยังไง เวลาที่เราต้องการเชื่อมความสัมพันธ์ของแต่ละประโยคโดยใช้ discourse connective ของภาษาไทย มันจะมีลักษณะทางโครงสร้าง ลักษณะทาง paragraph structure แตกต่างกันไปอย่างไรไหม อันนี้ก็เป็นหนึ่งในโปรเจคที่กำลังดูอยู่ครับ

#อ่านNLProc: กลับไปเรื่องหัวข้อโปรเจคของนักเรียนอาจารย์ พอจะเลือกมาสักอันสองอันมาเล่าให้ฟังได้ไหมครับ

อาจารย์เต้: ตอนนี้พยายามฉีกไปอะไรใหม่ ๆ หน่อยนึง เพราะว่าเบื่อแนว machine learning ที่มี paradigm แบบเดิม ๆ มี data มาเทรน ได้ accuracy แล้วทำ error analysis เพื่อโชว์ว่าโมเดลฉันมันยากมากมันซับซ้อน นึกออกไหมว่ามันมี paradigm ประมาณนี้ ซึ่งเริ่มรู้สึกเบื่อ แต่ก็มีที่ทำไปเช่น ตัดคำ แล้วก็มีอันใหม่ ๆ ที่กำลังทำอยู่ก็คือเน้นไปทางด้าน text visualization แยกไปเลย ก็คืออะไรก็ได้ที่เป็นแนว model-driven text visualization เพราะตอนนี้ที่เขากำลังทำกันอยู่เนี่ย text visualization ถ้าเราทำเราจะนึกถึงอะไร เราจะนึกถึงแบบ word cloud ไม่ก็นึกถึงแบบหา top keywords หรือ keyword extraction มาทำ word cloud หรือแบบแฟนซีหน่อยก็พวก topic modelling อะไรแบบนี้ ก็คือพยายามดูว่าเราเอาพวก sentence encoder, word embeddings หรืออะไรที่เกี่ยวกับความหมายของคำ ความหมายของประโยคจริง ๆ มาช่วยในการสรุปความ มาช่วยในการ visualize text ที่มันเป็น data ของเรา มันมีวิธีการยังไงบ้าง ซึ่งตอนนี้มันยังแทบจะไม่มีอะไรเลย ก็เลยพยายามจะ explore ตรงนี้อยู่ พูดสั้น ๆ ก็คือเรียกว่าทำ model-driven text visualization ก็แล้วกัน

#อ่านNLProc: เมื่อกี้ที่เล่าถึงตัวตัดคำก็คือ attacut ใช่ไหมครับ อยากให้ช่วยเล่าถึงโปรเจคนี้นิดนึงได้ไหมครับว่าเป็นยังไง

อาจารย์เต้: ก็การตัดคำก็ถือว่าเป็นสิ่งที่คลาสสิคสำหรับ NLP ภาษาไทย

ไม่ว่าใครจะรู้อะไรมากน้อยเกี่ยวกับ NLP ภาษาไทยแค่ไหน เค้าก็จะพูดถึงการตัดคำก่อนว่า “มันยากมาก!” ซึ่งมันก็ทั้ง yes and no

แต่ในโปรเจคนี้สิ่งที่เราสนใจก็คือทำให้โมเดลตัดคำมันเล็กกว่านี้ได้ไหม ทำให้มันเร็วกว่านี้ได้ไหม แล้วก็ข้อจำกัดจริง ๆ ของ machine learning ในการทำการตัดคำมันอยู่ที่ไหนซึ่งเป็น guiding question สำหรับงานแนวนี้ ก็สำหรับงานที่ตีพิมพ์ไปก็ใช้ dilated convolutional neural network นะครับ เพราะว่า dilate เพื่อที่จะได้ context กว้าง ๆ เป็น convolutional neural network เพื่อที่จะได้รวม features จาก window ที่มันน่าจะมีผลขึ้นมาได้เป็น feature extraction และยังคงความเร็วได้ระดับนึง ซึ่งเป็น modeling choice ซึ่งเราก็เห็นว่าจริง ๆ แล้ว มันได้ผลแบบนั้นจริง ๆ ยังไง convolutional neural network ก็เป็นตัวเลือกที่ดีสำหรับการตัดคำ เพราะว่าเราก็ได้ไปเปรียบกับ Bidirectional LSTM ซึ่งช้ากว่ามาก แต่ก็ได้ผลออกมาคล้าย ๆ กัน เพราะฉะนั้นอันไหนที่เร็วกว่าก็ควรจะเป็นตัวเลือกที่ดีกว่า อีก innovation นึงสำหรับงานนี้ก็คือการตัด syllable ก่อน เพื่อที่จะใช้ syllable embedding เป็น feature เพิ่มเติมด้วย เพื่อที่เราจะได้กรุ๊ปอะไรให้มันกระชับไปก่อน เพื่อที่จะได้ไม่ต้องรัน classifier ทุกจุด เราแค่รัน classifier เฉพาะจุดที่เป็นไปได้ในการเป็น word boundary ก็จะทำให้ผลที่ได้ออกมามันดีขึ้น ซึ่งอันนี้จริง

#อ่านNLProc: แต่กี้อาจารย์พูดว่าต้องการมองข้อจำกัดของ machine learning ในการตัดคำอาจารย์คิดว่าข้อจำกัดของการตัดคำมันอยู่ที่ไหนหรอครับ

อาจารย์เต้: อยู่ที่ overfitting ก็คือเรามัวแต่ benchmark ว่า algorithm ไหนจะดีกว่ากัน ซึ่งก็โอเค ถ้าเราศึกษาแค่ algorithm อย่างเดียว เรามีสมมุติฐานว่าเราจะเทรน algorithm สำหรับโดเมนใหม่ทุกครั้ง ซึ่งในโลกแห่งความจริงสมมุติฐานอันนี้มันเป็นไปได้ยาก เพราะปกติเราจะมีโมเดลที่ใช้กับโดเมนนี้ได้ แต่เมื่อเจอชุดข้อมูลอันใหม่ก็ต้องเทรนใหม่ แต่ในความเป็นจริงเราไม่เคยมีชุดข้อมูลเพิ่ม ถ้าเกิดสมมุติเราจะเอาไปใช้งานกับ text ประเภทอื่นเช่น encyclopedia ที่มันศัพท์เทคนิคเยอะๆ อาจจะทำให้โมเดลได้ผลที่แย่เพราะ out-of-domain (ไม่เคยเจอโดเมนนี้มาก่อน) เปเปอร์ Attacut เลยทำให้เห็นว่ายังไม่มี solution ตรงนี้ที่แท้จริง เพราะการใช้ deep learning ในการตัดคำตอบโจทย์บางโจทย์เท่านั้น แต่ไม่ได้ตอบทุกโจทย์ ของการเอาไปตัดคำ เพราะมันเป็น upstream task มากๆ เราต้องนึกถึง downstream task ว่าจะเอาไปใช้กับงานไหน เช่นเอาไปใช้กับ text classification คงไม่ได้มีผลอะไรมากมาย แต่ถ้าเกิดเอาไปทำ topic modeling อาจจะมีผลเยอะขึ้นก็ได้ หรือเอาไปทำ search engine ในการ index แต่ละคำ มันก็จะมีผลอยู่เหมือนกัน สุดท้ายแล้วเราจะแก้ปัญหานี้ยังไงดี? เราก็กลับมาอยู่จุดที่ใช้ dictionary based แทน เพราะว่าเราแก้ปัญหาของการตัดคำตามหลักภาษาศาสตร์ ลองนึกถึง ambiguity ที่ชอบยกตัวอย่างกัน เช่น กอ|ดอก กับ กอด|อก แต่ว่าในความเป็นจริง ambiguity ไม่ได้เยอะมีอะไรขนาดนั้น ทำให้ในชีวิตอาจจะไม่ต้องใช้โมเดลขนาดนี้ก็ได้ กลายเป็นว่า deep learning อาจจะไม่ใช่ best practice สำหรับการตัดคำในโดเมนต่างๆ การใช้ dictionary based เมื่อคุณมี set of keywords ที่จำเป็นจะต้องตัดให้ได้ เราอาจจะเอา concept หรือคำแปลกๆ ที่มันอาจทำให้โมเดลเรามีปัญหา เพราะฉะนั้นถ้าเราอัพเดท dictionary ของเรามันโอเคกว่าการจะต้องมานั่งเทรนโมเดลใหม่ทุกครั้งที่เจอคำใหม่ ซึ่ง dictionary based มี assumption ว่าคำไหนยาวกว่าได้ไปก่อน (แนวๆ greedy) ก็ยังเป็นข้อเสียของมัน แต่ข้อได้เปรียบที่เราได้มาคือการสามารถ adapt โดเมนได้อย่างรวดเร็ว (แค่สลับหรือเพิ่มคำใน dictionary ให้ตรงกับโดเมนเรา) ซึ่งความไวของ dictionary เร็วกว่า 5–6 เท่าเมื่อเทียบกับ deep learning

#อ่านNLProc: อีกอย่างคืออาจารย์เคยมีประสบการณ์ทำงานทั้งวิชาการและอุตสาหกรรมในต่างประเทศมาแล้ว อาจารย์รู้สึกว่ามันแตกต่างจากประสบการณ์ NLP ในประเทศไทยเยอะมากไหมครับ มีตรงไหนที่รู้สึกแตกต่างมากๆบ้าง

อาจารย์เต้: ก็ต่างอยู่แล้วแหละ คือไม่เคยทำภาษาไทยตอนอยู่ต่างประเทศเลย แล้วก็ไม่เหมือนพวก computer vision ที่พอได้โมเดลปุ้ปจะรันจากที่ไหนก็ได้ แต่ภาษาไม่มีอันไหนเหมือนกันเลย ถ้าจะรันภาษาใหม่ต้องรันใหม่หมดเลย ก็คือไม่เคยได้ทำอะไรเกี่ยวกับภาษาไทยเลยตอนอยู่ต่างประเทศ อย่างเช่นที่เคยทำมาก็แค่ภาษาจีน อังกฤษ โปรตุเกส ฝรั่งเศส สเปน ประมาณนี้ แต่ไม่มี specific เกี่ยวกับ NLP ขนาดนั้น ก็มีแค่พวก tools ต่างๆที่เรารู้กันอยู่แล้ว เช่นการตัดคำ, POS, NER ในต่างประเทศมันมี tool ครบแล้ว เพราะภาษาพวกนี้เป็นภาษาใหญ่ มี resource ฟรีเยอะ แต่ที่มันต่างจริงๆคือพวก data infrastructure เผอิญตอนนั้นได้ไปอยู่ที่ linkedin เขาดูเหมือนจะไม่หวือหวาเหมือน facebook, google แต่จริงๆก็ advanced มาก ทุก data pipeline หรือ infrastructure เยี่ยมมาก สดใหม่ตลอด รันโมเดลใหม่ก็ง่าย เก็บเป็นที่เป็นทาง เช่น dataset เก็บไว้บนเซิฟเวอร์แล้วเอาไปใช้ได้หลาย platform มากคือ data engineering เขาสุดยอดจริงๆ เป็นสวรรค์ของ data scientist ที่แท้จริง ไม่ต้อง preprocess data อะไรเองเลย ยกเว้นข้อมูล NLP ที่ตอนนั้นไปถึงยังต้องนั่งทำ POS ของทุกคำแล้วเก็บไว้พร้อมใช้งาน เพราะตอนนั้น NLP infrastructure เพิ่งเริ่มทำ เพราะว่ายังไม่ได้รับความสำคัญมากมายขนาดนั้น

#อ่านNLProc: คิดว่าในอนาคตอันสั้น ไม่เกิน 5 ปีข้างหน้า คิดว่า NLP จะมีเพิ่มขึ้นมาบ้าง จะมีอะไรเปลี่ยนแปลงบ้าง?

อาจารย์เต้: สิ่งที่น่าจะเพิ่มขึ้นมา(สำหรับภาษาไทย)เหรอ… ก็ยังไม่คิดว่าจะมีอะไรน่าตื่นเต้นเร้าใจอะไรขนาดนั้น ในมุมมองของพี่ ภาษาก็คือภาษา ในมุมมองของนักทำวิจัยนะครับ ตอนนี้ก็มีคนพูด ผมจะทำ NER, POS, Dependency parsing ภาษาไทย ซึ่งเป็นสิ่งที่ Thai NLP ยังไม่มี ซึ่งเป็นส่วนสำคัญในการทำ NLP ซึ่งเป็นสิ่งที่ดี แต่ว่าในแง่ของนักวิจัยรู้สึกว่าไม่ได้มีอะไรใหม่ เป็นแค่การ apply ML เทคนิคที่เรารู้อยู่แล้ว เช่นใช้ BERT, LSTM, CRF แต่ไม่ได้มีอะไรแปลกใหม่ ข้อมูลก็มีแล้ว ยกเว้นบริษัทไหนอยากทำ POS เพิ่ม ก็ทำโมเดลใช้เองเพราะตอนนี้มีทุกอย่างครบแล้ว ความรู้มี เดต้ามี คนที่รู้วิธีทำพวกนี้มี ตอนนี้ขึ้นอยู่กับว่าเราจะเอาของพวกนี้ไปใช้จริงๆหรือเปล่า ส่วนตัวรู้สึกไม่มีอะไรที่เราขาดแคลนจริงๆสำหรับภาษาไทย ที่บอกว่าเราขาด dataset ก็ไม่ได้ขาดแคลนอะไรขนาดนั้นนะ (เมื่อเทียบกับภาษาอื่น ๆ ในโลก) แล้วก็ภาษาไทยไม่ใช่ภาษาที่น่าสนใจสำหรับนักภาษาศาสตร์ขนาดนั้น

#อ่านNLProc: เหมือนไม่กี่ปีที่ผ่านมามีคนพยายามทำดาต้าเซ็ตสำหรับ task พื้นฐานหลายๆ datasets แต่ก็มีอันหนึ่งที่อาจไม่พื้นฐานเท่าไหร่ก็คือ Machine Translation (MT) เหมือนอาจารย์ได้ร่วมทำกับ SCB, AIResearch, จุฬา อยากจะให้เล่าเกี่ยวกับการสร้าง dataset นั้น กับโมเดลที่อาจารย์ร่วมทำขึ้นมาหน่อยครับ

อาจารย์เต้: จริงๆแล้ว dataset เป็นส่วนที่สำคัญที่สุดในการสร้าง MT system แต่ก็ตามเคย ไม่มีอะไรใหม่ แต่เพราะชาวบ้านชาวช่องเขามีกันหมดแล้วพวก parallel dataset ตอนนี้ algorithm กับ know-how มันของฟรี แต่ dataset ต้องหามาเอง ซึ่งราคามันแพงอยู่แล้ว ซึ่งวิธีการในการสร้างขึ้นมาก็ต้องไป crawl มาจากอินเตอร์เน็ต ว่ามันมี website ไหนบนโลกไหมที่มี data ที่ parallel กันอยู่แล้วเช่น เว็บของพวกองค์กรข้ามชาติ ที่มีหน้าเว็บไทย-อังกฤษ เราก็พยายาม align กัน แต่จริงๆแล้วเราเอามาจากหลายแหล่งมากเลย บางแหล่งเราต้องมาแปลเอง

แต่ที่มันแปลกใหม่อย่างหนึ่งที่เราภูมิใจนำเสนอคือ ใช้ Language Model (LM) ในการ generate ข้อมูลขึ้นมาแปล คือเราเอาชุดข้อมูลที่เขามีอยู่มาแปลเฉยๆไม่ได้ มันคืออุปสรรคหลักเพราะมันมีเรื่องของ copy-right เราก็เลยให้ LM เรียนรู้จากสิ่งที่เรามีอยู่แล้ว generate ข้อมูลปลอม (fake data) ขึ้นมาแล้วค่อยๆ ส่งแปลเป็นภาษาไทย ซึ่งอันนี้ถือเป็นนวัตกรรมอย่างหนึ่ง เพราะชุดข้อมูลของคุณมี copy-right แต่เรา generate ของพวกนั้นขึ้นมาแทน ซึ่งทั่วๆไป LM สามารถ generate ได้ใกล้เคียงกับภาษามนุษย์จริงๆ ซึ่งเราเอาชุดข้อมูลมาจากหลายๆที่มาก จนได้ 1 ล้านคู่ประโยคอย่างที่เราตั้งเป้าไว้ได้จริงๆ แล้วเราก็ได้พิสูจน์ว่าชุดข้อมูลของเรามันมีประโยชน์จริงๆนะ สามารถเอาไปใช้ได้จริงๆ

ซึ่งเราเอาโมเดลที่เราเทรนมาเทียบกับ google translate, AI4Thai หรือของที่เราจะต้องไปชื้อมา ซึ่งเราพิสูจน์แล้วว่าถ้าคุณใช้ชุดข้อมูลของเรากับโมเดลที่เราเลือกมา คุณสามารถได้ MT model เอาไว้ใช้เองได้เลย โดยที่ไม่ต้องส่ง data ที่มันอาจจะ sensitive ไปที่ API อื่นเลย สามารถรันบนเครื่องของคุณได้เลย ไม่ต้องต่อเน็ตอะไรเลย ซึ่งอันนี้ถือว่าทำให้เรามีสเถียรภาพนิดนึงทางเทคโนโลยี ถ้าเกิดวันหนึ่งเราใช้ google translate แล้วมันขึ้นราคา ทำให้ต้นทุนธุรกิจของเราเพิ่มขึ้น เพราะเราพึ่งพาตรงนี้มากเกินไป ตรงนี้ก็เป็นส่วนหนึ่งที่เป็น option ก็คือคุณจะใช้ google translate ต่อก็ได้ เพราะคุณภาพเขาดีจริงๆ แต่ถ้าเกิดวันไหนมันเกิดอะไรเปลี่ยนแปลงขึ้นมา เราก็มีทางเลือกของเรา อาจจะถึงวันที่เราจะต้องสร้าง MT system ขึ้นมาใช้ได้ ก็สามารถทำได้เลย ซึ่งอันนี้เป็น dataset ที่แจกฟรี โมเดลแจกฟรี สามารถเอาไปใช้ได้เลย จะเอาไปเทรนใช้เองก็ได้ ก็เป็นความภาคภูมิใจของนักวิจัยคนไทยกลุ่มหนึ่ง

#อ่านNLProc: เหมือนตะกี้อาจารย์เล่านิดนึงว่าภาษาไทยไม่ใช่ภาษาที่น่าสนใจสำหรับนักภาษาศาสตร์ขนาดนั้น ทำไมเหรอครับ? อาจารย์ช่วยขยายความได้ไหมครับ

อาจารย์เต้: จริงๆแล้วความน่าสนใจมันขึ้นกับแง่มุมของมัน ถ้าเกิดเราอยากจะดูว่าภาษาที่ไม่มี word boundary เลยภาษาก็จะมีความพิเศษของมันอยู่ ทำให้เป็นหัวข้อที่น่าสนใจ ถ้าเกิดจะมาพูดถึง Thai NER ไม่ได้มีความแตกต่างทางไวยากรณ์ ทางรูป ที่มันน่าสนใจ หรือโดดเด่นกว่าภาษาอื่น พอมันไม่โดดเด่นกว่าภาษาอื่นก็คือเราสามารถเอา method ภาษาอื่นมาประยุกต์ใช้กับภาษาเราได้เลย ซึ่งก็เป็นข่าวดี เพียงแต่ว่าสำหรับนักวิจัยมันไม่ใช่โจทย์ที่น่าทำอะไรเลย เพราะว่ามันเหมือน solved ไปแล้วมากกว่า แต่ว่าภาษามันก็หายากจริงๆที่มันมีความ unique ของตัวเอง ซึ่งตอนนี้เหมือนคนในวงการก็เริ่มจะบอกว่า ฉันจะไม่ทำภาษาอังกฤษ เพราะภาษาอังกฤษก็ไม่ได้มีอะไรพิเศษเหมือนกัน morphology ก็ไม่มี structure ก็ SVO ธรรมดาๆ มันไม่ได้มีอะไรโดดเด่นเหมือนกัน เพราะฉนั้นถ้าเราจะทำ task ใหม่ขึ้นมาเช่น Irony classification หรือการประชด หรือ spam บน Twitter ขายของ คือ task พวกนั้นถ้าเราจะทำชุดข้อมูลก็ไม่จำเป็นต้องเป็นภาษาอังกฤษเสมอไปแล้ว ก็คือตอนนี้มี movement ในวงการวิจัยว่าคุณควรจะ treat ว่าทุกภาษาสำคัญหมดจริงๆ และภาษาอังกฤษไม่ใช่ภาษาที่สำคัญกว่าภาษาอื่น ซึ่งอันนี้ก็น่าสนใจ สมมุติว่าเราจะทำ task ใหม่ๆ ที่ไม่ว่าคุณจะทำภาษาไหนก็เหมือนกัน แค่อันนี้เป็นภาษาที่เราใช้ประจำ ซึ่งเราก็สามารถสร้าง algorithm ขึ้นมาได้เลย แล้วก็เอาไปใช้ ถ้าเกิดเอาไปใช้ใน industry ก็เอาไปใช้ได้เลย เพราะมี dataset ครบแล้ว เราก็ prove เรียบร้อยว่าโมเดลเราสามารถทำ task ที่เราสร้างขึ้นมาได้สำเร็จและมี accuracy สูง เพราะฉะนั้นไม่ต้อง transfer ความรู้ในภาษาอื่นแล้วมาประยุกต์ใช้กับงานตัวเองแล้ว อันนี้ไม่จำเป็นแล้ว ทำให้มัน align กันมากขึ้น ต่อให้คุณทำ dataset ของคุณเป็นภาษาไทย ซึ่งเราคาดหวังว่ามันจะถูก treat ให้เท่ากัน แต่มันก็ยังไม่สำเร็จขนาดนั้น แต่ว่าตอนนี้ทั้งวงการพยายามจะทำแบบนี้อยู่ “คุณอยากทำภาษาไหนก็ทำ” ขอให้ method ของคุณถูกก็พอ ภาษาที่คุณเลือกไม่เกี่ยวข้องกับ impact กับงานของคุณ

#อ่านNLProc: คำถามปิดท้ายของรายการครับ อาจารย์มีอะไรอยากจะฝากถึงเพจ อ่าน#NLProc แล้วก็ชุมชน Thai NLP บ้างครับ?

อาจารย์เต้: เฮ้ย ไม่รู้จะฝากอะไรดีเลยอะ

#อ่านNLProc: ฝากผลงานก็ได้ครับ

อาจารย์เต้: อาจารย์นะไม่ใช่เน็ตไอดอล!

#อ่านNLProc: อ่าว ผมก็กดติดตามช่องยูทูปอาจารย์นะครับ!!

อาจารย์เต้: ถ้าเกิดอยากเรียนรู้เพิ่มเติมเกี่ยวกับ NLP นะครับ เดียวนี้สามารถเรียนรู้ได้ตัวเองได้ในระดับหนึ่งมันก็มี resource ออนไลน์เยอะแยะเช่นของอาจารย์เอกพล สอนแบบเต็มคอร์สบน youtube ถ้าเกิดใครสนใจ topic ไหนก็สามารถหาความรู้เพิ่มเติมได้ แต่มันอาจจะยังไม่ละเอียดมาก แต่ก็ยังพอมีความรู้คราวๆว่าเทคโนโลยีที่ต้องใช้มีอะไรบ้าง แล้วถ้าเกิดอยากจะหาความรู้เพิ่มเติมถึงขนาดที่ทำเองได้จริง มันก็มีคอร์สออนไลน์อีกเยอะ coursera, udemy ก็สามารถเลือกได้เลยเพื่อที่จะมีความรู้เกี่ยวกับ NLP มากขึ้นสำหรับผู้ที่สนใจ อีกอย่างหนึ่งก็คือ อย่าลืมว่าเวลาเราทำ NLP เนี่ย มันยังอยู่ในแดนของภาษาศาสตร์ อย่างเช่นตอนเราพูดถึงเครื่องตัดคำ เราต้องนึกเมื่อไหร่ความหมายของคำที่เราต้องการ มันจะมีผลต่อ task ที่เราต้องการจะทำอยู่ ถ้าเรามัวแต่โยนโมเดลใหญ่ๆเข้าไป บางทีมันก็ทำให้งานของเราไม่มีประสิทธิภาพเท่าที่ควร ยังไงทั้งคนที่ทำ industry หรือ research ก็ยังสำคัญอยู่ที่นึกถึงว่า มันมีส่วนประกอบไหนของภาษาศาสตร์ที่ส่งผลต่อการสร้างโมเดลหรือ performance ของโมเดล

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

--

--