290 likes | 499 Views
Chapter 7 Text Operations ( การประมวลผลข้อความ). ดร.สุขชาตรี ประสมสุข คณะเทคโนโลยีสารสนเทศและการสื่อสาร ม.พะเยา. การประมวลผลข้อความ (Text Operations).
E N D
Chapter 7Text Operations(การประมวลผลข้อความ) ดร.สุขชาตรี ประสมสุข คณะเทคโนโลยีสารสนเทศและการสื่อสาร ม.พะเยา
การประมวลผลข้อความ (Text Operations) • การประมวลผลข้อความ (Text Operations) หมายถึง การปฏิบัติการตามกรรมวิธีเพื่อนำผลที่ได้ไปสร้างดรรชนี (Indexing) อันจะทำให้การค้นหา (Searching) ในขั้นต่อมาเป็นไปอย่างรวดเร็ว มีประสิทธิภาพและประสิทธิผล • Text Operations นี้แบ่งออกเป็น 3 เรื่อง คือ • Document Preprocessing • Text Clustering • Text Compression
Document Preprocessing • การวิเคราะห์คำ (Lexical Analysis) • การจัดคำโหล (Stop-words) • การหารากศัพท์ของคำ (Stemming) • การเลือกเทอมเพื่อสร้างดรรชนี (Term Selection) • การสร้างคำศัพท์สัมพันธ์ (Thesaurus Construction)
การวิเคราะห์คำ (Lexical Analysis) • เป็นขบวนการแปลงสายตัวอักษรยาว ๆ ในเอกสารหรือสิ่งเป้าหมายกลายมาเป็นสายของคำศัพท์ เพื่อใช้ในการสร้างดรรชนีของเทอมต่อไปเมื่อได้คำแต่ละคำในข้อความยังไม่สามารถนำคำเหล่านั้นไปสร้างดรรชนีได้ทันทีเพราะยังต้องกลั่นกรองคำอีกหลายขั้นจึงจะใช้งานได้ ที่สำคัญได้แก่ • คำที่เป็นตัวเลข (Digit) • คำที่เชื่อมด้วยขีด (Hyphen) • คำที่เชื่อมดัวยเครื่องหมาย Punctuation • ตัวอักษรใหญ่เล็ก
การกำจัดคำโหล (Stop-words Elimination) • แปรตามความหมายจากคำว่า Stop-words หมายถึงคำที่ปรากฏบ่อยมากในข้อความ เช่น a, an, the, and, about, for ในภาษาอังกฤษ หรือคำว่า คือ เป็น และ หรือ ในภาษาไทย • เนื่องจากคำโหลมีปรากฏมากจนไม่มีผลในการสืบค้นทางปฏิบัติจึงไม่จำต้องนำมาสร้างเป็นดรรชนีไม่ว่าจะเป็นรูปแบบใดก็ตาม
การหารากศัพท์ (Stemming) • Stemming เป็นการหา Stem หมายถึง รากศัพท์ คำหลัก หรือต้นตอของศัพท์ เพื่อให้การอธิบายเป็นไปในทางเดียวกัน • ภาษาอังกฤษ คำมีการเปลี่ยนรูปไปตามเหตุการณ์หรือสภาวะต่างๆ เช่น คำว่า Load เป็น Loads, Loaded, Loading, Loadable, Loader, Loaders เป็นต้น • ภาษาบาลี มีการแจกวิภัติตามสถานการณ์ เช่น คำว่า กุมาร กลายเป็น กุมาโร กุมารํ กุมาเร เป็นต้น
การหารากศัพท์ (Stemming) • การทำ Stemming มีหลายวิธีที่สำคัญได้แก่ • Table Lookup • Affix Removal • Successor Variety
การเลือกเทอมเพื่อสร้างดรรชนี (Term Selection) • แรกต้องให้ผู้เชี่ยวชาญที่มีความรู้เฉพาะทางในเอกสารนั้นๆ เป็นผู้กำหนด ซึ่งต้องใช้เวลาและแรงงานมากมหาศาลสำหรับการเลือกเทอมและสร้างเป็นดรรชนี • จึงหลีกเลี่ยงการใช้แรงงานคนแต่หาวิธีการสร้างอย่างอัตโนมัติแทน การเลือกเทอม สามารถทำได้อย่างอัตโนมัติด้วยการกำหนดเงื่อนไขของการคัดเลือก ซึ่งก็มีหลายวิธี วิธีหนึ่งที่ดีคือการเลือกเทอมที่เป็นคำนาม (Noun)
การสร้างคำศัพท์สัมพันธ์ (Thesaurus Construction) • Thesaurus หมายถึงคำศัพท์ หรือเทอมที่มีความหมายเดียวกันหรือใกล้เคียงกัน เช่น คำว่า Astronaut กับคำว่า Cosmonaut หรือ Space Traveler • การที่คำศัพท์ที่มีความหมายเดียวกันหรือใกล้เคียงกัน แต่เขียนได้หลากหลายต่างกัน เป็นความงดงามของภาษาอีกแบบหนึ่งที่ทำให้บทความเขียนได้ชวนอ่าน มีสีสัน และไม่ซ้ำซาก แต่ย่อมจะก่อให้เกิดปัญหา
วัตถุประสงค์ของการสร้างคลังข้อมูล Thesaurus • เพื่อกำหนดคำศัพท์มาตรฐาน • เพื่อช่วยให้ผู้ใช้ในการสร้างคำสอบถามอย่างเหมาะสม • เพื่อกำหนดระดับชั้นของคำศัพท์
องค์ประกอบของ Thesaurus • คำหลักของชุด (Descriptor) • คำที่ความหมายพ้องกับคำหลัก หรือคำที่มีความหมายใกล้เคียงกับคำหลัก แต่ระบบไม่ใช้และกำหนดให้ใช้คำหลักแทน (Used for) • ข้อความอธิบายคำหลัก(Scope Note) • คำที่มีความสัมพันธ์กับคำหลัก
ลักษณะความสัมพันธ์ของคำศัพท์ใน Thesaurus สามารถจำแนกได้เป็น 3 ประเภทหลัก ดังนี้ • ความสัมพันธ์ในแบบสมมูล (Equivalence Relationship) • ความสัมพันธ์ในแบบระดับชั้น (Hierarchical Relationship) • ความสัมพันธ์ในแบบเกี่ยวร่วม (Associative Relationship)
วิธีการสร้างThesaurus • วิธีการแบบ Manual วิธีนี้ใช้คนทำเป็นหลัก โดยเชิญผู้เชี่ยวชาญในสาขาวิชาเฉพาะทางมาทำการรวบรวมคำศัพท์สำคัญและความสัมพันธ์ระหว่างคำทั้งหมดเข้าด้วยกัน • วิธีการประมวลผลด้วยเครื่องจักร โดยอาศัยการปรากฏของคำศัพท์หรือเทอมในเอกสารเป็นฐานข้อมูลและทำการคำนวณค่าต่าง ๆ ที่เป็นตัววัดได้ อันจะนำไปสู่การตัดสินใจของการจัดเก็บคำศัพท์นั้น • ก็ตาม ขั้นตอนสุดท้ายของการตัดสินใจ ยังต้องใช้ผู้เชี่ยวชาญเฉพาะทางเป็นผู้ตัดสิน
Text Clustering • การจัดกลุ่มของเอกสารที่คล้ายกันไว้ในกลุ่มเดียวกัน และที่ต่างกันก็ให้แยกกลุ่มกัน • แทนที่จะค้นหาจากเอกสารทั้งหมด เราก็เพียงจำกัดเฉพาะเอกสารที่อยู่ในกลุ่มเดียวกัน ทำให้ขอบเขตแคบลง การค้นหายังจะทำได้เร็วขึ้น • วิธีการแบ่งกลุ่มมีหลากหลายวิธี แต่ก็จัดได้เป็น 2 วิธีหลักดังนี้ • Flat Clustering • Hierarchical Clustering
Flat Clustering • เป็นการแบ่งกลุ่มตามแนวราบ โดยถือว่าทุก Object เท่ากันหมด หลักการจะใช้วิธี K-Means ด้วยการวัดความเหมือนของ Object กับตัวแทนกลุ่ม และทำการแบ่งกลุ่มออก แบ่งเป็น K กลุ่ม (Cluster) โดยจะแทนแต่ละ Object ด้วยเวกเตอร์ ใน Vector Space เดียวกัน การแบ่งกลุ่มข้อมูลด้วยวิธีนี้ จะพิจารณาจากค่าเบี่ยงเบนมาตรฐาน คือ การแบ่งกลุ่มที่ดีต้องมีผลรวมของค่าเบี่ยงเบนมาตรฐานของ Clusters ให้น้อยที่สุด
K – Means Algorithm • ในขั้นตอนแรก สุ่มเลือก Objects จำนวน k กลุ่ม จากทั้งหมด และให้เป็นค่าเริ่มต้นของค่าเฉลี่ย µ • ขั้นตอนที่สองเป็นการวนซ้ำเป็นรอบ ๆ (Iteration) จนกว่าจะเลิกตามาเกณฑ์กำหนด • ในทางปฏิบัติ K – Means Algorithm จะใช้งานอย่างได้ผลและเป็นไปอย่างมีประสิทธิภาพหรือไม่นั้นขึ้นอยู่กับ การเลือกค่าเริ่มต้น, การกำหนดเกณฑ์การเลิก , การกำหนดค่า k
Hierarchical Clustering • เป็นการแบ่งกลุ่มโดยจัดเป็นลำดับชั้น กล่าวคือ Clusters ประกอบด้วย Clusters ย่อยและแบ่งต่อเป็น Clusters ย่อย ๆ และต่อ ๆ ไป วิธีการเป็นไปได้ใน 2 วิธีคือ ทำจากล่างไปบนที่เรียกว่า Bottom-up และทำจากบนลงล่างที่เรียกว่า Top-down วิธีการของ Bottom-up จะใช้เป็น Agglomerative Algorithm
Hierarchical Clustering • ผลลัพธ์ของ AgglomerativeClustering จะขึ้นกับการวัดค่าความเหมือน (Similarity) เป็นสำคัญ โดยทั่วไปจะมีการวัดใน 4 วิธีด้วยกันดังนี้ • Single Link • Complete Link • Centroid • Group Average
การบีบอัดข้อความ (Text Compression) • วิธีการลดขนาดของเนื้อที่การจัดเก็บของข้อความให้เล็กลง • ประโยชน์โดยตรงที่เห็นได้ชัด ทำให้เนื้อที่การจัดเก็บมีขนาดเล็กลงตาม เมื่อข้อความมีขนาดเล็กลงทางกายภาพ ก็ต้องทำการส่งผ่าน ได้เร็วขึ้นในความเร็วเท่าเดิม หรือหากในช่วงกว้าง (Bandwidth) คงที่ก็จะได้จำนวนช่องสัญญาณ (Channel) ที่มากขึ้นในการส่งผ่านข้อมูล • การบีบอัดข้อความจึงถือได้ว่าเป็นอีกรูปแบบหนึ่งของการเข้ารหัสข้อมูล (Data Encryption)
การบีบอัดข้อความ (Text Compression) • Text Compression มีวิธีการแปลงได้หลายวิธี แต่ทุกวิธีจะมีลักษณะร่วมกันคือเป็นแบบ Lossless Compression อันหมายถึงเมื่อแปลงข้อมูลในขาไป และแปลงกลับในขากลับ ยังรักษาข้อความให้เหมือนเดิมทุกประการได้ • สำหรับ Text Compression แล้วจะนำในลักษณะ Lossy Compression ไม่ได้ เพราะมนุษย์อ่านข้อความที่แปลงกลับผิดแปลกไปจากเดิมไม่ได้ เมื่อข้อความไม่เหมือนเดิมความเข้าใจก็จะต่างกัน จึงทำให้ไม่เลือกวิธีการ Lossy Compression
การบีบอัดข้อความ (Text Compression) วิธีการทำ Text Compression แบ่งได้เป็น 3 ประเภท ดังนี้ • วิธีการพื้นฐาน • วิธีการทางสถิติ • วิธีการด้วยพจนานุกรม
วิธีการพื้นฐาน • โดยทั่วไปคือ แทนสายตัวอักษรยาวๆ ด้วย รหัสบางตัว เรียกว่า Run-Length Encoding (RLE) • แทนชุดของข้อมูลที่ซ้ำกันในข้อความด้วยการนับจำนวนข้อมูลซ้ำกันที่อยู่ติดกัน โดนส่วนของข้อมูลที่ซ้ำกัน จะถูกแทนด้วย 3 ส่วน อันประกอบด้วย Control Character (*) ตามด้วยตัวเลขอันบ่งบอกจำนวนตัวอักษรที่ซ้ำกัน และปิดท้ายด้วยตัวอักษรนั้น ตัวอย่างเช่น Text : ABBBBBBBBBCDFFFFEEEEE RLE : A*9BCD*4F*5E
วิธีทางสถิติ ความถี่การปรากฏของตัวอักษร ของคำ หรือกลุ่มคำเป็นแนวทางในการบีบอัดข้อมูล วิธีการที่สำคัญ ได้แก่ • Huffman Coding • Adaptive Huffman Coding
Huffman Coding • แทนชุดตัวอักษรด้วย Codewordsซึ่งมีความยาวของรหัสที่ไม่เท่ากัน การบีบอัดของข้อความทำได้โดยกำหนดรหัสที่สั้นให้แก่ตัวอักษรที่ปรากฏบ่อย และรหัสที่ยาวแก่ตัวอักษรที่ปรากฏน้อย • วิธีการเข้ารหัส Huffman นอกจากใช้กับตัวอักษรเป็นตัวๆแล้ว ยังขยายผลไปใช้กับตัวคำศัพท์แต่ละตัวในข้อความ
Adaptive Huffman Coding • วิธีการ Adaptive Huffman Codingเรียกว่า FGK นอกจากนี้ยังผลงานในแนวเดียวกันโดย Vitter • ผลงานของ VitterAlgorithm จะให้ผลลัพธ์ที่ดีกว่า FGK กล่าวคือ จะให้ Tree ที่มีความสูงน้อยที่สุด เพื่อลดเวลาในการหาเส้นทาง Root ไปยังปลายที่เรียกว่า Leaf Node แต่วิธีของ Vitter มีความยุ่งยากกว่าในทางปฏิบัติ และใช้เวลาในการประมวลผลค่อนข้างมากกว่า
Adaptive Huffman Coding ขั้นตอนของ VitterAlgorithm อาจสรุปโดยย่อได้ ดังนี้ • กำหนด Root Node เป็น Empty Node และกำหนด Weigh เริ่มต้นเป็น 0 • ทำการสร้าง Code Tree โดยใส่ตัวอักษรที่ละตัวเข้าไปในต้นไม้ หาก Node ปัจจุบันเป็น Empty จะต้องทำการแตก Node ออกเป็นChild Node จำนวน 2 Nodes โดย Node ทางซ้ายจะเป็น Empty Node ส่วน Node ทางขวาจะเก็บค่า Symbol ของตัวอักษรที่เราใส่เข้าไป จากนั้นกำหนด Weigh สำหรับ Leaf Node ใหม่ โดยให้ Node ทางซ้ายมีค่าเป็น 0
Adaptive Huffman Coding และ Node ทางขวามีค่าเป็น 1 ตามลำดับและปรับ Weigh ใน Empty Node ให้ไปยัง Leaf Node ของตัวอักษรนั้นๆ • ถ้า Node ที่พิจารณานี้ไม่ได้มี Order สูงสุดเมื่อเทียบกับ Node ทั้งหมดที่มี Weigh เท่ากับ Node นี้ (Weigh class เดียวกัน) ให้สลับค่า (Swap) Weigh และ Symbol กับ Node ที่มี Order สูงสุด • ปรับเพิ่มค่า Weigh สำหรับ Node ปัจจุบัน • ถ้าไม่ใช่ Root Node ให้ไปยัง Parent Node และไปทำขั้นตอนที่ 3 หากเป็น Root Node ถือว่าจบการทำงาน
Thank you Question/Answer