หลักเกณฑ์

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

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

อย่างไรก็ตาม เพื่อให้การแข่งขันครั้งนี้ก้าวไปข้างหน้าได้ เราจึงได้เชิญผู้เชี่ยวชาญในวงการจากหลายสถาบันเพื่อช่วยกันร่างหลักเกณฑ์ พื้นฐานที่สอดคล้องกันในการแบ่งคำและการตัดสิน ดังนี้

แนวทางในการแบ่งคำไทย
------------------------------------------
การแบ่งคำไทยในการแข่งขันนี้จะใช้เกณฑ์ “หน่วยเล็กที่สุดที่มีองค์ประกอบความเป็นคำครบถ้วน” (Minimal Integrity Unit) ของ [Aroonmanakun 2007] รายละเอียดกรุณาศึกษาจากบทความและเอกสารแนวทางการแบ่งคำไทย

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

การแบ่งคำให้สั้นไว้ก่อนนั้น ถ้าต้องการคำยาว ก็สามารถนำเอาคำสั้นมารวมกันได้ง่าย ผิดกับการแบ่งคำยาวไว้ก่อน ถ้าต้องการคำสั้นก็ต้องมาเข้ากระบวนการแบ่งคำและพบกับปัญหาความกำกวมในการ แบ่งอีก จึงเห็นได้ว่าการแบ่งคำสั้นนั้นพัฒนาต่อยอดได้ง่ายกว่า

หน้าที่ของผู้เข้าแข่งขัน
------------------------------------------

  • ผู้เข้าแข่งขันมีหน้าที่เขียนโปรแกรมให้สามารถแทรกตัวแบ่งคำ | ในตำแหน่งท้ายคำที่ต้องการแบ่งเท่านั้น ห้ามเปลี่ยนแปลงข้อความอื่นใด
  • ไม่ต้องกำกับ Tag <NE>...</NE>, <AB>...</AB> หรือ <POEM>...</POEM> ในชุดทดสอบแต่อย่างใด
  • การเว้นวรรคให้ถือว่าเป็นคำหนึ่งคำที่จะต้องถูกแบ่งด้วย แต่ถ้ามีการเว้นวรรคมากกว่าหนึ่งครั้งติดกันให้นับรวมเป็นคำเดียว
  • กลุ่มคำที่ถูกพิจารณาว่าเป็น NE, AB หรือ POEM ไม่ว่าจะมีกี่คำอยู่ภายในให้นับรวมเป็นคำเดียว จึงไม่จำเป็นต้องแบ่งคำที่เกิดขึ้นภายในกลุ่มคำเหล่านี้


หลักเกณฑ์ในการตัดสิน
------------------------------------------

  • การตัดสินจะใช้คลังข้อความที่ไม่ได้แบ่งคำ (Non-segmented Corpus) โดยในรอบการแข่งขันระดับภูมิภาคจะใช้ขนาดประมาณ 100,000 คำ และในรอบชิงชนะเลิศจะใช้ประมาณ 500,000 คำ เพื่อให้แต่ละทีมทดลองแบ่งคำ และหาค่า F-measure ซึ่งคำนวณได้จากค่าความครบถ้วน (Recall) และค่าความแม่นยำ (Precision) เมื่อเทียบกับคลังข้อความเดียวกันที่แบ่งคำโดยคณะกรรมการ
  • NE, AB และ POEM ถือว่าเป็นหนึ่งคำ
  • คำที่เกิดขึ้นจากการแบ่งภายใน POEM จะไม่ถูกนำมาคิดคะแนน เหตุเพราะเรายังไม่มีเกณฑ์ในการแบ่งคำภายใน POEM ที่แน่ชัด จึงยกประโยชน์ให้ผู้เข้าแข่งขัน
  • ความเร็วในการแบ่งคำต้องไม่น้อยกว่า 500 คำ/วินาที โดยเริ่มจับเวลาตั้งแต่เปิดโปรแกรมแบ่งคำจนได้ไฟล์ผลลัพธ์
  • การให้คะแนนจะคำนวณจากสี่ปัจจัยคือ F-measure, เวลาที่ใช้ทั้งหมด, หน่วยความจำสูงสุดที่โปรแกรมเรียกใช้ (Memory Usage) และเนื้อที่ในฮาร์ดดิสก์ที่ใช้ในการติดตั้งโปรแกรม (Footprint) โดยในข้อแรกยิ่งสูงยิ่งได้คะแนนมาก ส่วนอีกสามข้อที่เหลือยิ่งน้อยยิ่งได้คะแนนมาก
  • นอกจากคะแนนที่ได้จากการคำนวณข้างต้นแล้ว ยังมีคะแนนจากคณะกรรมการสำหรับรายงานและการนำเสนอผลงานอีกด้วย
  • คำตัดสินของคณะกรรมการถือเป็นที่สุด


วิธีการคำนวณค่า F-measure
------------------------------------------
F-measure คำนวณได้จากสูตรดังนี้
       F-Measure = 2 x Precision x Recall / (Precision + Recall)
โดยที่
        Precision = Corr / OutputWord
        Recall = Corr / RefWord
เมื่อ
      Corr = จำนวนคำที่ผู้เข้าแข่งขันแบ่งได้อย่างถูกต้อง
 OutputWord = จำนวนคำที่ผู้เข้าแข่งขันแบ่งมาทั้งหมด
 RefWord = จำนวนคำที่แบ่งโดยคณะกรรมการ

ข้อควรระวัง
------------------------------------------

  • อย่าลืมแทรกเครื่องหมาย | ท้ายคำสุดท้ายก่อนขึ้นบรรทัดใหม่ มิฉะนั้นจะถือว่าต้องการรวมการขึ้นบรรทัดใหม่ไว้ในคำข้างหน้าด้วย ตัวอย่างเช่น ฉัน|กิน|ข้าว โดยที่ไม่มี | หลังคำว่า "ข้าว" จะทำให้คำสุดท้ายกลายเป็นคำที่แบ่งผิด ที่ถูกควรเป็น ฉัน|กิน|ข้าว|
  • อย่าลืมแทรกเครื่องหมาย | ที่การเว้นวรรค มิฉะนั้นจะถือว่าการเว้นวรรคเป็นส่วนหนึ่งของคำ ตัวอย่างเช่น ฉัน|กิน|ข้าว และ|ปลา| เช่นนี้จะถือว่า "ข้าว และ" เป็นคำเดียวกัน ที่ถูกควรเป็น ฉัน|กิน|ข้าว| |และ|ปลา|
  • การแทรกเครื่องหมาย | ผิดตำแหน่งจะก่อให้เกิดคำผิดทั้งทางด้านซ้ายและขวาของเครื่องหมาย ตัวอย่างเช่น ฉัน|กิ|นข้าว| จะเกิดคำผิดสองที่คือ "กิ" และ "นข้าว"
  • ถึงแม้ว่าคำที่เกิดขึ้นจากการแบ่งภายใน POEM จะไม่ถูกนำมาคิดคะแนน แต่การบอกขอบเขตซ้ายขวาของกลุ่มคำดังกล่าวได้อย่างถูกต้องจะมีผลต่อคะแนน เหตุเพราะกลุ่มคำเหล่านี้ถูกถือว่าเป็นคำหนึ่งคำด้วย ตัวอย่างเช่น เขา|ร้อง|บท|<POEM>เย็นย่ำ จะค่ำอยู่แล้วลงรอนรอน</POEM>| ไม่ว่าจะแบ่งมาเป็น เขา|ร้อง|บท|เย็นย่ำ จะค่ำอยู่แล้วลงรอนรอน| หรือแบ่งมาเป็น เขา|ร้อง|บท|เย็น|ย่ำ| |จะ|ค่ำ|อยู่แล้ว|ลง|รอนรอน| การแบ่งทั้งสองแบบนี้จะได้คะแนนเท่ากัน เพราะตัวอย่างที่สองเป็นการแบ่งภายใน POEM ซึ่งไม่ถูกนำมาคิดคะแนน แต่ถ้าแบ่งมาเป็น เขา|ร้อง|บทเย็น|ย่ำ จะค่ำอยู่แล้วลงรอนรอน| จะมีคำว่า "บทเย็น" เป็นคำที่แบ่งผิดเพราะแบ่งเกินขอบเขตของ POEM


ตัวอย่างการคิดคะแนน
------------------------------------------

  • ประโยคทดสอบ : เขาร้องบทเย็นย่ำ จะค่ำอยู่แล้วลงรอนรอน
  • เฉลยจากคณะกรรมการ : เขา|ร้อง|บท|<POEM>เย็นย่ำ จะค่ำอยู่แล้วลงรอนรอน</POEM>|
  • ผลลัพธ์จากผู้เข้าแข่งขันท่านที่ 1 : เขา|ร้อง|บท|เย็นย่ำ จะค่ำอยู่แล้วลงรอนรอน|     จะได้คะแนน Recall = 4/4, Precision = 4/4, F-measure = 1
  • ผลลัพธ์จากผู้เข้าแข่งขันท่านที่ 2 : เขา|ร้อง|บท|เย็น|ย่ำ| |จะ|ค่ำ|อยู่แล้ว|ลง|รอนรอน|     จะได้คะแนน Recall = 4/4, Precision = 4/4 (ขอบเขตซ้ายขวาของ POEM ถูก จึงนับ POEM เป็นหนึ่งคำโดยไม่สนใจการแบ่งภายใน POEM), F-measure = 1
  • ผลลัพธ์จากผู้เข้าแข่งขันท่านที่ 3 : เขา|ร้อง|บทเย็น|ย่ำ จะค่ำอยู่แล้วลงรอนรอน|     จะได้คะแนน Recall = 2/4, Precision = 2/3 (คำว่า "ย่ำ จะค่ำอยู่แล้วลงรอนรอน" ได้รับการยกเว้นเพราะเป็นคำภายใน POEM แต่คำว่า "บทเย็น" แบ่งเกินขอบเขตของ POEM จึงไม่ได้รับการยกเว้น), F-measure = 4/7