ใกล้จะปีใหม่แล้ว มาเล่าอะไรที่มันสบาย ๆ ดีกว่า วันนี้เอาเรื่องความก้าวหน้าของแขนงวิชาการประมวลผลภาษาธรรมชาติ หรือ Natural Language Processing หรือ NLP ของไทยกันดีกว่าเน้อะ
ไม่ใช่แค่ผมคนเดียวหรอกนะที่หวัง ผมว่าใคร ๆ หลาย ๆ คนก็หวังเหมือนกัน หวังว่าซักวันนึงคอมพิวเตอร์มันจะสามารถคุยกับเราได้ คือยังไม่ต้องฟังหรือพูดกับเราได้หรอกนะ แค่เราพิมพ์ข้อความเพื่อคุยกับมัน แล้วมันสามารถพิมพ์ข้อความตอบโต้กับเราได้ ก็ถือว่าโอเคแล้ว
การจะให้คอมพิวเตอร์เข้าใจประโยคข้อความภาษาไทยของเราได้ ก็มีความจำเป็นที่จะต้องตัดประโยคภาษาไทยออกเป็นคำ ๆ แล้วจึงส่งให้ระบบ NLP ไปประมวลผลต่อไป
สำหรับนักวิจัย NLP ภาษาอังกฤษ คงไม่ได้เดือดเนื้อร้อนใจอะไรนักในการตัดคำออกจากประโยค เพราะแต่ล่ะคำของภาษาอังกฤษถูกแบ่งเป็นคำ ๆ อยู่แล้วตามไวยากรณ์ของภาษา ดังนั้นนักวิจัย NLP ภาษาอังกฤษจึงสามารถทุ่มเททรัพยากรของตนเองได้อย่างเต็มที่ ในการวิจัยพัฒนา NLP ภาษาอังกฤษของตนเอง
แต่สำหรับภาษาไทยของเราค่อนข้างพิเศษ เพราะเขียนติดกันเป็นพรืด ถึงจะมีการแบ่งวรรคตอนบ้างเพื่อให้ความหมายเป็นไปอย่างถูกต้อง แต่การแบ่งวรรคตอนก็ขึ้นอยู่กับทักษะของผู้เขียนเป็นสำคัญ ดังนั้นหากแบ่งวรรคตอนผิด ก็ย่อมมีความหมายถึงการตัดคำผิด และนำไปสู่การ NLP ผิดเป็นลำดับ
ผมคิดว่านักพัฒนาซอฟต์แวร์ของไทย ซึ่งเน้นหนักในการวิจัยพัฒนาในด้าน NLP น่าจะรับทราบเรื่องนี้ดี ดังนั้นหลาย ๆ ท่านจึงต้องถอยตัวเองไปหนึ่งลำดับ โดยแทนที่จะไปเน้นทางด้าน NLP ภาษาไทยเพียงอย่างเดียว เหมือนที่นักวิจัย NLP ภาษาอังกฤษทำกัน ก็กลายเป็นว่าต้องมาแก้ปัญหาในเรื่องการตัดคำภาษาไทยกันก่อน
เป็นลักษณะห่วงหน้าพะวงหลัง!!!
ไม่ว่าจะเป็น Compiler, Text To Speech และ Natural Language Processing ถ้าหากว่าผลลัพท์ของการประมวลผลเป็นภาษาไทยแล้ว คงหลีกเลี่ยงไม่พ้นที่จะต้องไปเน้นทางด้านการตัดคำซะก่อนทั้งสิ้น
ผมคิดว่าบรรพบุรุษของเราก็คงไม่ได้คิดล่วงหน้าเอาไว้หรอกครับ 🙂 ว่าการคิดค้นอักขระภาษาไทยและการลำดับการเขียนภาษาไทยแบบนี้ มันสร้างผลกระทบให้กับคนในยุคดิจิตอลอย่างพวกเราถึงเพียงนี้
เท่าที่ทราบ ปัจจุบันกลไกในการตัดคำแบ่งออกเป็นสองวิธีใหญ่ ๆ คือวิธีการเปรียบเทียบคำจากพจนานุกรมภาษาไทยที่มี กับอีกวิธีหนึ่ง คือการให้ระบบวิเคราะห์ไวยากรณ์ที่เป็นไปได้ในภาษาไทยแทน
สำหรับผมแล้ววิธีที่สองน่าจะเป็นวิธีที่ดีกว่า เพราะอย่างที่เรารู้กันว่าเดี๋ยวนี้มีคำแปลก ๆ เกิดขึ้นเยอะเหลือเกิน และก็ไม่ได้ถูกบันทึกเอาไว้ในพจนานุกรมฉบับราชบัณฑิตยสถานด้วย การวิเคราะห์ไวยากรณ์จึงเป็นการลดต้นทุนของการเก็บสะสมคำไทย แต่ไปเพิ่มต้นทุนในการคิดค้นอัลกอริทึมแทน (ซึ่งถึงเป็นวิธีที่ดีกว่า แต่ก็เป็นวิธีที่ยากหินโคตรในตัวของมันเหมือนกัน)
อย่างที่เรารู้กันว่า การตัดคำไทยยังไม่ใช่ระบบเปิด นั่นคือ ใครคิดอัลกอริทึมอะไรได้ ก็เขียนเอาไว้ในโค้ด เขียนเพิ่มขึ้น เพิ่มขึ้นเรื่อย ๆ อีกทั้งโค้ดที่เขียนไว้ ก็เขียนด้วยภาษาเฉพาะภาษาใดภาษาหนึ่ง เช่น อาจจะเขียนด้วย Java, PHP หรือ Visual Studio.NET เป็นต้น
ดังนั้นโดยลึก ๆ ของนักพัฒนาซอฟต์แวร์แล้วก็คงรู้สึกคล้าย ๆ กัน คือรู้สึก “กลัว” กลัวว่าโค้ดที่ตนเองเขียนเอาไว้จะหมดอายุลง ด้วยเหตุเพราะโดนภัยคุกคามจากสินค้าทดแทน อันได้แก่
- การเปลี่ยนแปลงของระบบเข้ารหัสภาษา ซึ่งเรื่องแบบนี้สมัยก่อนก็มีมาแล้วผมเข้าวงการมาทันพอดี ก็คือการเปลี่ยนการเข้ารหัสจาก รหัสเกษตร มาเป็น รหัส สมอ. แล้วก็จาก Windows-874 มาเป็น TIS-620 แล้วก็ตามด้วย UTF-8, UTF-16 และ UTF-32 ตามลำดับ
- ความนิยมของภาษาคอมพิวเตอร์ที่สร้างโค้ดต้นแบบเอาไว้ตกต่ำลง อันเนื่องมาจากมีภาษาคอมพิวเตอร์ใหม่ ๆ เกิดขึ้น เหมือนอย่างที่คนเขียน Java Servlet เจอมาแล้ว เมื่อตอนที่ความนิยมของภาษา PHP เติบโตก้าวกระโดด
- การเขียนโค้ดแทรกไว้เป็น Add Ons ของ Core Application เช่นเขียนเชื่อมไว้กับ Browser อย่าง IE แล้วภายหลังก็พบว่าใคร ๆ ก็หันไปใช้ FireFox กันแทน
สิ่งเหล่านี้ล้วนเป็นสิ่งบั่นทอนกำลังใจของนักพัฒนาซอฟต์แวร์ทั้งสิ้น ซึ่งมันจะทำให้การวิจัยพัฒนา NLP หยุดชะงักเป็นระยะ ๆ ไม่ต่อเนื่องเท่าที่ควร อีกอย่าง นักพัฒนาซอฟต์แวร์ก็เชี่ยวชาญแต่การพัฒนาซอฟต์แวร์ จะให้มาเป็นนักอนาคตศาสตร์เพื่อวิเคราะห์แนวโน้ม, ความเปลี่ยนแปลงของโลกไอทีในอนาคตก็ใช่ที่
ดังนั้นจุดสำคัญเพื่อให้การวิจัยพัฒนา NLP รวมถึงการตัดคำไทยเป็นไปอย่างต่อเนื่อง คงจะอยู่ที่การเปลี่ยนแนวความคิดซักเล็กน้อย โดยแนวความคิดดังกล่าวก็คือ การให้ความสำคัญกับการทำเอกสารครับ
นักพัฒนาซอฟต์แวร์ไทยส่วนใหญ่ ไม่ชอบการทำเอกสาร เพราะรู้สึกว่าจะเป็นการง่ายกว่า หากบรรจุความคิดของตนเองเข้าไปตรง ๆ ในรูปของโค้ดโปรแกรม แต่จากภัยคุกคามจากสินค้าทดแทนในย่อหน้าก่อน ๆ ที่ผมบอกเอาไว้ ชี้ให้เราเห็นว่า หากเราทำเอกสารเอาไว้อย่างดี การที่ผู้อื่นจะโอนย้ายโค้ดของเราไปยัง IDE อื่น, ภาษาคอมพิวเตอร์อื่น, Platform อื่น จึงน่าจะเป็นสิ่งที่ง่ายกว่า หากเป็นการทำโดยมีเอกสาร Functional Specification, Technical Specification และ Component Test Plan ซึ่งเราสร้างเอาไว้แล้วอย่างละเอียดประกอบไปด้วย
โดยสรุปแล้วผมมองว่า ระบบ NLP ของไทยเราจะเติบโตได้ ก็คงต้องอาศัยพิธีกรรม, กลไก และมาตรฐานอะไรหลาย ๆ อย่าง ประกอบเข้าด้วยกัน เพื่อให้การพัฒนาซอฟต์แวร์ซึ่งต่อยอดจากการวิจัยพัฒนาระบบ NLP ภาษาไทย เติบโตต่อไปด้วยความราบรื่นครับ
[tags]natural language processing, nlp, functional specification, technical specification, component test plan, การประมวลผลภาษาธรรมชาติ[/tags]
เป็นเรื่องที่น่าสนใจมาก ๆ อีกเรื่องครับพี่ไท้
แต่เวลาพูดเรื่องภาษาไทย กับไอทีทีไร ก็ทำให้รู้สึกน้อยเนื้อต่ำใจทุกทีไปครับ เนื่องเพราะลักษณะเฉพาะของภาษาเราหลาย ๆ อย่าง ทำให้ผมรู้สึกว่าภาษาไทยกับไอทีเป็นเหมือนน้ำกับน้ำมันงั้นเลย ตัดคำก็แปลกกว่าคนอื่น ประโยคหน้าตาเป็นไงไม่มีใครรู้ (ไม่มีจุดตอนจบประโยค) มีตำแหน่งสระถึงสี่ตำแหน่ง (แทนที่จะเรียง ๆ ตัวอักษรกันไปเรื่อย ๆ อย่างเช่นภาษาอื่น) แถมคนใช้ก็ยังมึน ๆ อีก (ผมคนหนึ่งละ) ดังนั้นพอใครมีทฤษฎีอะไรมาก็ใช้กับคนอื่นเขาไม่ได้ กรรม….
หากมองแบบวิกฤติเป็นโอกาส จะเห็นว่า ภาษาไทย ทำให้เราได้อัลกอริทึมและทฤษฎีใหม่เป็นจำนวนมาก ปัจจุบันก็ได้มีการจัดการประชุมวิชาการทางด้าน NLP โดยเป็นการประชุม NLP ในเทอมของภาษาเอเชีย ซึ่งมีความน่าสนใจและสร้างแนวคิดใหม่ๆ ได้อย่างหลากหลาย สามารถประยุกตฺ์การประมวลผลอื่นที่ไม่ใช่ NLP ได้อีกด้วย
สวัสดีครับ ผมจะหา Paper NLP ที่เกี่ยวกับภาษาไทยได้ที่ไหนบ้างครับ กำลังสนใจเรื่องนี้ ว่าจะเอามาทำ thesis