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

26-11-2007

robot.txt คือไฟล์อะไร

Filed under: robot.txt คือไฟล์อะไร? — ejeepss @ 10:51:10

robot.txt นั้นคืออะไร

Web Administrator หลายท่านคงสงสัย ว่าทำไม Web Server ของเราถึงมีไฟล์ robot.txt ทั้ง ๆ ที่ไม่ได้ติดตั้งมาก่อน หรือเครื่องเราโดนดีเข้าให้แล้ว หรืออย่างไร

ก่อนอื่นเราต้องทำความเข้าใจหลักการทำของงาน Search Engine กันนิดหนึ่งนะครับ Search Engine ทุกตัว จะส่ง robot ของตัวเอง เช่น หากเป็น Google จะเรียกว่า Google bot , MSN จะเรียกของตัวเองว่า MSN bot หรือแม้แต่ Yahoo หรือ Search Engine ตัวอื่น ๆ ก็จะเรียกชื่อที่ต่างกันออกไป เพื่อจุดประสงค์็ ไปไต่ (Craw) ตามเว็บ Link ต่าง เช่น และเก็บเอาเนื้อหา หรือ Content ต่างๆ กลับมาวิเคราะห์ที่ Server ของตัวเอง เพื่อหาว่า เนื้อหาใน Web ที่ไปเก็บมานั้น มีเนื้อหาเกี่ยวกับอะไร เช่น กีฬา , ข่าว , Blog หรือเนื้อหาอื่น ๆ โดยจะใช้กรรมวิธีในการคิด วิเคราะห์ (Algorithm) ที่แตกต่างกันออกไป เพื่อวิเคราะห์ให้ได้ว่า Web นั้น มีเนื้อหาด้านนั้นจริงๆ และนำมาจัดเก็บใน Index Server เพื่อให้ผู้ที่ต้องการค้นหาคำที่ต้องการ มาค้นหาจาก Index Server เ้พื่อจะได้ค้นหา Website ที่เขาต้องการได้รวดเร็ว และตรงตามใจที่สุด

หากท่านเป็น Web Administrator หากต้องการ Promote Site ให้คนอื่นรู้จัก อาจจะชอบที่จะให้ Google bot มาเ้ก็บหน้า Web อยู่เป็นประจำ เพื่อให้คนอื่นที่ใช้ Google สามารถค้นหาชื่อเราได้รวดเร็ว อยู่ในอันดับที่ดี ๆ แต่คิดในทางตรงกันข้ามนะครับ หาก Web เราเป็บเว็บที่มีการมีข้อมูลอ่อนไหวง่าย เช่น ข้อมูลเกี่ยวกับเงินเดือน บุคลากร หรือ ข้อมูลที่ปกปิด ไม่ต้องการให้ใครทราบ (แต่ไม่สามารถจำกัดการเข้าถึง ให้เหลือเพียงใน Network ภายในได้) จะทำอย่างไร เพราะ Bot ต่างๆ เหล่านี้ไม่ทราบหรอกว่า ข้อมูลไหน เป็นความลับ ข้อมูลไหน ควรเปิดเผยได้ มันก็ทำหน้าที่ของมันไป

วิธีการที่จะป้องในกันเบื้องต้น คือสร้างไฟล์ที่ชื่อว่า Robot.txt วางไว้ที่ Root ของแต่ละ Directory ที่ต้องการกำหนดการเข้าถึง ตามหลักแล้ว Robot ที่มีจริยธรรม จะอ่าน Robot.txt เสมอ ว่า Web นั้นอนุญาติ Robot ตัวไหน เข้าถึงไฟล์ หรือ Folder ไหนได้บ้าง โดยวิธีการกำหนดมีดังนี้

robot.txt

User-Agent: Googlebot
Disallow: /logs/

User-Agent : หมายถึง กำหนดสำหรับชื่อของ Robot ที่ต้องการ ในตัวอย่างแสดงให้เห็นถึงการกำหนดถึง Googlebot
Disallow: หมายถึง ไม่อนุญาติให้เขาถึง ในที่นี้ /logs/ ไม่อนุุญาติให้ Google bot เข้าไปอ่าน และกลับไปสร้าง Index

สรุป 

หากพบ Robot.txt ในเครื่องของเราไม่ต้องตกใจนะครับ บางที่ Application ที่เราใช้ อาจสร้าง Robot.txt ให้เราอัตโนมัติครับ แต่หากเรามีข้อมูลที่ไม่ต้องการให้ Search Engine เข้ามาทำ Index หรือ ไม่ต้องการเปิดเผยข้อมูลให้กับคนอื่น ๆ ทราบ หรือ Search ไม่เจอนั้น เราไม่ควรนำข้อมูลไปเก็บไว้บน Web Server แต่หากหลีกเลี่ยงไม่ได้ ก็ยังพอมีอีกวิธีหนึ่ง นั้นคือ การสร้าง robot.txt ขึ้นมาและกำหนดชั้นของความปลอดภัย การเข้าถึง Folder ต่างๆ แต่ก็คงได้แต่ Robot ที่มีจริยธรรมเท่านั้น ๆ เอ๊ะ เจ้า Bot ที่ไม่มีมาตรฐาน มีด้วยเหรอ .. มีครับ เช่น bot ที่พวกเรา ๆ ท่าน ๆ เขียน หรือพวก Hacker ไงครับ Bot พวกนี้สามารถหา Download ได้ตามเว็บไซต์ทั่วไปครับ ซึ่งโดยส่วนใหญ่ถูกพัฒนาจากภาษา C หรือ Java กัน โดยให้ทั้ง Source Code ด้วย หากใครมีกำลังพอตัว ก็สามารถดัดแปลง หรือเพิ่มความสามารถ หรือสั่งให้ทำงานอื่น ๆ เพิ่มเติมจากหน้าที่ของมันได้ครับ
ยิ่ง bot ที่ถูกดัดแปลง เพิ่มศักยภาพในด้านไม่ดีเข้าไป  Bot พวกนี้ไม่สนอยู่แล้ว Folder ไหน  / อะไรก็ไม่สน จะเข้าไปดูให้หมด .. ดูไม่ดูเปล่า หากมีใครไปแก้ Code ให้ Bot พวกนี้หาช่องโหว่ได้ โจมตีได้ หรือแม้กระทั่งมาเก็่บ เอาอะไรกลับออกไป  ……  เพราะฉะนั้น Web Administrator ควรให้ความสนใจด้าน Security ด้วยนะครับ

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

Reference :

มาตรฐานของ Robot : http://www.robotstxt.org/orig.html
googleblog.blogspot.com : http://googleblog.blogspot.com/2007/01/controlling-how-search-engines-access.html

01-10-2007

Information Extraction (IE)

Filed under: Information Extraction — ejeepss @ 15:08:50

Information Extraction

หมายถึงกระบวนการในการสกัดสารสนเทศ ออกจากเอกสารที่เราสนใจ ตัวอย่างเช่น หากเราอ่านหนังสือพิมพ์ 1 เล่ม เราคงเลือกอ่านเฉพาะคอลัมน์ที่สนใจ และในคอลัมน์ที่เราสนใจนั้น อาจยาวมาก ซึ่งหลายท่านอาจจะอ่านเฉพาะย่อหน้า หรือจุดที่สนใจเท่านั้น ดังนั้น หากเราจะทำอย่างไรให้คอมพิวเตอร์เข้าใจและสกัดเฉพาะสารสนเทศ ที่เราสนใจ เราอาจต้องใช้เทคนิค หรือ Algorithm ที่จะทำให้คอมพิวเตอร์เข้าใจเนื้อหาข้อเอกสารข้อความ และสกัดเอาสิ่งที่เราสนใจออกมา

ในงานด้าน Search Engine นั้น ถามว่าได้่ใช้หลักการ Information Extraction หรือไม่? คำตอบคือจำเป็นต้องใช้เป็นอย่ากมาก ตัวอย่างเช่น Google ใช้ Google Bot (โปรแกรมไต่ตาม Link Webpage เพื่อเก็บข้อมูลใน Index Server เพื่อให้ผู้ใช้มาค้นได้อย่างรวดเร็ว) นั้น ยิ่งใช้หลักการของ Information Extraction เป็นอย่างมาก เนื่องจากเมื่อ Google Bot มาไต่ไปยังเว็บเป้าหมาย ก็จะเก็บเอกสาร HTML ทั้งหมด ไปเพื่อวิเคราะห์ว่า ในหน้า Webpage นี้ มี Title Body <H1> มีคำว่าอะไร และแต่ละคำนั้น เกี่ยวข้องกับเรื่องใดบ้าง เพื่อจะจัดเก็บใน Index Server ได้ถูกต้องว่า Webpage นี้เกี่ยวกับอะไร เช่น Webpage นี้เกี่ยวกับ กีฬา เกี่ยวกับ คอมพิวเตอร์ และด้านไหน เพื่อให้ผลลัพท์ของการค้น ตรงใจผู้ใช้ที่ต้องการค้นหามากที่สุด

หลักการของ IE นั้น ก็เพื่อสกัดสารสนเทศ หรือข้อมูลที่เราสนใจ ออกจากเอกสารประเภทตัวอักษร ทั้งในเอกสารที่มีรูปแบบมีโครงสร้างบางส่วน (Semi-structure) และเอกสารที่ไม่มีโครงสร้าง (Unstructured) ซึ่งโดยทำการแปลงเอกสารที่ได้กล่าวมาแล้ว จากเอกสารขนาดใหญ่ที่เป็นเอกสารสำหรับเรียนรู้ (Corpus) ตัวอย่างงานด้านต่าง ๆ ที่นำ IE ไปใช้ดังนี้

  • Newspaper articles การหาสารสนเทศที่สนใจ จากหนังสือพิมพ์โดยอัตโนมัติ
  • Web pages หาข้อมูลที่สนใจจาก WebPage ตัวอย่างเช่น Google Bot เป็นต้น
  • Newsgroup messages จากสารสนเทศจากข้อความในกลุ่ม เช่น สกัดหาข้อมูลจาก Mail เพื่อหาข้อมูลที่สนใจ
  • Classified ads หาเฉพาะสารสนเทศโฆษณาที่สนใจจากโฆษณาทั้งหมด

ตัวอย่างเช่น CIA และ NSA ใช้ IE ในการสกัดหาแนวโน้ม หรือการส่งสัญญาณ จากตัวอักษรผ่านทางหนังสือพิมพ์ทุกฉบับ เว็บไซต์ที่ต้องสงสัย หรือเอกสารอื่น ๆ เพื่อหาแนวโน้มการโจมตีจากจากผู้ก่อการร้าย เป็นต้น

amazon.jpg
อีกตัวอย่างที่สนใจ เช่น Website Amazon หากเราต้องการเก็บข้อมูลหนังสือต่าง ๆ โดยเราสามารถใช้ Amazon เป็นฐานข้อมูลก็ย่อมทำได้ เนื่องจาก Amazon นั้น มีการจัดเรียง และจัดเก็บข้อมูลเป็นหมวดหมู่ เราเพียงสร้าง Bot ที่มีความสามารถในการเรียกเก็บข้อมูลไปเรื่อย ๆ และเราก็นำเอาเอกสาร Html มาสกัดหา สารสนเทศที่เราสนใจ ได้ เช่น หากเราต้องการเก็บหนังสือเกีี่่ยวกับ ธุรกิจ เราก็อาจใช้คำค้น โดยดึงเอาเฉพาะ Title ชื่อผู้แต่ง บทนำ มาเก็บไว้ในฐานข้อมูลเรา ซึ่งวิธี IE นี้จะสกัดสารสนเทศที่ต้องการออกมา จะเหมาะกับการ Mining สารสนเทศที่เราสนใจ ตัวอย่างเช่น เราต้องการค้นหาหนังสือที่เป็นหนังสืออ่านสบาย ๆ ที่มีบรรยากาศชนบท จากหนังสือใน Amazon โดยวิธีการคือ เขียน Bot ไปไล่เก็บ HTML จาก Amazon ต่างๆ โดยสกัดเอาคำเกี่ยวกับ ชนบท เช่น คำว่า ไ่ร่นา ทุ่งขาว บรรยากาศดี อากาศสบาย เป็นต้น เพื่อสกัดเอาคำที่สนใจและเอาเอกสารมา Mining ประเภท Classification เช่น Naive Bayes Rocchio kNN เป็นต้น เพื่อจะบอกได้ว่าเอกสารใดบ้างมีเกี่ยวข้องกับสิ่งที่เราค้นหา

amazon_html.jpg

ตัวอย่างเอกสาร HTML หนังสือจาก Amazon

amazon_html1.jpg
เมื่อ Extraction จะได้สารสนเทศที่สนใจ

การ Extraction เอกสาร HTML นั้น อาจเรียอีกอย่างหนึ่งได้ว่า Web Extraction ซึ่งส่วนใหญ่จะเป็นการสกัดสารสนเทศจากเอกสาร HTML (Semi-structured) หรืออาจเรียกได้ว่า wrapper หรือ screen scraping Website ที่จะถูกสกัดสารสนเทศได้นั้น จะต้องมี Template เช่น Amazon หรือ HTML ที่มี Template ที่ชัีดเจนเท่านั้น เทคนิคนั้นจะใช้ Pattern ในการสกัดเอกสารเช่น

Amazon list price:
Pre-filler pattern: “<b>List Price:</b> <span class=listprice>”
Filler pattern: “\$\d+(\.\d{2})?\b”

แต่ปัญหาที่มักจะเกิดขึ้นนั้นคือ ภาษาของเอกสารนั้น ๆ หากเป็นภาษา English จะมีข้อดีคือ คำแต่ละคำจะถูกแบ่งด้วยช่องว่าง (Space) แต่สำหรับภาษาไทยนั้น เป็นเรื่องยาก เนื่องจากเป็นภาษาที่เขียนติด ๆ กันจึงทำให้ต้องใช้หลักการ NLP (Natural Language Processing) เข้ามาช่วย ตัวอย่างเช่นคำว่า ตากลม (ตา-กลม) กับ ตากลม (ตาก-ลม) นั้น เป็นเรื่องยากที่จะให้คอมพิวเตอร์เข้าใจ จึงต้องใชหลักการทาง NLP เข้ามาช่วย อาจใช้ n-Grams หรือการดูคำใกล้เคียงจาก Curpus หรือใช้เทคนิค Dictionary ฯลฯ เพื่อให้สามารถสกัดเป็นคำภาษาไทยได้อย่างถูกต้องและถูกความหมาย

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

Reference : info_extraction.pdf

27-06-2007

Ask.com Search Engine นอกสายตา!

Filed under: ask.com เว็บนอกสายตา! — ejeepss @ 15:59:22

ask_0.jpg
ASK.com ¿ เป็นบริการ Search Engine หนึ่งที่ได้รับความนิยมในต่างประเทศ เนื่องจากตั้งชื่อ Web ได้ค่อนข้างสื่อความหมายเป็นอยางมาก เพราะอยากรู้อะไรนะเหรอ ถามเว็บไซต์ ASK (เหมือนถามคำถามยังเว็บบราวเซอร์ อย่างไรอย่างนั้น) ซึ่งหากนับตำแหน่งในตลาด Search Engine นั้น ถูกจัดอยู่ในอันดับที่ 4 เป็นรอง จาก Google Yahoo และ MSN Search เท่านั้น เราลองมาเปิดใจดูหน่อย ว่า Search Engine ที่ชื่อ ASK.com มีดีอะไร และมีข้อแตกต่างอย่างไรเมื่อเทียบกับ Search Engine อัีนดับหนึ่งอย่าง Google ไม่แน่ คีย์เวริ์ด บางคำที่เราค้นหา อาจค้นหาไม่พบหรือไม่ตรงใจจากการ Search จาก Google แต่อาจพบใน ASK.com ก็เป็นไปได้ ….

1. ความสามารถของ ASK
www.ask.com เป็น Search Engine ที่มีความสามารถในการค้นหาคำในลักษณะคำถามคำตอบได้ ASK อยู่ในส่วนแบ่งของตลาด Search Engine ประมาณ 2 % อยู่ในอันดับ 5 มีความสามารถคัดกรองประเ฿ทของการค้นหาได้ ไม่ว่าจะเป็นการค้นหาแผนที่ รูป฿าพ ดิกชันนารี พยากรณ์อากาศ หรือไฟล์เอกสารต่างๆ ที่เก็บไว้ในคอมพิวเตอร์ของผู้คนหา ซึ่งสามารถค้นหาคำเป็นประโยคคำถามโดยใช้หลักการ Neural Language เป็นลักษณะถามตอบ
ASK ใช้โปรแกรมอัตโนมัติ (Robot, Web crawler, Spider) ในการค้นหาและรวบรวมข้อมูลของเว็บไซต์ต่าง ซึ่ง Robot จะเป็นตัวที่ทำหน้าที่เข้าสำรวจเว็บไซต์ต่าง ๆ แล้วดึงข้อมูลเหล่านั้นมาอัพเดทใส่ในรายการฐานข้อมูล ส่วนมาก Robot มักจะเข้าไปอัพเดทข้อมูล ซึ่งจะเหมาะสำหรับการค้นหาข้อมูลแบบจำเพาะเจาะจง ซึ่งจะทำการ Download Page แรกจาก Web Site ต่างๆ อัตโนมัติตลอดเวลา หลังจากได้ Page แรกแล้ว จะทำการ Load Page ต่อๆ ไป ช่วงนี้จะ Delay เวลาออกไปประมาณ 0.1 วินาที ภายใน 1 ชั่วโมง และทำ Index เพื่อใช้ในการ Search หาข้อมูล โดยใช้ Full-Text ซึ่งดึงคำทุกคำในหน้าเอกสารมาทำ Index และนำหลักการของ Natural Language Processing (NLP) มาใช้ เพื่อให้ค้นหาได้โดยเป็นลักษณะคำถามคำตอบ

2. เทคโนโลยีที่ใช้ใน ASK
ASK ใช้ Algorithm Teoma (เทโอมา) เพื่อดูการ Click ที่มีค่า Popularity สูง ซึ่งเทคนิคการดูค่า Popularity นี้เป็นลิขสิทธิ์ของ ASK แต่เพียงผู้เดียว Teoma ถูกนำมาใช้ใน Search Engine เมื่อปี ค.ศ. 2000 โดย Rutger University ซึ่งถูก Publish Paper ครั้งแรกชื่อ DiscoWeb: Applying Link Analysis to Web Search ซึ่ง Teoma ที่นำมาใช้ใน ASK เป็นเทคนิคที่นำอัลกรอริทึมมาใช้เพื่อดู Popularity ของ Link เพื่อวิเคราะห์ link จากการจัดลำดับเอกสารของแต่ละ Topic
ต่อมา ASK ได้ยกเลิกการใช้ Algorithm Teoma ที่ใช้ใน Search Engine เมื่อปี ค.ศ.2000 โดยทำการ Rebrand ใหม่ หลังจากยกเลิก Teoma แล้ว จึงได้นำ Algorithm ExpertRank มาใช้โดยดูจากความสัมพันธ์หรือความใกล้เคียงของคำที่ต้องการค้นหา เทคโนโลยีการค้นหาของ ASK ไม่ได้ใช้เพียง Link Popularity อย่างเดียว ยังใช้ผู้เชี่ยวชาญในแต่ละหัวข้อกเพื่อตัดสินว่า Page ในมีผู้ให้ความสนใจมาก เรียกอีกอย่างคือ Subject-specific Popularity
Expert Rank เป็น Algorithm ที่ใช้จัดอันดับ จะแสดงผลลัพธ์โดยการเรียงลำดับ ซึ่งเหมือนกับการดูค่า Popularity ของ Link หรือค่า Popularity ของหัวข้อต่าง ๆ ที่มีผู้เลือกใช้จำนวนมาก ส่วนการจัดลำดับของหัวข้อจะใช้ผู้เชี่ยวชาญของหัวข้อนั้นๆ หรือที่ใช้ข้อมูลนั้น โดยการให้เรียงลำดับ Website ที่ Search ได้
โดย Algorithm ExpertRank มี Step การทำงาน 4 ข้อ ดังนี้
1.ทำการ Search หาข้อมูล โดย Query หาข้อมูลจาก Index และหาคำที่มีความสัมพันธ์กันหรือคำที่มีความใกล้เขียงกันในการค้นหา
2.ใช้เทคนิค Clustering มาวิเคราะห์หา Web ที่เกี่ยวกับ Topic ที่ต้องการค้นหา ได้นำหลักการ Text Classification คือใช้ Natural Language Processing ในการตัดคำ เพื่อนำคำไปค้นหา Web Site ที่เกี่ยวข้อง
3.จัดผลลัพธ์ที่ได้จากการ Search เป็นกลุ่ม(Clustering) เพื่อระบุว่า Web Site ไหนมีเนื้อหาหรือหัวข้อตรงตามที่ Search โดยทำการระบุว่า Website ไหนเป็น Web ที่แนะนำ และ Web ไหนเป็น Spam Link ที่ต้องทำการลบออกจากฐานข้อมูล และทำการจัดอันดับของผลลัพธ์ที่ได้โดยดูจากคะแนน
4.จัดลำดับจากผลลัพธ์ที่ได้มาโดยดูจากคะแนน โดยทำการ Weight คะแนนที่ได้จากหลายๆ หัวข้อ หรือหลายๆ กลุ่ม และทำการจัดหมวดหมู่โดยการวิเคราะห์จากผู้ใช้ที่ให้ลำดับไว้

3. ความแตกต่างระหว่าง ASK กับ Google
3.1 Algorithm ที่ใช้ใน ASK ไม่เหมือนกับ Algorithm PageRank ของ Google ซึ่งหลักการPageRank นั้น Search Engine ส่วนมากจะจัดอันดับ Ranking เว็บไซต์ โดยดูว่ามีเว็บไซต์ที่ลิงค์มายัง เว็บไซต์นั้นเท่าไร สิ่งนี้เรียกว่า Incoming ลิงค์ โดยเฉพาะ Google นั้นจะพิจารณา Link Popularity เป็นปัจจัยสำคัญในขั้นตอนการจัดอันดับ Search Engine บางตัวจัดอันดับโดยดูว่าเว็บไซต์นั้นลิงค์ ไปยังที่อื่น Outgoing ลิงค์เท่าไร แต่ลิงค์เหล่านั้นต้องลิงค์ไปยังเว็บไซต์ที่จัดว่าอยู่ในประเภทเดียวกันเท่านั้น การแลกเปลี่ยนลิงค์ระหว่างเว็บไซต์ที่อยู่ในประเ฿ทเดียวกันนั้นจะเป็นประโยชน์อย่างมากต่อทั้ง 2 ฝ่าย ดังนั้นจึงมีความนิยมอย่างมากในการแลกเปลี่ยนลิงค์ประเภทนี้
3.2 Google ไม่ได้นำเทคนิค Natural Language Processing มาใช้ในการค้นหา จึงทำให้เสียเปรียบ ASK เนื่องจากถ้าผู้ค้นหา ใส่คำที่ต้องการค้นผิด ASK จะทำการหาคำใกล้เคียงที่มีค่า Popularity มากที่สุดมาแสดง แต่ถ้าเป็น Google เมื่อใส่คำผิด จะไม่แสดงผลลัพธ์ใดๆ จากการค้นหา เนื่องจากหาคำเหล่านั้นไม่เจอ จึงเป็นข้อเสียของ Google
3.3 Ask สามารถแสดงหน้า Web Page ที่ทำการค้นหาได้ก่อน โดยไม่ต้องคลิก Link เข้าไป ทำให้ผู้ใช้สามารถเห็นหน้า Web ได้ก่อน เพื่อเป็นการช่วยตัดสินใจว่า Link นี้น่าสนใจหรือไหม

ask_1.jpg
฿าพที่ 1 แสดงหน้าจอหลักของ Search Engine ASK

ask_2.jpg
฿าพที่ 2 แสดงหน้าจอผลลัพธ์จากการค้นหาเป็นคำถามคำตอบ

ask_3.jpg
฿าพที่ 3 แสดงหน้าจอผลลัพธ์จากการค้นหาเป็นคำค้นเฉพาะ

ask_4.jpg
ภาพที่ 4 แสดงหน้าจอผลลัพธ์จากการค้นหาที่สามารถแสดง Page ที่ Link ไป

4. Reference
[1] Available to http://www.ask.com
[2] Available to http://www.crs4.it/ict/dart06/slides/savona.pdf
[3] Available to http://en.wikipedia.org/wiki/Ask.com
[4] Available to http://googlesystem.blogspot.com/2006/03/expertrank-authoritative-search.html

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

20-06-2007

สร้าง Search Engine กัน

Filed under: มาสร้าง Search Engine กัน — ejeepss @ 13:46:51

Search Engine

ir_0.jpg

หลายท่านคงเคยได้ยิน และได้ใช้กันอยู่เป็นประจำในการค้นหาข้อมูลผ่านอินเทอร์เน็ต โดยหลายท่านรู้จัก Google , Yahoo หรือ Ask.com เป็นต้น แต่มันทำงานอย่างไร ทำไม Search Engine ถึงได้ค้นหาตรงใจ ค้นปุ๊ป เจอปั๊ป เพื่อเป็นการเข้าใจหลักการทำงานของ Search Engine เลยจำเป็นต้องพัฒนาขึ้นมาเอง เพื่อให้เข้าใจทุกขั้นตอน และ Pan & James Search (เหตุผลที่เลือก ชื่อ Search Enging นี้ เพราะช่วงนั้น คุณปัง กับคุณเจมส์ กำลัง Hot ครับ) ที่ผมและกลุ่ม ได้พัฒนาขึ้นมาเพื่อเป็น Project ขอบวิชา Information Retrival (IR) ตอนที่ได้ศึกษาอยู่ครับ …

ขั้นตอนการทำงาน มีลักษณะการทำงานเหมือน Modern Search Engine ทั่วไปครับ .. แต่จะมีส่วนที่ใช้เทคนิค n-Gram เข้ามาช่วยเสริมเพื่อพยายามเดาคีย์เวิร์ด (Keywork หรือ Query) ของผู้ใช้ ดังนี้

1. บทนำ
ปัจจุบันการใช้อินเทอร์เน็ตเข้ามามีบทบาทในชีวิตประจำวัน เพื่อใช้เป็นช่องทางสื่อสารและแพร่กระจายข่าวสารของหน่วยงาน บริษัท สถานศึกษาต่าง ๆ ดังนั้นอินเทอร์เน็ตจึงเป็นแหล่งรวมของข้อมูลข่าวสารต่าง ๆ เมื่อความนิยมการใช้งานอินเทอร์เน็ตเป็นไปอย่างแพร่หลาย ทำให้ปริมาณข้อมูลมีมากขึ้น การสืบค้นข้อมูลต่าง ๆ จึงเป็นไปได้ยากลำบาก จึงมีบริการสืบค้นข้อมูล (Search Engine) มาใช้มากยิ่งขึ้น ซึ่งตัวอย่างการสืบค้นข้อมูลของเว็บไซต์ ตัวอย่างเช่น Google ,Yahoo และ Ask เป็นต้น
รายงานฉบับนี้ได้พัฒนา Search Engine ขึ้นมา มีชื่อว่า Pan & James Search โดยมีโครงสร้างหลัก ๆ ของการสืบค้นข้อมูลทางเว็บไซต์ทั่ว ๆ ไป คือ มีโปรแกรม Crawler ทําหน้าที่อ่านเวบเพจ จากเว็บไซต์ต่าง ๆโดยอัตโนมัติ ซึ่งสามารถกำหนดความลึก (Dept) ของเพจนั้น ๆ ได้ จากนั้นจึงนําเว็บเพจที่อ่านได้มาทําดัชนี (Index) ซึ่งจะตรวจสอบลิงค์ในแต่ละหน้าของเวบเพจเพื่อเข้าไปทําดัชนีของเวบเพจนั้นต่อไปอีก ในส่วนที่รับค่า Query จากผู้ใช้งานนั้น ได้นำ N-Gram มาใช้ในการตัดคำที่รับค่ามาจากผู้ใช้ เพื่อเสนอแนะ (Suggestion) คำที่ถูกต้องในกรณีที่ผู้ใช้งานพิมพ์คำที่สะกดผิด หรือคีย์ผิดเข้ามา โดยนำ N-Gram มาทำการตัดคำ และนำคำมาหาค่าความคล้ายคลึงกับคำต่าง ๆ ที่อยู่ในพจนานุกรม (Dictionary) และนำคำที่ได้ไปค้นหาเพื่อให้ได้ผลลัพท์ที่ใกล้เคียงกับความต้องการของผู้ใช้มากที่สุด
ส่วนของการประมวลผลข้อความ (Text processing) ได้ใช้กระบวนการตัดคำ (Word Segmentation) ฿าษาไทยโดยใช้พจนานุกรม (Dictionary Approach) ซึ่งเป็นการแบ่งตัวอักษรจากข้อความ (String) เพื่อหาขอบเขตของแต่ละหน่วยคำ(Morpheme) โดยอ่านตัวอักษรทีละอักขระ แล้วนำไปเทียบกับพจนานุกรม และในส่วนของการสร้างดัชนีคำ (Index) ได้มีกลไกการทํางานแบบสร้างดัชนีคําทั้งในภาษาไทยและภาษาอังกฤษตามหลักการแบบ ดัชนีผกผัน (Inverted Index) และจับเก็บคําโดยใช้วิธีแฮชชิง (Hashing) รูปแบบของดัชนีผกผันช่วยให้สามารถค้นหาคําได้อย่างรวดเร็ว เพราะไม่มีกระบวนการค้นหาคําจากข้อมูลต้นฉบับใด ๆ หากมีแต่เพียงการสืบค้นจากตารางเก็บดัชนีเท่านั้น
ส่วนของการสืบค้นข้อมูล (Searching) เป็นส่วนที่นำคําที่ต้องการค้นหาจากผู้ใช้ผ่านทาง User Interface มาค้นหาในฐานข้อมูล และส่งผลการค้นหากลับไปแสดงบนหน้าจอ ซึ่ง Model ที่นำมาใช้ คือ Vector Space Model (VSM) ซึ่งการค้นคืนจะได้เอกสารที่มีแม้แต่ความเหมือนแค่เพียงบางส่วน โดยที่ไม่ต้องเป็นคำที่ตรงกันทั้งหมด โดยดูจากค่าความคล้ายคลึง (Similarity) ของเอกสารกับคำค้น และเอกสารที่ค้นคืนได้สามารถนำไปจัดอันดับ (Ranking) ได้

2. ทฤษฎีที่เกี่ยวข้อง
2.1 Search Engine
เป็นการค้นหาข้อมูลที่ใช้โปรแกรมช่วยในการค้นหาข้อมูลจากอินเทอร์เน็ต โปรแกรมจะรวบรวมข้อมูลเกี่ยวกับเว็บไซต์บนเครือข่ายอินเทอร์เน็ตโดยอัตโนมัติแล้วส่งข้อมูลที่ได้กลับมา ผลลัพธ์ที่ได้จะครอบคลุมทุกเว็บไซต์ ตัวอย่างเว็บไซต์ ที่เป็น Search Engine เช่น www.google.com www.lycos.com www.yahoo.com www.ask.com เป็นต้น ซึ่งมีสถาปัตยกรรมดังภาพที่ 1

ir_1.jpg

฿าพที่ 1 สถาปัตยกรรมของ Search Engine

2.2 Web Crawler
เป็นโปรแกรมล็ก ๆ ที่ถูกส่งมาจาก Search Engine โดยจะคอยวิ่งไต่ไปตามลิงค์ต่าง ๆ ของเว็บไซต์ต่าง ๆ เพื่อทำการเก็บข้อมูลของหน้าเพจ โดยการะทำการคัดลอกเนื้อหาของหน้าเพจนั้น ๆ ทั้งหมด แล้วจึงส่งกลับไปยัง Server ของตนเอง เพื่อทำการจัดเก็บข้อมูลลงสู่ฐานข้อมูลเพื่อไว้สำหรับประมวลผลการค้นหา

2.4 N-Gram
N-Gram คือ แบบจำลองที่ใช้คำนวณค่าความน่าจะเป็นของชุดอักขระ (Character Sequence) ที่เกิดขึ้นร่วมกันเป็นคำ หรือค่าความน่าจะเป็นของคำที่เขียนเรียงกัน (Word Sequence) ที่เกิดขึ้นร่วมกันเป็นประโยค โดยค่าความน่าจะเป็นของชุดอักขระหรือคำ ประมาณได้จากคลังข้อมูลที่สร้างไว้ ซึ่ง N-Gram ได้ใช้หลักการของสถิติในหลาย ๆ ด้านมาประยุกต์ใช้ [1]
Gram คือ หน่วยที่ใช้ในการสร้างแบบจำลอง อาจจะเป็นเสียง คำ หรือ อักขระก็ได้ Gram มีได้หลายขนาดแล้วแต่จะกำหนด ตั้งแต่ 1 จนถึง nในแบบจำลองเอ็นGram นี้ใช้ความยาวของสายอักขระและสายคำแตกต่างกัน ได้แก่ 2- 3-Gram 4-Gram ฯลฯ ถ้าจะประมาณค่าความน่าจะเป็นของสายคำหรือสายอักขระจากคลังข้อมูลโดยการใช้วิธี N-Gram ผลที่ได้มีดังนี้
การประมาณค่าด้วย 2-Gram (Probability bigram) คือ การประมาณค่าความน่าจะเป็นของสายอักขระ (สายคำ) ที่เกิดขึ้นร่วมกันว่ามีค่าเท่ากับผลคูณของความน่าจะเป็นที่จะพบอักขระ(คำ) ทีละ 2 ตัว (คำ) ติดกันในสายอักขระ (สายคำ) นั้น
การประมาณค่าด้วย 3-Gram (Probability trigram) คือ การประมาณค่าความน่าจะเป็นของสายอักขระ (สายคำ) ที่เกิดขึ้นร่วมกันว่ามีค่าเท่ากับผลคูณของความน่าจะเป็นที่จะพบอักขระ (คำ) ทีละ 3 ตัว (คำ) ติดกันในสายอักขระ (สายคำ) นั้น
วิธีการใช้แบบจำลอง N-Gram นี้เป็นวิธีทางสถิติที่นิยมใช้กันมากที่สุด เพราะเป็นวิธีที่เรียบง่าย มีประสิทธิภาพสูง และเหมาะสำหรับวิเคราะห์฿าษา สามารถใช้ระบุภาษาได้ดีกว่าวิธีอื่นๆ โดยเมื่อดูจากทบทวนวรรณกรรมต่อไปจะแสดงให้เห็นประสิทธิ฿าพของแบบจำลอง N-Gram วิธีการใช้ N-Gram ในงานระบุภาษาและผลการทดลอง

3. กระบวนการของ Pan & James Search
รายงานฉบับนี้ได้จัดทำ Search Engine ชื่อว่า Pan & James Search โดย Search Engine มีกระบวนการดังภาพที่ 2 โดยแบ่งกระบวนการเป็น 6 ขั้นตอน ดังนี้

ir_2.jpg
฿าพที่ 2 สถาปัตยกรรมของ Search Engine : Pan & James Search

3.1 Crawler
ในรายงานฉบับนี้ได้สร้าง Web Crawler ตัวหนึ่ง ชื่อว่า James Bot โดยจะไต่ไปตามเว็บเพจต่าง ๆ เพื่อรวบรวมข้อมูลจากเว็บเพจต่าง ๆ โดยสามารถกำหนดความลึก (Dept) ในการไต่ไปตามลำดับของลิงค์ต่าง ๆ โดยทำการคัดลอกไฟล์เอกสารของเว็บเพจต่าง ๆ กลับมายัง Server ของตนเอง โดยสามารถเลือกประเภทไฟล์ของเอกสารบนเว็บไซต์ได้ เช่น ไฟล์เอกสาร HTML, PDF , PPT และ Doc เป็นต้น ซึ่งมีสถาปัตยกรรม ดังภาพที่ 3

ir_31.jpg
฿าพที่ 3 สถาปัตยกรรมของ James Bot

3.2 User Interface
ในส่วนของ User Interface มีหน้าที่ในการรับ Query จากผู้ใช้ โดยผู้ใช้สามารถป้อนคำที่ต้องการค้นหา เพื่อนำ Query ไปสู่กระบวนการค้นหาต่อไป และยังเป็นส่วนที่แสดงผลลัพธ์จากการค้นคืนให้กับผู้ใช้ ซึ่งในขั้นตอนการรับค่าจากผู้ใช้ ได้นำการตัดคำ ซึ่งอยู่ในส่วนประมวลผลข้อความ โดยใช้ N-Gram มาตัดคำ เพื่อตรวจสอบคำที่ผู้ใช้ป้อนเข้ามาว่าเป็นคำที่ถูกต้องหรือไม่ ซึ่งเป็นการเดา (Suggestion) คำที่คาดว่าน่าจะเป็น ที่ผู้ใช้อาจป้อนเข้ามาผิด ดังภาพที่ 4โดยมีกระบวนการ ดังนี้
1. รับค่า Query ที่ได้จากผู้ใช้
2. นำ N-Gram มาตัดคำของค่า Query ที่รับจากผู้ใช้ โดยใช้ 4 N-Gram ในการตัดคำ ตัวอย่างเช่น รับค่า Query คือ ท่องเที่ย เมื่อทำการตัดคำโดยใช้ N-Gram แล้ว จะได้ผลลัพธ์ดังนี้
_ท่อง ท่องเ องเที่ งเที่ย เที่ย_ ที่ย_ _ ย_ _ _
3. แล้วจึงนำคำที่ถูกตัดมาแล้ว มาเทียบคำกับพจนานุกรม (Dictionary) จากนั้นจึงให้น้ำหนักกับคำที่ตัดได้
4. เมื่อคำต่าง ๆ ผ่านกระบวนการให้น้ำหนักแล้ว จะดูคำที่มีค่าน้ำหนักสูงสุด จึงจะนำคำนั้น ๆ ไปทำการค้นหา แทนคำที่คีย์เข้ามาผิด

ir_4.jpg

฿าพที่ 4 กระบวนการตรวจสอบการรับค่าจาก User Interface โดยใช้ N-Gram

3.3 Text Processing
การประมวลผลข้อความ (Text processing) บนพื้นฐานของระบบการค้นคืนสารสนเทศ (Information Retrieval) สิ่งที่เป็นพื้นฐานที่จำเป็นอย่างยิ่งคือ “หน่วยคำ” ดังนั้นการหาขอบเขตของแต่ละคำจึงเป็นสิ่งแรกที่ต้องคำนึงถึง เพราะหากเลือกการหาขอบเขตคำไม่เหมาะสม อาจนำมาสู่ ระบบการประมวลผลข้อความที่ไม่ถูกต้อง ซึ่งในรายงานฉบับนี้ได้แบ่งส่วนการประมวลผลข้อความนี้ เป็น 2 ส่วน ดังนี้
3.3.1 ส่วนประมวลผลข้อความสำหรับนำไปสร้างดัชนีคำ (Index Terms) ซึ่งในรายงานฉบับนี้ได้ใช้ Full Text Search ในการสร้าง Index ดังภาพที่ 5

ir_5.jpg

ภาพที่ 5 กระบวนการประมวลผลข้อความเพื่อนำคำไปสร้าง Index

ซึ่งโครงสร้างของการประมวลผลข้อความมีดังนี้

3.3.1.1 จากภาพที่ 5 เมื่อ Crawler ไต่ไปตามเว็บต่าง ๆ แล้ว จะได้เอกสารบนเว็บ (Html) เอกสารจะมีรูปแบบที่เป็นไร้โครงสร้าง จึงเริ่มด้วยการตัดช่องว่าง (Space) สำหรับภาษาอังกฤษ ส่วนภาษาไทยจะใช้กระบวนการตัดคำ (Word Segmentation) ซึ่งเป็นการแบ่งตัวอักษรจากข้อความ (String) เพื่อหาขอบเขตของแต่ละหน่วยคำ(Morpheme) เนื่องจากส่วนใหญ่฿าษาไทยมีการเขียนในลักษณะที่ติดกันโดยไม่มีการใช้เครื่องหมายวรรคตอนคั่นระหว่างคำเหมือนภาษาอังกฤษ ซึ่งใช้ช่องว่าง (Space) คั่นระหว่างคำ แต่ภาษาไทยจะมีการเว้นวรรคเป็นระยะเพื่อให้ผู้อ่านทำความเข้าใจกับความหมายของคำ ในรายงานฉบับนี้ใช้การตัดคำส่วนภาษาไทย โดยอ่านตัวอักษรทีละอักขระ แล้วนำไปเทียบกับพจนานุกรมที่ชื่อว่า Lexitron จึงจะทำการตัดคำตามพจนานุกรม จะได้คำตามพจนานุกรมทั้งเอกสาร

ir_6.jpg

฿าพที่ 6 แสดงการตัดคำเพื่อนำไปสร้าง Index

3.3.1.2 เมื่อทำการตัดคำแล้ว ขั้นตอนต่อไปจะทำการตัดคำหยุด (Stopword) ซึ่งเป็นคำที่ไม่จำเป็น หรือคำที่ใช้บ่อย ๆ เช่น “การ” “ความ” “ควร” “ที่” “จะ” “ไป” “ใช้” “ได้” “and” “the” “a” “on” “from” เป็นต้น
3.3.1.3 แปลงคำให้อยู่ในรากศัพท์ (Stemming) โดยทำให้เป็นคำ ๆ เดียว ซึ่งส่วนนี้จะใช้กับ฿าษาอังกฤษ เช่น “run” “ran” “running” จะถูกตัดให้เป็นคำว่า “run” คำเดียว เป็นต้น
3.3.1.4 นำคำที่ได้ทั้งหมด มาเก็บไว้ในฐานข้อมูล เพื่อนำไปทำดัชนีคำ (Index)
3.3.2 ส่วนประมวลผลข้อความสำหรับการรับค่า Query จากผู้ใช้ จาก฿าพที่ 4 ในส่วนของ User Interface ได้นำ N-gram มาประยุกต์ใช้ในการตัดคำ เพื่อเดาคำ (Suggestion) ที่มีการคีย์ผิดพลาดขึ้นมา สำหรับภาษาไทยการหาขอบเขตคำค่อนข้างเป็นปัญหาเนื่องจากลักษณะการเขียนภาษาไทยนั้นไม่มีการใช้ตัวอักษรหรือสัญลักษณ์ที่นำมาใช้คั่นระหว่างคำหรือว่ามีการวรรคระหว่างคำเหมือนภาษาอังกฤษ นั่นคือต้องมีกระบวนการตัดคำ (Word segmentation) ที่เหมาะสมก่อนเป็นอันดับแรก หากจะให้นิยามของการตัดคำ คือ การแบ่งตัวอักษรจากข้อความ (String) เพื่อหาขอบเขตของแต่ละหน่วยคำ (Morpheme) เนื่องจากส่วนใหญ่ภาษาไทยมีการเขียนในลักษณะที่ติดกันโดยไม่มีการใช้เครื่องหมายวรรคตอนคั่นระหว่างคำเหมือนภาษาอังกฤษดังที่กล่าวไปซึ่งใช่ช่องว่าง (Space) คั่นระหว่างคำ แต่ภาษาไทยจะมีการเว้นวรรคเป็นระยะเพื่อให้ผู้อ่านทำความเข้าใจกับความหมายของคำ
การตัดคำโดยใช้ N-Gram โดยทำการนำบางส่วนของข้อความนั้นออกมาเป็นข้อความตามค่า N ซึ่งเรียกวิธีนี้ว่า N-Gram เข้ามาใช้ในการตัดคำแทน และเราจะทำการเพิ่มช่องว่างข้างหน้า และท้ายของข้อความ (ใช้ _ ในการแสดงช่องว่าง) เพื่อเพิ่มโอกาสในการจับคู่ของคำที่อยู่ข้างต้น และท้ายของข้อความ แต่ในภาษาไทยนั้นเราไม่สามารถกำหนดได้ว่า 1 ตัวอักษรคือ 1 Gram เนื่องจากภาษาไทยมีสระและวรรณยุกต์ ดังนั้นคำที่ประกอบไปด้วยสระ และวรรณยุกต์จะถือว่าเป็น 1 Gram เช่น มีข้อความ “สวัสดี” ทำการตัดคำแบบ N-Gram ได้ดังภาพที่ 7

ir_7.jpg

฿าพที่ 7 แสดงการตัดคำแบบ N-Gram

3.4 Indexing
ในขั้นตอนนี้ระบบจะทำการสร้างดัชนีจากเอกสารบนเว็บ โดย Crawler ทำการดูดเอกสารมาจากเว็บต่าง ๆ โดยที่เอกสารต่าง ๆ ต้องผ่านการประมวลผลข้อความ (Text Processing) มาก่อน เพื่อสกัดเอาคำที่สำคัญ ๆ มาไปสร้างดัชนีคำ (Index Term) ซึ่งขั้นตอนการประมวลผลข้อความจะทำการตัดช่องว่าง คำหยุด (Stop Words) และแปลงคำให้เป็นรากศัพท์ (Streaming) เมื่อมีการเปลี่ยนแปลงเอกสารหรือการเพิ่มเอกสาร ระบบจะต้องการสร้างดัชนีใหม่เพื่อให้สอดคล้องกับเอกสารใหม่ โดยได้ใช้เทคนิคดัชนีผกผัน (Incremental Indexing) ซึ่งทำให้ไม่เสียเวลาในการแก้ไขข้อมูลดัชนีใหม่ทั้งหมด ในกรณีที่มีการเปลี่ยนแปลงของเอกสารเพียงเล็กน้อย ซึ่งรายงานนี้ได้ใช้การสร้างดัชนีแบบ Inverted File Index โดยเมื่อทำการประมวลผลข้อความตามที่ได้กล่าวไปข้างต้นแล้ว จากนั้นจึงนำมาเก็บเป็นไฟล์ดัชนีซึ่งมีคำต่าง ๆ พร้อมทั้งจำนวนเอกสารที่คำนั้น ๆ ปรากฎอยู่ และแต่ละคำก็จะมีข้อมูลซึ่งระบุรายการหมายเลขของเอกสารพร้อมทั้งจำนวนค่าที่ปรากฎอยู่ในเอกสารนั้น ดังภาพที่ 8 และเก็บรายละเอียดของเอกสารบนเว็บ เช่น URL เพื่ออ้างถึงที่อยู่ของเว็บเพจนั้นๆ ซึ่งกระบวนการสร้างดัชนีคำมีรายละเอียดดังภาพที่ 9
วิธีการในการจัดทำดัชนีของคำหลักที่พบภายในเอกสาร โดยการกำหนดความสำคัญของคำเมื่อเทียบกับเอกสารทั้งระบบ โดยใช้ค่า TF/IDF (Term Frequency/Inverse Document Frequency) มีสูตร ดังนี้

โดยที่

  • Wij คือค่าน้ำหนักของคำที่ tj ในเอกสาร Di
  • tfij คือความถี่ของคำที่ tj ในเอกสาร Di
  • N คือจำนวนเอกสารทั้งหมด
  • nj คือจำนวนเอกสารที่มีคำที่ tj ปรากฎอยู่อย่างน้อย 1 ครั้ง
  • พารามิเตอร์ nj ในสมการนี้จะหาค่าได้เมื่อระบบได้รู้ทุกเอกสารที่มีในระบบ ในกรณีนี้จะต้องมีฐานข้อมูลของคำไว้ให้ระบบ โดยคำในฐานข้อมูลนี้ได้มีการตัดคำหยุด (Stop Word) ออกไปแล้ว เพื่อกรองคำที่ไม่สื่อถึงความสำคัญของเอกสาร ดังนั้น คำที่มีค่าความสำคัญในขอบเขตที่กำหนดจะถูกเลือกเป็นคำสำคัญ (Significant word) และจะถูกจัดเก็บลงในฐานข้อมูล

    ir_8.jpg

    ir_9.jpg

    ฿าพที่ 8 การสร้างดัชนีแบบ Inverted Index

    ir_10.jpg

    ฿าพที่ 9 ฐานข้อมูลจาก Indexer

    3.5 Searching
    เป็นส่วนที่นำคําที่ต้องการค้นหาจากผู้ใช้ผ่านทาง User Interface มาค้นหาในฐานข้อมูล และส่งผลการค้นหากลับไปแสดงบนหน้าจอ โดยนําคําศัพท์แต่ละคําที่ได้มาเปิดหาในฐานข้อมูลดัชนีคำและนําผลลัพธ์ที่ได้จากการค้นหาของแต่ครั้งมาหาเอกสารที่มีคําศัพท์ครบทุกคํา แล้วจึงแสดงชื่อ URL และคําอธิบายของเว็บเพจนั้น ๆ เพื่อกลับไปแสดงทางหน้าจอของผู้ใช้งาน
    ซึ่ง Model ที่นำมาใช้ คือ Vector Space Model (VSM) โดยการค้นคืนแบบ VSM นั้น จะทำการค้นคืนได้เอกสารที่มีแม้แต่ความเหมือนแค่เพียงบางส่วน โดยที่ไม่ต้องเป็นคำที่ตรงกันทั้งหมด ซึ่งค่าความเหมือนระหว่างเอกสารกับคำค้น โดยคุณสมบัติของ Vector ทำให้สามารถคำนวณค่าความคล้ายคลึง (Similarity) จากการคำนวณด้วยค่าของมุม Cosine ซึ่งพิจารณาจากความถี่ของคำ และเอกสารที่ค้นคืนได้สามารถนำไปจัดอันดับ (Ranking) ได้ โดยมีสูตรคำนวณหาค่า Similarity ดังนี้

    โดยเริ่มจากการให้น้ำหนักของคำที่ใช้กันอย่างมากในการสืบค้นข้อมูลคือ tf x idf (Term Frequency x Inverse Document Frequency) โดยค่า idf คำนวณจากค่า log(N/df) ซึ่ง N คือจำนวนเอกสารในชุดเอกสารทั้งหมด และ df คือ จำนวนเอกสารที่มีคำ ๆ นั้นปรากฎอยู่ โดยที่ค่า tf คือ ความถี่ของคำ k จากสูตรหาค่า Similarity จึงหาค่าความคล้ายคลึงของคู่เอกสารได้

    3.6 Ranking
    เมื่อทำการค้นหาข้อมูล (Searching) เพื่อนำมาแสดงให้กับผู้ใช้ จะมีการจัดทำลำดับของเอกสาร (Ranking) ตามลำดับความเหมือนของเอกสารกับข้อความที่ต้องการค้นหา (Similarity) ซึ่งเอกสารที่เกี่ยวข้องกับผู้ใช้มากที่สุด (High Relevance) จะถูกแสดงอยู่ในลำดับต้น ๆ ซึ่งการจัดลำดับของเอกสารจะดูจากความถี่ของคำในเอกสาร

    4. หน้าจอ Search Engine : Pan & James Search

    ir_11.jpg

    ฿าพที่ 10 แสดงหน้าจอ Crawler : James Bot

    ir_12.jpg

    ฿าพที่ 11 แสดงหน้าจอหลักของ Search Engine : Pan & James Search

    ir_13.jpg

    ฿าพที่ 12 แสดงหน้าจอผลลัพธ์ของการ Search

    5. สรุปผล
    5.1 การสกัดคำออกจากเว็บเพจที่ได้ทำการ Crawler นั้นยังทำได้ไม่ดีพอ บางเว็บเพจมีเนื้อหาที่มีหลากหลายภาษา , สัญลักษณ์ และเว็บเพจต่าง ๆ ถูกเขียนอย่างไร้โครงสร้าง (Un Structure) อีกทั้งเว็บเพจสมัยใหม่ใช้เทคโนโลยี Server Side Script ที่พัฒนาบนเว็บเซอร์เวอร์ เช่น ภาษา PHP , ASP.NET และ JSP เป็นต้น ทำให้การ Crawler ไม่สามารถได้เนื้อเว็บเพจจริงๆ เพื่อนำมาจัดเก็บเป็น Index จะได้เพียงเฉพาะโครงสร้างของเว็บเพจเท่านั้น
    5.2 จากงานวิจัยทางด้านการตัดคำภาษาไทยโดยใช้ N-Gram [1] พบว่าใช้ 3-Gram และ 4-Gram จะทำให้ได้ประสิทธิภาพที่ดี โดยในรายงานฉบับนี้ได้ใช้ N-Gram (4-Gram) มาใช้ในการทำ Query Suggestion โดย นำ Query ที่ผู้ใช้ป้อนเข้ามาเปรียบเทียบใน Dictionary (Lexitron) เพื่อจะได้แนะนำและช่วยคำที่ผู้ใช้อาจป้อน Query ผิด จากการทดลองใช้ 3-Grams สามารถหาค่าความคล้ายคลึงระหว่าง Query กับคำใน Dictionary ได้มากกว่า 4-Grams แต่เมื่อทดลองใช้ 4-Grams สามารถหาค่าความคล้ายคลึงได้น้อยกว่า 3-Grams และยังได้ประสิทธิภาพในการค้นคืนเอกสารได้ดีกว่า 3-Grams
    5.3 การตัดคำ (Word Segmentation) การเขียนในภาษาไทยนั้นจะมีความแตกต่างกับภาษาอังกฤษอย่างเด่นชัด เนื่องจากภาษาอังกฤษจะมีช่องว่างในการระบุคำแต่ละคำ ซึ่งการตัดคำของภาษาไทยส่วนใหญ่นั้นจะอาศัยโปรแกรมตัดคำ โดยใช้พจนานุกรมในการตัดคำแต่ก็ไม่ได้มีประสิทธิภาพที่ดี 100% เนื่องจากมีความเป็นไปได้ที่คำที่ปรากฏในเอกสาร อาจจะไม่ปรากฏในพจนานุกรม และไม่สามารถตัดคำที่เป็นประโยคได้ ดังนั้นจึงทำให้ประสิทธิภาพการสืบค้นและการทำ Index ยังไม่ดีเท่าที่ควร
    5.4 การ Search โดยใช้เทคนิค Vector Space Mode นั้นได้ค่า Rank ของเว็บเพจที่ค้นหา แต่อาจไม่ตรงกับความต้องการของผู้ใช้จริงๆ เนื่องจากเป็นเพียงการนำ Query ที่ User ป้อนไปค้นหากับ Index Term โดยดูจากความถี่ของคำนั้นในแต่ละเว็บเพจที่ถูกจัดทำ Index ไว้และนำมาแสดงผลลัพท์ให้กับผู้ใช้ตามลำดับ ซึ่งเนื้อหา ความหมาย ไม่ตรงกับความต้องการของผู้สืบค้น เช่น ผู้ใช้ต้องการค้นหาคำว่า “สุรินทร์” แต่ผลลัพท์ที่ได้จากการ Ranking อาจได้ผลลัพท์เกี่ยวกับจังหวัดสุรินทร์มาในอันดับต้น ๆ แต่ผู้ใช้อาจหมายถึงหมู่เกาะสุรินทร์ จังหวัดพังงาก็ได้

    6. ข้อเสนอแนะ
    6.1 สืบค้นโดยดูจาก Keyword อาจไม่ตรงกับความต้องการของผู้ใช้ (Relevant) ควรนำคำในลักษณะเชิงความหมายมาใช้ โดยการสร้างฐานความรู้และโครงสร้างความรู้เชิงความหมาย (Knowledge Base and Ontology) ซึ่งออนโทโลยีในการอธิบายความหมายของสิ่งต่าง ๆ สามารถจัดหมวดหมู่เอกสารของข้อมูลได้ในขอบเขตความสนใจหนึ่ง ๆ (Domain) ออนโทโลยีถูกสร้างขึ้นมาเพื่อจำกัดองค์ความรู้ (Knowledge) ของขอบเขตข้อมูลนั้น ๆ การนำออนโทโลยีมาใช้งานจึงเป็นทางเลือกหนึ่งในการแชร์ข้อมูล และแยกองค์ความรู้ออกจากฐานข้อมูล เพื่อให้ได้ผลลัพท์ที่ตรงตามผู้ใช้มากที่สุด และสามารถค้นหาเว็บเพจที่ตรงตามความต้องการของผู้ใช้ได้ดีกว่าค้นด้วยคำสำคัญ (Keyword)
    6.2 การ Crawler นั้นไม่ควรสำเนาเว็บเพจไว้ที่ Server ควรจัดเก็บเฉพาะ Index เพียงอย่างเดียว เพื่อประหยัดเนื้อที่ โดยจัดเก็บเฉพาะข้อมูลสำคัญ ๆ เช่น URL, Title , Keyword เป็นต้น และเมื่อผู้ใช้ค้นหาจะแสดง URL เพื่อให้ผู้ใช้ Link ไปยังเว็บเพจนั้น ๆ แทน
    6.3 การตัดคำเพื่อสร้างดัชนีคำนั้น เราได้ใช้หลักการตัดคำโดยใช้พจนานุกรม (Dictionary) เพียงอย่างเดียว ข้อเสนอแนะคือ ควรใช้แบบจำลอง N-Gram เพื่อเพิ่มความสามารถของการตัดคำ หรือควรนำหลักการตัดคำโดยใช้กฎ (Rule base approach) และหลักการตัดคำโดยใช้คลังข้อมูล (Corpus based approach) มาผสมผสานกัน เพื่อเพิ่มความถูกต้อง และแม่นยำในการค้นหา
    6.4 การสร้างดัชนีคำ ควรนำเทคนิคอื่นมาใช้ในการวิเคราะห์คำให้ได้ผลมากยิ่งขึ้น เนื่องจากจะมีคำบางประเภทที่ทำให้หาคำในพจนานุกรม เช่น คำกำกวม คำที่ไม่รู้จัก เป็นต้น ควรนำเทคนิคการตัดคำหลาย ๆ แบบมาประยุกต์ใช้ เช่น การทำเหมืองข้อความ (Text Mining) หรืออาจใช้การจัดกลุ่มเอกสาร (Document Clustering) ซึ่งเป็นวิธีที่จะจัดกลุ่มเอกสารปริมาณมาก ๆ แบบอัตโนมัติ เพื่อแยกเอกสารออกเป็นกลุ่มตามความคล้ายคลึงและความสัมพันธ์กันซึ่งขึ้นอยู่กับข้อความที่ปรากฏในเอกสารแต่ละฉบับ

    7. เอกสารอ้างอิง
    [1] อัษฎางค์ แตงไทย และ ชุลีรัตน์ จรัสกุลชัย, “การย่อความ฿าษาไทยโดยกรรมวิธีการแยกค่า
    แบบเดี่ยว”, The Proc of NCSEC. 2004.
    [2] Ricardo Baeza-Yates and Berthier Ribeiro-Neto(1999) : Modern Information Retrieval , Addison-Wesley
    [3] A Collaborative Framework for Collecting Thai Unknown Words from
    the Web [National Electronics and Computer Technology Center (NECTEC)]
    Available on http://acl.ldc.upenn.edu/P/P06/P06-2045.pdf

    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