สิ่งที่ผมรู้ หากคุณอ่าน คุณจะรู้ตามผมไปด้วย

20-06-2007

n-Gram

Filed under: n-Gram — ejeepss @ 12:12:49

n-Gram

บทความเขียนสมัยยังศึกษา ซึ่งเป็นหนึ่งในหลายๆ เทคนิคย่อยของ Search Engine เพื่อทำให้ทราบว่า คอมพิวเตอร์สามารถรู้ได้อย่างไร หากมีประโยคหนึ่งประโยค สามารถตัดคำได้อย่างไร ในหลายๆ เช่น ภาษาอังกฤษ , สเปน หรือภาษาอื่น ๆ ยิ่งหากเป็นภาษาไทย ภาษาเราไม่ได้แบ่งคำโดยใช้การเว้นวรรค (Space) การตัดคำจึงเป็นเรื่องที่ยากกว่าภาษาอังกฤษ ที่ใช้การเว้นวรรค ในการแบ่งคำ เพราะฉะนั้น n-Gram สามารถเข้ามาช่วยเสริมการตัดคำได้ แต่หากให้ได้ผลดี ควรมีคลังข้อมูลของคำขนาดใหญ่ (Corpus) เพื่อช่วยทำการจัดหมวดหมุ่ และความคล้ายคลึงเชิงมุม เพื่อหาว่าคำต่อไปควรเป็นคำว่าอะไร ต่อไป ถึงจะได้ประสิทธิภาพมากที่สุด

1. บทนำ
ระบบการค้นคืนสารสนเทศ (Information Retrieval) ในขั้นตอนการประมวลผลข้อความ (Text processing) สิ่งที่เป็นพื้นฐานที่จำเป็นอย่างยิ่งคือ “หน่วยคำ” ดังนั้นการหาขอบเขตของแต่ละคำจึงเป็นสิ่งแรกที่ต้องคำนึงถึง เพราะหากเลือกการหาขอบเขตคำไม่เหมาะสมอาจนำมาสู่ระบบการประมวลผลข้อความที่ไม่ถูกต้อง สำหรับภาษาไทยการหาขอบเขตคำค่อนข้างเป็นปัญหาเนื่องจากลักษณะการเขียนภาษาไทยนั้นไม่มีการใช้ตัวอักษรหรือสัญลักษณ์ที่นำมาใช้คั่นระหว่างคำหรือว่ามีการวรรคระหว่างคำเหมือนภาษาอังกฤษ งานต่างๆ ในด้านการประมวลผลภาษาไทยนั้น จึงจำเป็นอย่างยิ่งที่ต้องทราบขอบเขตของคำ นั่นคือต้องมีกระบวนการตัดคำ (Word Segmentation) ที่เหมาะสมก่อนเป็นอันดับแรก
ซึ่งนิยามของการตัดคำ คือ การแบ่งตัวอักษรจากข้อความ (String) เพื่อหาขอบเขตของแต่ละหน่วยคำ (Morpheme) เนื่องจากส่วนใหญ่฿าษาไทยมีการเขียนในลักษณะที่ติดกันโดยไม่มีการใช้เครื่องหมายวรรคตอนคั่นระหว่างคำเหมือนภาษาอังกฤษ ซึ่งใช้ช่องว่าง (Space) คั่นระหว่างคำ แต่ภาษาไทยจะมีการเว้นวรรคเป็นระยะเพื่อให้ผู้อ่านทำความเข้าใจกับความหมายของข้อความ การตัดคำและการกำกับหมวดคำภาษาไทยได้รับความสนใจอย่างต่อเนื่องมาเป็นลำดับจนถึงปัจจุบัน โดยเฉพาะงานด้านการตัดคำภาษาไทย มีงานวิจัยจำนวนไม่น้อยที่ได้เสนอวิธีการในการตัดคำภาษาไทยแบบต่าง ๆ โดยมุ่งหวังให้วิธีการที่เสนอมีประสิทธิภาพดีกว่าวิธีการที่ผ่าน ๆ มา ซึ่งบางวิธีการจะได้ผลลัพธ์ทางเลือกในการตัดคำมากกว่าหนึ่งรูปแบบ [1] จึงจำเป็นต้องเลือกทางเลือกใดทางเลือกหนึ่งที่ดีที่สุดโดยอาศัยกฎทางไวยากรณ์ (Syntax) และความหมาย(Semantic) มาช่วยตัดสิน มีผู้นำเสนอวิธีการที่อาศัยความถี่ของการใช้คำภาษาไทยเพื่อเลือกประโยคที่มีการตัดคำที่ถูกต้อง เนื่องจากการใช้กฎไวยากรณ์ภาษาไทยในการเลือกจะทำให้ฐานความรู้มีขนาดใหญ่
วิธีการตัดคำภาษาไทยสามารถแบ่งได้เป็น 3 หลักการใหญ่ คือ หลักการตัดคำโดยใช้กฎ (Rule Base Approach) หลักการตัดคำโดยใช้พจนานุกรม (Dictionary Approach) และหลักการตัดคำโดยใช้คลังข้อมูล (Corpus Based Approach) แต่ละวิธีการต่างก็ให้ผลในด้านความถูกต้อง ความรวดเร็วของการทำงานและปริมาณการใช้ทรัพยากรต่างๆ ที่แตกต่างกัน นอกจากนี้ยังมีการตัดคำแบบที่เรียกว่า N-Gram [2] ซึ่งเป็นลักษณะการตัดคำที่ไม่ใส่ใจในความหมายของคำ

2. ความหมายของ N-Gram
N-Gram คือ แบบจำลองที่ใช้คำนวณค่าความน่าจะเป็นของชุดอักขระ (Character Sequence) ที่เกิดขึ้นร่วมกันเป็นคำ หรือค่าความน่าจะเป็นของคำที่เขียนเรียงกัน (Word Sequence) ที่เกิดขึ้นร่วมกันเป็นประโยค โดยค่าความน่าจะเป็นของชุดอักขระหรือคำ ประมาณได้จากคลังข้อมูลที่สร้างไว้ ซึ่ง N-Gram ได้ใช้หลักการของสถิติในหลาย ๆ ด้านมาประยุกต์ใช้

3. การนำ N-Gram มาประยุกต์ใช้
การเขียนในภาษาไทยนั้นจะมีความแตกต่างกับภาษาอังกฤษอย่างเด่นชัด เนื่องจากภาษาอังกฤษจะมีช่องว่างในการระบุคำแต่ละคำ งานวิจัยที่เกี่ยวข้องกับภาษาไทยส่วนใหญ่นั้นจะอาศัยโปรแกรมตัดคำ โดยใช้พจนานุกรมในการตัดคำแต่ก็ไม่ได้มีประสิทธิภาพที่ดี 100% เนื่องจากมีความเป็นไปได้ที่คำที่ปรากฏในเอกสาร อาจจะไม่ปรากฏในพจนานุกรม ซึ่งงานวิจัยในไทยส่วนใหญ่จึงได้นำเสนอแนวคิดใหม่ โดยทำการนำบางส่วนของข้อความนั้นออกมาเป็นข้อความตามค่า N ซึ่งเรียกวิธีนี้ว่า N-Gram เข้ามาใช้ในการตัดคำแทน

3.1 N-Gram กับการประมวลผล฿าษาธรรมชาติ
N-Gram ถูกนำไปประยุกต์ใช้กับงานด้านการประมวลผลภาษาธรรมชาติ (NLP : Natural Language Processing) ซึ่งส่วนใหญ่จะนำไปใช้แก้ไขข้อจำกัดการตัดคำในภาษาไทย เนื่องจากในระบบการตัดคำด้วยพจนานุกรม ซึ่งมักจะพบปัญหาว่ากรณีที่คำที่ปรากฏในเอกสารนั้นไม่มีอยู่ในพจนานุกรมนั้น ในขณะที่วิธี N-Gram คือ การนำบางส่วนของข้อความนั้นออกมาเป็นหน่วยคำ (Term) ตามค่า N เพื่อใช้แทนการตัดคำ โดยทำให้ลดเวลาในการค้นหาคำในเอกสารกับคำในพจนานุกรม แต่ใน฿าษาไทยนั้นจะไม่สามารถกำหนดได้ว่า 1 ตัวอักษรคือ 1 Gram เนื่องจากภาษาไทยมีสระและวรรณยุกต์ ดังนั้นในภาษาไทยจึงถือว่ากรณีที่ตัวอักขระเป็นตำแหน่งที่มีสระและวรรณยุกต์อยู่ด้วยจะถือว่าเป็น 1 Gram โดยทั่วไปในภาษาไทยนิยมใช้การตัดคำแบบ 2, 3 และ 4 Gram [4]

3.2 Gram
คือ หน่วยที่ใช้ในการสร้างแบบจำลอง อาจจะเป็นเสียง คำ หรือ อักขระก็ได้และ Gram มีได้หลายขนาดแล้วแต่จะกำหนด ตั้งแต่ 1 จนถึง N ในแบบจำลองเอ็นแกรมนี้ใช้ความยาวของชุดอักขระและคำที่เขียนเรียงกันแตกต่างกัน ได้แก่ 2-Gram , 3- Gram , 4- Gram ฯลฯ ถ้าจะประมาณค่าความน่าจะเป็นของชุดคำหรือชุดอักขระจากคลังข้อมูลโดยการใช้วิธี N-Gram ผลที่ได้มีดังนี้

  • การประมาณค่าด้วย 2-Gram (Probability bigram) คือ การประมาณค่าความน่าจะเป็นของชุดอักขระที่เกิดขึ้นร่วมกันว่ามีค่าเท่ากับผลคูณของความน่าจะเป็นที่จะพบอักขระ(คำ) ทีละ 2 ตัว (คำ) ติดกันในชุดอักขระนั้น
  • การประมาณค่าด้วย 3- Gram (Probability trigram) คือ การประมาณค่าความน่าจะเป็นของชุดอักขระที่เกิดขึ้นร่วมกันว่ามีค่าเท่ากับผลคูณของความน่าจะเป็นที่จะพบอักขระ(คำ) ทีละ 3 ตัว (คำ) ติดกันในชุดอักขระนั้น
  • การประมาณค่าด้วย 4- Gram (Probability quadigram) คือ การประมาณค่าความน่าจะเป็นของชุดอักขระที่เกิดขึ้นร่วมกันว่ามีค่าเท่ากับผลคูณของความน่าจะเป็นที่จะพบอักขระ (คำ) ทีละ 4 ตัว (คำ) ติดกันในชุดอักขระนั้น หรืออาจประมาณค่าความน่าจะเป็นจากความยาวของเอ็นแกรมมากกว่า 4-แกรม ก็ได้ขึ้นอยู่กับความจำเป็นในการทดลอง แต่ระบบของเอ็นแกรมก็ยิ่งซับซ้อนมากขึ้นตามลำดับ
  • 4. หลักการทำงานของ N-Gram
    การประมาณค่าความน่าจะเป็นของชุดอักขระ โดยการใช้เอ็นแกรมดังที่กล่าวมา คือ การใช้สมมติฐานของมาร์คอฟ (Markov assumption) ว่า การปรากฏของตัวอักษรตัวหนึ่งขึ้นกับตัวอักษรก่อนหน้าเพียง n-1 ตัว ซึ่งวิธีนี้มักนิยมใช้ในงานระบุภาษาของข้อความกันมาก เนื่องจากสามารถใช้เพื่อระบุภาษาได้อย่างมีประสิทธิภาพและเรียบง่ายกว่า โดยสามารถประมาณได้ดังนี้

  • ไบแกรม P(c1c2c3…..cn) = P(c1) P(c2|c1) P(c3|c2) …P(cn|cn-1)
  • ไตรแกรม P(c1c2c3…..cn) = P(c1) P(c2|c1) P(c3|c1c2)…P(cn|cn-2cn-1)
  • ควอดิแกรม P(c1c2c3…..cn) = P(c1) P(c2|c1) P(c3|c1c2) P(c4|c1c2c3)… P(cn|cn-3cn-2cn-1)
  • โดยที่

  • P แทน ค่าความน่าจะเป็น
  • c แทน อักขระหรือตัวอักษร
  • (c1c2c3…..cn) แทน ชุดอักขระที่ประกอบด้วยอักขระตั้งแต่ 3 ตัวขึ้นไปจนถึง n ตัว
  • ส่วนความน่าจะเป็นของชุดคำที่รวมกันเป็นประโยค w1w2w3….wn หากประมาณค่าด้วยเอ็นแกรมต่าง ๆ ผลที่ได้ดังนี้
    โดยที่

  • w แทน คำ
  • n แทน จำนวนนับต่อไป
  • P แทน ค่าความน่าจะเป็น
  • (w1w2w3…..wn) แทน ชุดคำที่ประกอบด้วยคำมากกว่า 3 คำขึ้นไป
  • ความน่าจะเป็นของประโยคโดยใช้วิธี 2-Gram คือ P(w1w2w3…..wn) = P(w1) P(w2|w1) P(w3|w2) … P(wn|wn-1)
  • ความน่าจะเป็นของประโยคโดยใช้วิธี คือ 3- Gram คือ P(w1w2w3…wn) = P(w1) P(w2|w1) P(w3|w1w2)…P(wn|wn-2wn-1)
  • n_gram1.jpg

    โดยที่

  • P คือ ค่าความน่าจะเป็น (Probability) ซึ่งประมาณได้จากคลังข้อมูล
  • T คือ จำนวนของคำ
  • i คือ ลำดับของคำโดยเริ่มต้นที่ลำดับที่ 1
  • P(wi | w1…wi–1) คือ ความน่าจะเป็นของคำ wi หลังจากเกิดคำ w1w2…wi-1 ก่อนหน้านี้
  • ความน่าจะเป็นของประโยคนี้ P(w1 w2….wT) สามารถประมาณได้ โดยถือว่าการปรากฏของคำ wi นั้นขึ้นอยู่กับจำนวนคำข้างหน้า n-1 ตัวเท่านั้นหรือขึ้นอยู่กับขนาดของเอ็นแกรม ดังนั้นถ้าหากประมาณค่าความน่าจะเป็นของประโยคนี้ โดยใช้ 2-แกรม จะปรับเปลี่ยนสมการดังนี้

    n_gram2.jpg

  • P(w1|.. s ..) หมายถึง ความน่าจะเป็นของคำที่หนึ่งเมื่อเกิดเป็นคำแรกของประโยค ซึ่ง ในที่นี้คือช่องว่าง
  • P(w2|w1) หมายถึง ความน่าจะเป็นของคำ w2 หลังจากเกิดคำ w1
  • P(wi | wi-1) หมายถึง ความน่าจะเป็นของคำ wi หลังจากเกิดคำ wi-1
  • ดังนั้น จากสูตรประมาณค่าความน่าจะเป็นด้วย 2-Gram หากต้องการหาความน่าจะเป็นของประโยค “He like to eat banana” โดยใช้ N-Gram ในระดับของคำ ผลออกมาคือ

    n_gram21.jpg

    ส่วนค่าความน่าจะเป็นจะหาได้จากคลังข้อมูล เช่น

    n_gram3.jpg

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

    5. ตัวอย่างงานวิจัยที่นำมา N-Gram มาใช้กับ฿าษาไทย

    อัษฎางค์ (2004) ได้นำเสนองานวิจัยเรื่อง “การย่อความเอกสารภาษาไทยโดยกรรมวิธีการแยกค่าแบบเดี่ยว” โดยนำเสนอแนวคิดในการย่อความเอกสารสำหรับภาษาไทย ที่ทำการแก้ไขข้อจำกัดการตัดคำในภาษาไทยโดยใช้ N-Gram และสามารถย่อความเอกสารโดยไม่ขึ้นกับประเภทของเนื้อหา ไม่ใช้พจนานุกรม และไม่อาศัยการเรียนรู้ชุดข้อมูลสอน โดยใช้แต่เพียงความรู้ทางคณิตศาสตร์เท่านั้น ซึ่งผลลัพธ์ของการย่อความนั้น จะทำการเลือกย่อหน้าที่มีใจความสำคัญจากเอกสารต้นฉบับ โดยใช้ทฤษฎีการแยกค่าแบบเดี่ยว และในการวัดประสิทธิภาพนั้นได้ทำการทดสอบกับชุดข้อมูลทดสอบที่เป็นเอกสารข่าว ประกอบไปด้วยข่าวเกษตรกรรม ข่าวทั่วๆ ไป และบทความ รวมจำนวนทั้งสิ้น 30 เอกสาร ซึ่งผลของการวัดประสิทธิ฿าพแสดงให้เห็นว่าสามารถแก้ไขข้อจำกัดในเรื่องการตัดคำในภาษาไทยได้โดยวิธี N-Gram และจำนวน Gram ให้ประสิทธิภาพที่ดีที่สุดได้แก่ 3-Gram

    6. สรุป
    จากการศึกษา N-Gram นั้น จะเห็นว่า N-Gram น่าจะเป็นวิธีการที่นำมาใช้กับภาษาไทยได้ดีวิธีหนึ่ง และผลงานวิจัยของหลาย ๆ ท่าน จะแสดงให้เห็นว่าประสิทธิภาพของ N-Gram ที่ดีอยู่ที่ 3-Gram และ 4-Gram ซึ่งงานวิจัยส่วนใหญ่เลือกใช้แบบจำลอง N-Gram เพื่อพัฒนาระบบการระบุภาษาของคำโดยมีเหตุผลหลัก ๆ ดังนี้ [3]

    1. N-Gram เป็นวิธีทางสถิติที่เป็นพื้นฐานและเรียบง่ายมากที่สุด ซึ่งจะช่วยลดต้นทุนในการทำระบบการระบุ฿าษา
    2. สามารถนำ N-Gram มาใช้ร่วมกับวิธีอื่น ๆ ได้ เนื่องจากจะช่วยเพิ่มประสิทธิภาพของระบบให้ดีมากยิ่งขึ้น
    3. N-Gram สามารถใช้ระบุภาษาได้ทุกภาษา ในกรณีระบุภาษาที่ใช้ชุดอักขระที่เป็นตัวอักษรประเภทเดียวกัน แต่ต่าง฿าษากัน เช่น อักษรโรมันที่ใช้เขียนภาษาอังกฤษ เยอรมัน อิตาเลียน หรืออักษรไทย ที่ใช้เขียนคำทับศัพท์ภาษาอังกฤษ ญี่ปุ่น และฝรั่งเศส เป็นต้น
    4. เนื่องจากรูปแบบของข้อมูลนำเข้าเพื่อทดสอบ และข้อมูลการฝึกควรจะเรียบง่ายมากที่สุด ไม่มีการประมวลผลเบื้องต้น (Pre-process) เช่น การ Encoding ข้อมูลหรือการใส่ Tag ลงบนข้อมูล ดังนั้น N-Gram จึงเป็นวิธีที่ดีที่สุดที่จะลดความยุ่งยากในการพัฒนาระบบ
    5. ใน N-Gram เพียงใช้คลังข้อมูลจำนวนน้อยก็สามารถระบุภาษาของคำได้ถูกต้อง

    7. เอกสารอ้างอิง
    [1] นัฐวุฒิ ไชยเจริญ, “การตัดคำและการกำกับหมวดคำภาษาไทยแบบเบ็ดเสร็จด้วยคอมพิวเตอร์”, วิทยานิพนธ์ อศ.ม., กรุงเทพฯ : จุฬาลงกรณ์มหาวิทยาลัย, 2544.
    [2] วีรยา อมรพงษ์กุล, อัษฎา฿รณ์ พิมพ์สมบูรณ์, จันทิมา พลพินิจ และ อุมา฿รณ์ สายแสงจันทร์, “การประยุกต์เอ็นแกรมและเว็กเตอร์โมเดลสำหรับระบบย่อข้อความ฿าษาไทย”, The 1st Thailand Computer Science conference (ThCSC), 2004.
    [3] อัครพล เอกวงศ์อนันต์, “การระบุคำไทยและคำทับศัพท์ด้วยแบบจำลองเอ็นแกรม”, วิทยานิพนธ์ อศ.ม., กรุงเทพฯ : จุฬาลงกรณ์มหาวิทยาลัย, 2548.
    [4] อัษฎางค์ แตงไทย และ ชุลีรัตน์ จรัสกุลชัย, “การย่อความภาษาไทยโดยกรรมวิธีการแยกค่าแบบดี่ยว”, The Procof NCSEC. 2004.

    ขอบพระคุณที่สนใจอ่าน

    Powered by WordPress