โปรแกรมการเรียงลำดับคำไทย (Thai Sorting)

Posted By Plookpedia | 11 ส.ค. 60
2,528 Views

  Favorite

โปรแกรมการเรียงลำดับคำไทย (Thai Sorting)

      การเรียงลำดับข้อมูลเป็นการจัดระเบียบให้แก่ข้อมูลเพื่อความสะดวกในการค้นหาโดยมีลำดับของข้อมูลที่ตายตัว การกำหนดลำดับดังกล่าวทำได้โดยกำหนดความสัมพันธ์ของข้อมูล ๒ ค่าใด ๆ เพื่อพิจารณาลำดับก่อนหลัง ความสัมพันธ์ดังกล่าวต้องมีคุณสมบัติถ่ายทอดได้ (transitive) กล่าวคือถ้า a ถูกกำหนดให้มาก่อน b และให้ b มาก่อน c แล้ว จะต้องได้ว่า a มาก่อน c ด้วย ในการเรียงลำดับตัวเลขความสัมพันธ์ดังกล่าวแทนได้ด้วยเครื่องหมายน้อยกว่า (<) นั่นเอง ส่วนการเรียงลำดับสายอักขระนั้นจะต้องสร้างฟังก์ชันสำหรับเปรียบเทียบสายอักขระเพื่อใช้ในกระบวนวิธีเรียงลำดับต่อไป  การเรียงลำดับสายอักขระในภาษาต่าง ๆ สามารถทำได้หลายแบบ เช่น การเรียงตามการออกเสียงซึ่งเห็นได้ในภาษาญี่ปุ่น การเรียงตามรูปอักษรดังตัวอย่างในภาษาอังกฤษหรือการเรียงตามรูปอักษรผสมกับการออกเสียงดังที่ปรากฏในพจนานุกรมไทยบางเล่ม 
      การเรียงลำดับช่วยให้การค้นหาทำได้ง่ายขึ้นไม่ว่าจะเป็นการค้นโดยคอมพิวเตอร์หรือค้นโดยผู้ใช้ก็ตาม ตัวอย่างที่เห็นได้อย่างชัดเจน คือ การค้นหาคำในพจนานุกรมหรือการค้นหาฐานข้อมูลชื่อต่าง ๆ เช่น ชื่อบุคคล ชื่อหน่วยงานหรือชื่อแฟ้มเอกสาร เป็นต้น ถ้าได้จัดเรียงไว้ตามลำดับแล้วก็สามารถประหยัดเวลาในการค้นหาได้ 

ตัวอย่างชื่อบุคคล 

      อนันต์ สมชาย กนกวรรณ ธเนศ ธนากร สมศรี จันทนา อดิศักดิ์ กอบกุล สมศักดิ์ ระพี จักรกฤษณ์ รัตนา 
หลังจากเรียงลำดับแล้วทำให้ค้นหาไง่ายขึ้น ดังนี้ 
      กนกวรรณ กอบกุล จักรกฤษณ์ จันทนา ธนากร ธเนศ ระพี รัจนา สมชาย สมศรี สมศักดิ์ อดิศักดิ์ อนันต์ 

การเรียงอักขระไทยโดยทั่วไปจะเรียงตามวิธีที่กำหนดไว้ในพจนานุกรมฉบับราชบัณฑิตยสถานซึ่งเป็นการเรียงตามรูปข้อกำหนดในการเรียงลำดับก็ คือ 
๑. ลำดับของพยัญชนะ และตัว ฤ ฤา ฦ ฦา เรียงไว้ตามรูป ไม่ใช่ตามเสียง (ตัวอย่างเช่น หนา อยู่หมวด ห ไม่ใช่หมวด น โดยมีลำดับดังนี้ 

 

ก ข ฃ ค ฅ ฆ ง จ ฉ ช ซ ฌ 
ญ ฎ ฏ ฐ ฑ ฒ ณ ด ต ถ ท 
ธ น บ ป ผ ฝ พ ฟ ภ ม ย ร 
ฤ ฤา ล ฦา ว ศ ษ ส ห ฬ 
อ ฮ 

๒. ลำดับของสระเรียงไว้ตามรูป ไม่ใช่ตามเสียง (ตัวอย่างเช่น รัว อยู่ในหมวดไม้หันอากาศไม่ใช่หมวดสระ อัว สังเกตว่าคำดังกล่าวไม่ได้อยู่ใกล้กับคำว่า รวมซึ่งมีเสียง อัว เหมือนกัน) โดยมีลำดับ ดังนี้ 


อะ อั อา อำ อิ อี อึ อื อุ อู เอ 
แอ โอ ใอ ไอ 

๓. พยัญชนะถือว่ามาก่อนสระเสมอ เช่น กก มาก่อน กะ และ จริง มาก่อน จะ 
๔. ไม่มีการเรียงลำดับตามวรรณยุกต์ เช่น ไต้ก๋ง ไต้ฝุ่น ไต่ไม้ เรียงลำดับเหมือนเป็นคำว่า ไตก๋ง ไตฝุน ไตไม เว้นแต่ในกรณีที่ตัวสะกดและการันต์เหมือนกัน เช่น ไต ไต่ ไต้ ไต๋ หรือกระตุ่น กระตุ้น คำที่มีไม้ไต่คู้จะมาก่อนวรรณยุกต์ เช่น เก็ง เก่ง เก้ง เก๋ง

 

อินเทอร์เน็ต

 

      รหัสภาษาไทยตาม มอก. ๖๒๐-๒๕๓๓ หรือที่เรียกกันว่ารหัส สมอ. นั้นได้จัดตัวอักขระให้เรียงอย่างถูกต้องตามข้อ ๑-๓ ข้างต้น จึงเอื้ออำนวยต่อการเรียงลำดับสายอักขระภาษาไทยเป็นอย่างดี อย่างไรก็ตามในการสร้างขั้นตอนวิธียังคงมีประเด็นอีก ๒ ประเด็นที่ต้องพิจารณาเพิ่มเติมกล่าวคือ 

๑. สระหน้าซึ่งเขียนก่อนพยัญชนะต้น

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

๒. วรรณยุกต์

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

สำหรับขั้นตอนวิธีการเรียงลำดับคำภาษาไทยสำหรับคอมพิวเตอร์ ได้มีผู้พัฒนาหลายท่าน โดยยึดหลักการเรียงตามข้างต้น ตัวอย่างเช่น 
      ๑. D. Londe และอุดม วโรตมสิกขดิตถ์ (พ.ศ. ๒๕๑๒) ได้เสนอวิธีการแปลงรูปแบบข้อความให้อยู่ในรูปที่สามารถเปรียบเทียบจากซ้ายไปขวาตามปกติได้ 
      ๒. วิชิต หล่อจีระชุณห์กุล (พ.ศ. ๒๕๒๒) ได้ปรับปรุงขั้นตอนวิธีของ Londe และอุดม และนำเสนอเป็นเอกสารประกอบการสัมมนาของสถาบันบัณฑิตพัฒนบริหารศาสตร์ 
      ๓. ยืน ภู่วรวรรณ (พ.ศ. ๒๕๒๙) ได้นำเสนอขั้นตอนวิธี CTW ในวารสารไมโครคอมพิวเตอร์ฉบับที่ ๒๔ โดยเปรียบเทียบอักขระทีละกลุ่ม ซึ่งการแบ่งกลุ่มอาศัยพยัญชนะเป็นตัวบอกจุดสิ้นสุดและมีการแบ่งระดับของน้ำหนักการเปรียบเทียบเป็น ๓ ระดับ คือ พยัญชนะ สระ และวรรณยุกต์ ตามลำดับ 
      ๔. สัมพันธ์ คำไทยดี (พ.ศ. ๒๕๓๕) ได้เสนอฟังก์ชัน tstrcmp ในวารสารคอมพิวเตอร์รีวิวฉบับที่ ๙๑ โดยแบ่งเป็น ๒ ขั้น ขั้นแรกเป็นการวิ่งสะสมผลต่างของวรรณยุกต์จนถึงจุดที่ตัวสะกด ส่วนอื่นต่างกันหรือจบสายอักขระ ขั้นที่ ๒ เป็นการเปรียบเทียบหากเป็นการจบสายอักขระก็สามารถใช้ผลต่างวรรณยุกต์ที่สะสมไว้หรือตรวจสอบความเป็นส่วนย่อยของสายอักขระได้ หากเป็นความต่างกันก่อนจบสายอักขระก็สามารถเปรียบเทียบ ณ จุดต่างได้ทันทีโดยมีการตรวจสอบสระหน้าก่อนทำการเปรียบเทียบที่เหมาะสม 
      ๕. เทพพิทักษ์ การุญบุญญานันท์ (พ.ศ. ๒๕๔๐) ได้เสนอสาร NECTEC ฉบับที่ ๑๔ ให้เพิ่มส่วนขยายจากกฎการเรียงลำดับคำตามพจนานุกรมฉบับราชบัณฑิตยสถาน กล่าวคือหากมีเครื่องหมายวรรคตอนอื่นกำกับคำด้วย เช่น ไม้ยมก (ๆ) ไปยาลน้อย (ฯ) มหัพภาค (.) ก็จะต้องพิจารณาเครื่องหมายดังกล่าวหลังจากวรรณยุกต์ ไม้ไต่คู้และไม้ทัณฑฆาตอีกต่อหนึ่ง ดังเช่นในลำดับต่อไปนี้ กรุงเทพ กรุงเทพฯ กรุงเทพมหานคร หรือในลำดับ ครก ค.ร.ก. ครบ เทพพิทักษ์เสนอให้ใช้วิธีขยายขอบเขตจาก tstrcmp ของสัมพันธ์ คำไทยดี

เว็บไซต์ทรูปลูกปัญญาดอทคอมเป็นเพียงผู้ให้บริการพื้นที่เผยแพร่ความรู้เพื่อประโยชน์ของสังคม ข้อความและรูปภาพที่ปรากฏในบทความเป็นการเผยแพร่โดยผู้ใช้งาน หากพบเห็นข้อความและรูปภาพที่ไม่เหมาะสมหรือละเมิดลิขสิทธิ์ กรุณาแจ้งผู้ดูแลระบบเพื่อดำเนินการต่อไป
  • Posted By
  • Plookpedia
  • 10 Followers
  • Follow