กระโดดไปยังแผงนำทาง

Natural Language Processing 30 December 2006 5:03 pm

บันทึกโดย Mr. PeeTai ใน : การสร้างซอฟต์แวร์ , ตรวจย้อนกลับ

ใกล้จะปีใหม่แล้ว มาเล่าอะไรที่มันสบาย ๆ ดีกว่า วันนี้เอาเรื่องความก้าวหน้าของแขนงวิชาการประมวลผลภาษาธรรมชาติ หรือ Natural Language Processing หรือ NLP ของไทยกันดีกว่าเน้อะ

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

การจะให้คอมพิวเตอร์เข้าใจประโยคข้อความภาษาไทยของเราได้ ก็มีความจำเป็นที่จะต้องตัดประโยคภาษาไทยออกเป็นคำ ๆ แล้วจึงส่งให้ระบบ 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 ภาษาไทย เติบโตต่อไปด้วยความราบรื่นครับ

Technorati Tags: , , , , ,

ความคิดเห็น»

1. bow_der_kleine - December 31, 2006

เป็นเรื่องที่น่าสนใจมาก ๆ อีกเรื่องครับพี่ไท้

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

2. พี่ไท้.คอม » การประมวลผลร้อยกรอง - January 6, 2007

[…] ตอนนั้นรุ่นน้องเลยถามว่า แล้วจะใช้ทฤษฎีอะไรล่ะ ถึงจะทำซอฟต์แวร์ที่ว่านี้ได้ ผมก็เลยโบ้ยไปว่า ก็ลองศึกษา Natural Language Processing ดูสิ วิชาแขนงนี้สามารถตอบโจทย์ได้ (สุดท้ายน้องคนนี้ยังอยากเรียนจบครับ เลยไม่เชื่อผม เปลี่ยนใจไปทำระบบสแกน Wire Frame แทน ก็โชคดีไป ) […]


*
เพื่อพิสูจน์ว่าคุณเป็นมนุษย์ (ไม่ใช่หุ่นยนต์) ดังนั้น กรุณาใส่รหัสป้องกันซึ่งแสดงอยู่ด้านล่างด้วยครับ
Anti-Spam Image