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

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

    Packet FTP ทำงานอย่างไร

    Filed under: Packet FTP ทำงานอย่างไร — ejeepss @ 13:22:34

    (File Transfer Protocal)

    FTP คืออะไร
    FTP (File Transfer Protocol) คือการถ่ายโอนไฟล์ หรือเรียกได้อีกอย่างว่า การคัดลอกแฟ้มข้อมูลบนเครือข่าย คือ การโอนย้ายแฟ้มข้อมูลจากเครื่องคอมพิวเตอร์ระบบหนึ่งมายังอีกระบบหนึ่งผ่านเครือข่าย ซึ่งทำได้หลายรูปแบบ เช่น การโอนจากแม่ข่ายมายังเครื่องพีซี หรือ เครื่องพีซีไปแม่ข่ายหรือระหว่างแม่ข่ายด้วยกันเอง การถ่ายโอนแฟ้มข้อมูลหรือการโอนย้ายแฟ้มข้อมูลอาศัยโปรแกรมหนึ่งที่มีการใช้งานกันมากและมีบริการอยู่ในโฮสต์แทบทุกเครื่อง คือ โปรแกรม FTP

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

    วิธีการทำงานของ FTP
    Ftp ทำงานในแบบไคลเอนต์เซิร์ฟเวอร์ โดยพัฒนาขึ้นตามโปรโตคอลพื้นฐาน TCP ซึ่งจะต้องมีการติดต่อเพื่อจองช่องสื่อสาร (Connection Establishment) ก่อนทำการสื่อสารจริง ซึ่งเรียกว่าเป็นการติดต่อแบบที่ต้องขอเชื่อมต่อก่อน (Connection - Oriented) ในการใช้งาน FTP เพื่อเริ่มการติดต่อสื่อสารนั้น จะต้องระบุหมายเลข IP ปลายทาง และต้องผ่านการแจ้งรหัส Login และ Password ของเซิร์ฟเวอร์ที่จะติดต่อก่อนจึงจะเข้าใช้งานได้

    ข้อมูลของ FTP ที่สื่อสารระหว่างกันมี 2 ประเภทคือ

  • ข้อมูล(Data) หมายถึงข้อมูลต่างๆที่ต้องการรับส่ง รวมทั้งไฟล์ที่รับมาจากเซิร์ฟเวอร์ หรือส่งมาจาก ไคลเอนต์แล้วไปเก็บที่เซิร์ฟเวอร์
  • ข้อมูลคำสั่ง (Command) FTP จะมีคำสั่งที่ใช้สั่งงานต่างๆ เช่น dir เป็นคำสั่งที่ใช้แสดงชื่อไฟล์หรือไดเรคทอรีในเครื่องเซิร์ฟเวอร์ หรือ get ใช้โหลดไฟล์มาที่เครื่องไคลเอนต์ผ่านโปรแกรม FTP แล้วโปรแกรมจะส่งคำสั่งไปยังเซิร์ฟเวอร์เพื่อทำงาน และแจ้งผลการทำงานกลับมายังไคลเอนต์ ซึ่งผลการทำงานนี้จะนำหน้าด้วยตัวเลข 3 หลัก เป็นรหัสที่ใช้แสดงสถานะการทำงานภายในของ FTP และต่อด้วยข้อความที่เป็นเท็กซ์ต่อท้าย ซึ่งก็คือผลการทำงานหรือคำอธิบายต่างๆ โดยที่ FTP มีกระบวนการภายในที่จะตรวจสอบได้ว่าข้อมูลที่จะรับส่งนี้เป็นประเภทคำสั่งไม่ใช่ตัวข้อมูลที่ต้องการจะโอนย้าย
  • การที่ FTP สามารถแยกแยะข้อมูลจริงออกจากข้อมูลที่เป็นคำสั่งได้นั้น ถือว่าเป็นหน้าที่การทำงานของโมดูลใน FTP ที่เรียกว่าโปรโตคอล (Protocol Interpreter Module หรือ PI) ซึ่งทำหน้าที่รองรับการทำงานคำสั่งต่างๆของ FTP และในส่วนของข้อมูลที่รับส่งนั้นจะเป็นหน้าที่ของโมดูลโอนข้อมูล (Data Transfer หรือ DT) ซึ่งโมดูลทั้งสองนี้จะต้องทำงานอยู่ทั้งในเครื่องที่เป็นเซิร์ฟเวอร์ และไคลเอ็นต์

    packet_ftp1.jpg
    รูปการทำงานของ Protocal FTP

    จากรูปแสดงถึงองค์ประกอบและกลไกการทำงานของโปรโตคอล FTP จะเริ่มจากผู้ใช้ (USER) เรียกใช้โปรแกรมผ่าน User Interface และ เมื่อเป็นโปรแกรม FTP พร้อมใช้งานแล้ว ถ้ามีการใช้คำสั่งต่างๆของFTPจะเป็นหน้าที่ของ PI (Protocol Interpreter module) ทำหน้าที่แปลคำสั่งและทำงานตามคำสั่ง ในกรณีที่มีการส่งรับข้อมูลก็จะเป็นหน้าที่ของ DT (Data Transfer module) ซึ่งโมดูล PI และDTนี้จะอยู่ทั้งด้านของไคลเอนต์และเซิร์ฟเวอร์

    ประเภทของการล็อกอินในบริการ FTP

      ล็อกอินด้วยผู้ใช้ที่มีอยู่ในระบบ (Real FTP) ผู้ใช้บริการจะต้องมีบัญชีผู้ใช้อยู่จริงบนเซิร์ฟเวอร์ สามารถเปลี่ยนไดเร็คทอรี่ไปที่อื่นได้
      ล็อกอินด้วยผู้ใช้ที่มีอยู่ในระบบแต่จำกัดขอบเขต (Guest FTP) คล้ายกับ Real FTP ต่างตรงที่ ไม่สามารถเปลี่ยนไดเร็คทอรีไปไหนได้เกินขอบเขตที่เซิร์ฟเวอร์กำหนด
      ล็อกอินด้วยผู้ใช้ที่ไม่มีอยู่ระบบ (Anonymous FTP) การบริการ FTP แบบที่เปิดเสรีให้คนทั่วโลกมาใช้บริการ คงเป็นไปไม่ได้ที่จะมานั่งสร้างบัญชีผู้ใช้ให้รอบรับคนทั่วโลก แบบนี้จึงกำหนดให้ล็อกอินโดยใช้ชื่อ anonymous ส่วนรหัสผ่าน E-Mail Address

    การสร้างส่วนเชื่อมโยงข้อมูล
    1. FTP ใช้ port TCP 21 ในการส่งผ่านคำสั่งควบคุมและใช้พอร์ต TCP 20 ส่งข้อมูล

    packet_ftp2.jpg

    2. สมมุติพอร์ตประจำส่วนเชื่อมโยงควบคุมของ Client คือ 1124 และเตรียมพอร์ต 125 รอไว้สำหรับส่วนเชื่อมโยงข้อมูล

    packet_ftp3.jpg

    3. Client จะขอเปิดส่วนเชื่อมโยงข้อมูลตามตำแหน่ง (1) โดยส่งรหัสคำสั่ง Port ตามด้วย IP Address (158.108.33.1) และหมายเลขพอร์ต 4, 101 ซึ่งแสดงถึงพอร์ต 1125 (เลขพอร์ตเป็นรหัส 16 บิต สองชุดติดกัน ดังนั้นตัวเลข 4, 101 คือ 4 * 256 + 101 = 1125)
    4.ต่อจากนั้น Server จะส่ง TCP จากพอร์ต 20 ไปยัง client ที่พอร์ต 1125 ตามตำแหน่งที่ 2

    Format FTP Header

    packet_ftp4.jpg

    มีรายละเอียด ดังนี้

  • Source Port Number : หมายเลขพอร์ตต้นทางที่ส่งดาต้าแกรมนี้
  • Destination Port Number : หมายเลขพอร์ตปลายทางที่จะเป็นผู้รับดาต้าแกรม
  • Sequence Number : ฟิลด์ที่ระบุหมายเลขลำดับอ้างอิงในการสื่อสารข้อมูลแต่ละครั้ง เพื่อใช้ในการแยกแยะว่าเป็นข้อมูลของชุดใด และนำมาจัดลำดับได้ถูกต้อง
  • Acknowledgment Number : ทำหน้าที่เช่นเดียวกับ Sequence Number แต่จะใช้ในการตอบรับ
  • Header Length : โดยปกติความยาวของเฮดเดอร์ TCP จะมีความยาว 20 ไบต์ แต่อาจจะมากกว่านั้น ถ้ามีข้อมูลในฟิลด์ option แต่ต้องไม่เกิน 60 ไบต์
  • Flag : เป็นข้อมูลระดับบิตที่อยู่ในเฮดเดอร์ TCP โดยใช้เป็นตัวบอกคุณสมบัติของแพ็กเก็ต TCP ขณะนั้นๆ และใช้เป็นตัวควบคุมจังหวะการรับส่งข้อมูลด้วย ซึ่ง Flag มีอยู่ทั้งหมด 6 บิต แบ่งได้ดังนี้
  • packet_ftp5.jpg

    packet_ftp6.jpg
    รูป IP Header

    เฮดเดอร์ของ IP โดยปกติจะมีขนาด 20 bytes ยกเว้นในกรณีที่มีการเพิ่ม option บางอย่าง ฟิลด์ ของเฮดเดอร์ IP จะมีความหมายดังนี้

  • Version : หมายเลขเวอร์ชันของโปรโตคอล ที่ใช้งานในปัจจุบันคือ เวอร์ชัน 4 (IPv4) และเวอร์ชัน 6 (IPv6)
  • Header Length : ความยาวของเฮดเดอร์ โดยทั่วไปถ้าไม่มีส่วน option จะมีค่าเป็น 5 (5*32 bit)
  • Type of Service (TOS) : ใช้เป็นข้อมูลสำหรับเราเตอร์ในการตัดสินใจเลือกการเราต์ข้อมูลในแต่ละดาต้าแกรม แต่ในปัจจุบันไม่ได้มีการนำไปใช้งานแล้ว
  • Length : ความยาวทั้งหมดเป็นจำนวนไบต์ของดาต้าแกรม ซึ่งด้วยขนาด 16 บิตของฟิลด์ จะหมายถึงความยาวสูงสุดของดาต้าแกรม คือ 65535 byte (64k) แต่ในการส่งข้อมูลจริง ข้อมูลจะถูกแยกเป็นส่วนๆตามขนาดของ MTU ที่กำหนดในลิงค์เลเยอร์ และนำมารวมกันอีกครั้งเมื่อส่งถึงปลายทาง แอพพลิเคชั่นส่วนใหญ่จะมีขนาดของดาต้าแกรมไม่เกิน 512 byte
  • Identification : เป็นหมายเลขของดาต้าแกรมในกรณีที่มีการแยกดาต้าแกรมเมื่อข้อมูลส่งถึงปลายทางจะนำข้อมูลที่มี identification เดียวกันมารวมกัน
  • Flag : ใช้ในกรณีที่มีการแยกดาต้าแกรม
  • Fragment offset : ใช้ในการกำหนดตำแหน่งข้อมูลในดาต้าแกรมที่มีการแยกส่วน เพื่อให้สามารถนำกลับมาเรียงต่อกันได้อย่างถูกต้อง
  • Time to live (TTL) : กำหนดจำนวนครั้งที่มากที่สุดที่ดาต้าแกรมจะถูกส่งระหว่าง hop (การส่งผ่านข้อมูลระหว่างเน็ตเวิร์ค) เพื่อป้องกันไม่ให้เกิดการส่งข้อมูลโดยไม่สิ้นสุด โดยเมื่อข้อมูลถูกส่งไป 1 hop จะทำการลดค่า TTL ลง 1 เมื่อค่าของ TTL เป็น 0 และข้อมูลยังไม่ถึงปลายทาง ข้อมูลนั้นจะถูกยกเลิก และเราเตอร์สุดท้ายจะส่งข้อมูล ICMP แจ้งกลับมายังต้นทางว่าเกิด time out ในระหว่างการส่งข้อมูล
  • Protocol : ระบุโปรโตคอลที่ส่งในดาต้าแกรม เช่น TCP ,UDP หรือ ICMP
  • Header checksum : ใช้ในการตรวจสอบความถูกต้องของข้อมูลในเฮดเดอร์
  • Source IP address : หมายเลข IP ของผู้ส่งข้อมูล
  • Destination IP address : หมายเลข IP ของผู้รับข้อมูล
  • Data : ข้อมูลจากโปรโตคอลระดับบน
  • การดักจับ Packet ของ Protocal FTP ด้วย Network Spy 2.0

    1. เริ่มการใช้งานโปรแกรม Network Spy 2.0

    packet_ftp7.jpg

    2. ทำการเลือก Network Card ที่ต้องการตรวจจับ Package

    packet_ftp8.jpg

    3. เริ่มต้นตรวจจับโดยกดปุ่ม Play

    packet_ftp9.jpg

    4. เรียกใช้งาน FTP โดยใช้ Command ดังนี้

    packet_ftp10.jpg

    โดยมีหลักการทำงานดังนี้
    1. เรียกใช้งาน Ftp ไปยัง Server ซึ่งมีหมายเลข IP-Address 192.168.0.2
    2. Server ตอบรับบริการ โดยให้ Client ป้อน Username
    3. Client ป้อน Username
    4. Server ตอบรับและให้ Client ป้อน รหัสผ่าน
    5. Client ป้อน รหัสผ่าน
    6. Server แสดงถึงการ login เสร็จสมบูรณ์
    7. Client ร้องขอไฟล์จาก Server
    8. Server ส่งไฟล์ตามที่ร้องขอมายัง client
    9. Client ขอจบการเชื่อมต่อ

    5. หน้าจอของโปรแกรม Network Spy 2.0 จะแสดง Package ที่ตรวจจับได้ดังนี้

    packet_ftp11.jpg

    ซึ่งสามารถแสดงรายละเอียดได้ดังนี้
    1. จากการตรวจจับ 3 บรรทัดแรก เป็นเรียกใช้งาน Ftp ไปยัง Server ซึ่งมีหมายเลข IP-Address 192.168.0.2

    packet_ftp12.jpg

    1.Client ร้องขอบริการไปยัง Server โดยส่ง Package มีรายละเอียดดังนี้

    packet_ftp13.jpg

    โปรแกรมตัวอื่นเช่น Blue Shark หรือ Etherial มีความสามารถและลูกเล่นมากกว่านี้นะครับ
    แต่ Network Spy 2.0 นี้เป็นรุ่นทดลองใช้ครับ …
    ตัวเล็ก แต่ความสามารถค่อนข้างสูง และก็ใช้งานได้ดีครับ

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

    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.

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

    Linux Virus ELS file format

    Filed under: Linux Virus ELS file format — ejeepss @ 11:25:10

    Linux Viruses – ELS FILE FORMAT

    บทความนี้ผมได้ทำสมัยยังศึกษาอยู่ เพื่อศึกษาเกี่ยวกับไวรัสในระบบปฏิบัติการอื่นๆ นอกเหนือจากระบบปฏิบัติการของไมโครซอฟต์ ซึ่งจากข้อมูลที่ได้ศึกษาพบว่าจากความนิยมใช้ Linux อย่างแพร่หลาย จึงทำให้เกิดการพัฒนาไวรัสที่สามารถติดบนระบบปฏิบัติอื่น และมีแนวโน้มที่ไวรัสพวกนี้สามารถกระโดดข้ามระบบปฏิบัติการได้ ซึ่งหากถึงวันนั้นจริงๆ การแพร่กระจายตัวของไวรัสคอมพิวเตอร์ คงรวดเร็วกว่า CodeRed , Slamber เป็นแน่ …

    ปัจจุบันได้มีการนำ Linux มาใช้เป็นระบบปฏิบัติการเป็นจำนวนมาก โดย Linux ที่ได้รับความนิยมใช้งานกันแพร่หลาย ได้แก่ RedHat และ Suse อย่างไรก็ตามในปัจจุบัน Linux ที่ติดไวรัสนั้นมีจำนวนน้อย และยังไม่ส่งผลอะไรมากมายนัก แต่เมื่อมีการนำ Linux มาใช้เป็น Desktop เพิ่มมากขึ้น อนาคตเรื่องไวรัสบน Linux นี้ อาจเป็นเรื่องใหญ่
    Linux โดยทั่วๆ ไปจะใช้ระบบไฟล์ที่เรียกว่า ELF (Executable and Linkable Format) ซึ่งรองรับการทำงานของ CPU ตั้งแต่ 32 และ 64 Bit

    1. ELS File FORMAT Layout
    ตั้งแต่ระบบปฏิบัติการ Linux ได้เข้ามามีบทบาทในชีวิตประจำวัน RedHat และ Suse เป็น Linux ที่มีผู้ใช้นิยมใช้ โดยได้ทำการทดสอบการ RedHat ทั้ง 2 version พบว่าการติดไวรัส นั้นขึ้นอยู่กับ Version ของ Linux และ Kernal Level ซึ่งใน Paper นี้ใช้ Linux RedHat 5.2 (Apollo) Kernal 2.0.36 บนเครื่อง i586 และ Linux RedHat 6.1 (Cartman) Kernal 2.2.12.20 บนเครื่อง i686
    ในปัจจุบันประเ฿ทไฟล์ที่ใช้เป็นพื้นฐานที่ Linux ใช้กันเรียกว่า ELF (Executable and Linkable Format) โดยที่ Object สามารถมองเห็นได้ถึง Linkable หรือ Executable Perspective โดยมี Linking View ซึ่งสำคัญมาก หากต้องการสร้างหรือ Compile หรือ Link file ไปยังไฟล์หรือต้องการจะ Run ไฟล์ โดยแสดงดัง Figure 1

    linux_els_1.jpg
    Figure 1 : ELF object can be viewed from a Linking or Executable perspective

    อย่างไรก็ตาม Linking View ได้มีส่วนขยายของ header ออก โดยทั่วไป Program Header Table และ Segment นั้น เป็นส่วนสำคัญที่มองข้ามไม่ได้ ELF รองรับการทำงานทั้ง 32 และ 64 Bit ตัวอย่างเช่น Linux ที่ติดตั้งบน Intel Base System จะใช้ 32 Bit แต่หากใช้เครื่อง DEC Alpha-base จะใช้ 64 Bit แต่ปัจจุบันไม่ค่อยมีคนใช้ แต่ในอนาคตจะทำการทดสอบ 64 Bit ที่กำลังจะมาถึงคือ Intel , AMD และอื่น ๆ

    1.1 ELF Header
    ในการวิเคราะห์ครั้งนี้เราได้เลือกไปที่ path Arch ใน Linux RedHat 5.2 ที่ติดตั้งใหม่ เป็นไฟล์Execute ที่อยู่ที่ ../bin/arch โดยแสดงดังภาพ Figure 2 ซึ่งแสดงเป็นเลขฐาน 16 (hex)

    linux_els_2.jpg
    Figure 2 : A clean Linux RedHat v5.2 executable file /bin/arch (*)

    1.2 Program Header Table
    ใน Program Header Table สามารถแบ่ง 5 Segment โดยมีรายละเอียดแสดง Figure 3
    • Segment 0 เริ่มต้นที่ตำแหน่ง 0034+ 20(h)
    • Segment 1 เริ่มต้นที่ตำแหน่ง 0054+ 20(h)
    • Segment 0 เริ่มต้นที่ตำแหน่ง 0074+ 20(h)
    • Segment 0 เริ่มต้นที่ตำแหน่ง 0094+ 20(h)
    • Segment 0 เริ่มต้นที่ตำแหน่ง 00B4+ 20(h)

    linux_els_3.jpg
    Figure 3 : File header overview 0000-0033: ELF header, 0034-00D3: Program Header Table

    1.3 Section Header Table
    โดยนับจำนวน Program Header และ Segment โดยภายในบรรจุข้อมูลที่สำคัญเวลา Linking เริ่มต้น Segment Header Table ที่ 07C0 (e-Shoff) แสดงได้ดัง Figure 7

    linux_els_7.jpg
    Figure 7 : Section Header Table with Section entries, location 07C0-0B2F

    linux_els_8.jpg
    Figure 8 : Section entry #1 in the Section Header Table, at location 07E8-080F

    2. ELF FILE VIRUS
    UNIX / LINUX มี Model ที่ดีเกี่ยวกับด้านความปลอดภัย ตัวอย่างเช่น นอกจากสิทธิ์ Root (Administrator) เป็นเรื่องยากมากที่จะทำการเปลี่ยน ELF Binary File อีกทั้งการที่ Server ให้บริการกับผู้ให้บริการไม่ให้สิทธิ์สูงในการเข้าใช้งาน อย่างไรก็ดีการที่มีผู้ใช้ Linux เพิ่มจำนวนมากขึ้นเรื่อย ๆ เราอาจจะเห็น Linux Virus เพิ่มขึ้นในอนาคต

    2.1 Lin/Bliss
    Virus Binary Virus ถูกค้นพบตั้งแต่ปี 1997 โดยจะแสดงให้เห็นถึงช่องโหว่สำหรับ Binary Virus โดย Lin/Bliss นั้นจะเพิ่มข้อมูลอย่างง่าย โดยเพิ่มข้อมูลไปถึง 17,992 หรือ 18,604 Bytes โดยมี 2 ELF Header โดยที่ Header แรกนั้นเป็น Virus และ Header 2 เป็น ELF ปกติ (ไม่ติด Virus) โดย ELF ปกติเริ่มต้นด้วย Offset ที่
    45E4 (hex) = 17,892 (dec)
    48AC (hex) = 18,604 (dec)
    Lin/Bliss สามารถตรวจจับและแก้ไขได้ง่าย แสดงรายละเอียดดัง Figure 10

    linux_els_10.jpg
    Figure 10 : Lin/Bliss-infected file

    2.2 Lin/Desel
    Lin/Desel สามารถตรวจพบใน 32 และ 64 Bit ใน RedHat 5.2 โดยชื่อที่เรียกกันคือ Lin/Desel.969 เนื่องจากมีการเพิ่มขนาดไฟล์ขนาด 969 Bytes
    ไฟล์ธรรมดามีขนาด 4,892 byte (dec)
    ไฟล์ที่ติดไวรัสมีขนาด 5,909 byte (dec)

    linux_els_15a.jpg
    Figure 15a : Lin/Desel changes bytes at the entry point, not the entry point itsalf

    โดยไวรัสจะทำงานเปลี่ยนแปลงตำแหน่ง File Entry จาก 0680 ไปยัง 0A49 ซึ่งเพิ่มมากขึ้นถึง 3C9(h) byte (969dec) โดยแสดงใน Figure 15c

    linux_els_15c.jpg
    Figure 15c : The Lin/Diesel infaction schema

    3. Summary และ Conclusions

    Linux Virus มีเทคนิคดังนี้
    1. เปลี่ยนแปลง Code ที่ปกติ เป็น Code Virus ในไฟล์
    2. เพิ่ม Code Virus ในไฟล์
    3. เพิ่ม Section Virus ในไฟล์
    4. ขยายขนาด Section และเพิ่ม Code Virus ฿ายใน
    การป้องกันเบื้องต้น
    1. เปลี่ยน OS (RedHat) โดยเลือกรุ่น และ Kernel ที่ปลอด฿ัย
    2. ตรวจหา ELF เพื่อหา E-Entry Point ที่ผิดปกติ

    สรุป
    1. ไฟล์ที่ใช้รูปแบบ ELF ยังคงมีความเสี่ยงในการติดไวรัส
    2. Linux Virus นั้นอาจเป็นปัญหาใหญ่ในอนาคต หากมีการใช้ Linux เพิ่มมากขึ้น

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

    Reference

  • Full documentation on the ELF layout is available at various locations on-line. For example,
    http://suncite.unc.edu/pub/Linux/GCC/ELF.doc.tar.gz
  • Download : elf-format.pdf
  • Next Page »

    Powered by WordPress