Earley Parser สามารถสร้างเป็น parser fuzzy คล้ายกับ Levenshtein Automata Algo สำหรับ DFA ได้หรือไม่?


10

มีวิธีการแยกวิเคราะห์แบบคลุมเครือ (ยอมรับสตริงแม้มีความผิดพลาดในการแก้ไขระยะทางที่แน่นอน) ด้วย DFA และ Levenshtein Automata ที่สร้างขึ้นในเวลาทำงานของคำที่ป้อนเข้า สิ่งที่คล้ายกันสามารถทำได้ด้วยการแยกวิเคราะห์ Earley? ฉันพบว่ามันยากที่จะเข้าใจอัลกอริทึมให้ตอบคำถามนี้โดยลำพัง


1
พีดีเอถูกปิดเทียบกับการดำเนินการหลายอย่างกับ NFA ดังนั้นสิ่งนี้ควรเป็นไปได้ในหลักการ การปรับตัว Earley ดูเหมือนจะเป็นการออกกำลังกายที่ท่องจำเนื่องจากเราได้รับอนุญาตให้ใช้เคาน์เตอร์ในรายการ ฉันพลาดอะไรไปรึเปล่า?
ราฟาเอล

@ ราฟาเอลใช่นี่เป็นความคิดทั่วไป คำตอบของฉันยาวขึ้นเนื่องจากเป็นการยากที่จะประเมินว่าผู้ใช้รู้หรือไม่ทราบ
Babou

โปรดอ้างอิง / ร่าง defn สำหรับ "Levenshtein Automata" รู้ว่าสิ่งหนึ่งที่อาจมีคุณสมบัติ แต่คุณหมายถึงหนึ่งที่
vzn

คำตอบ:


8

คำตอบคือใช่ อย่างไรก็ตามฉันจะไม่ทำเช่นนั้นกับตัวแยกวิเคราะห์ Earley เพราะมีตัวที่ง่ายกว่าที่มีความสามารถเหมือนกัน

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

มีอย่างน้อยสองวิธีในการทำความเข้าใจตัวแยกวิเคราะห์เหล่านี้:

  • เป็นการตีความการเขียนโปรแกรมแบบไดนามิกของหุ่นยนต์แบบกดลงที่สอดคล้องกับไวยากรณ์บนสตริงอินพุต;

  • ในขณะที่การก่อสร้างของจุดตัดของไวยากรณ์ที่มีหุ่นยนต์สถานะ จำกัด

เมื่อแยกสตริงเดี่ยวออโตเมติกสถานะ จำกัด ที่ต้องพิจารณาคือออโตเมติกเชิงเส้นที่รับรู้เฉพาะสตริง ที่จะแยกวิเคราะห์หนึ่งสัญลักษณ์ในแต่ละครั้ง (จำนวนสถานะคือ| w | + 1 ) หากคุณใช้การสร้างข้ามผลิตภัณฑ์ของ FAและ CF Garmmar (Bar Hillel, Perlis, Shamir 1961) คุณจะได้รับไวยากรณ์ CF ใหม่ที่เป็นไวยากรณ์ใหม่ซึ่งสร้าง(G) จุดที่น่าสนใจที่มักจะมองข้ามคือเก็บรักษาต้นไม้แยกวิเคราะห์ที่ใช้โดยจนถึงการเปลี่ยนชื่อที่ไม่ใช่ขั้ว (เนื่องจากผลิตภัณฑ์ข้าม)W|W|+1AGFL(A)L(G)FG

ดังนั้นหาก FAสร้างเฉพาะสตริงอินพุตของคุณไวยากรณ์ จะสร้างสตริงนั้นเท่านั้น (หากอยู่ในมิฉะนั้นจะสร้างภาษาว่างเปล่า ) นอกจากนี้มันยังสร้างมันขึ้นมาด้วยการแยกวิเคราะห์ทั้งหมดที่สามารถใช้เพื่อสร้างมันได้AFL(G)G

ไวยากรณ์นี้คือสิ่งที่เรียกว่าป่าแบ่งที่ใช้ร่วมกันและอัลกอริธึมการแจงทั่วไป CF ทั้งหมดเป็นรุ่นที่ปรับให้เหมาะสมมากขึ้นหรือน้อยลงของการสร้างผลิตภัณฑ์ข้ามไม่ว่าจะเป็น CYK, Earley, LR ทั่วไปหรือ LL หรืออื่น ๆ ดังนั้นสิ่งที่ฉันพูดก็ใช้ได้กับพวกเขาด้วยF

แต่อย่างที่คุณเห็นนี่เป็นการสรุปการแยกชุดปกติทั้งหมดถ้าใครสนใจทำเช่นนั้น

WW

GF

หากต้องการสิ่งนี้สามารถใช้เพื่อเก็บเฉพาะสตริงที่มีระยะทางน้อยที่สุด

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

GWΣ* * * *

มันจะง่ายกว่าที่จะตัดสิ่งก่อสร้างนั้นเพื่อให้ได้ผลลัพธ์เหมือนเดิม แต่วิธีที่ดีที่สุดคือการสร้างทางแยกที่ควบคุมได้มากขึ้นเช่นองค์กรการเขียนโปรแกรมแบบไดนามิกที่ใช้โดย parsers ส่วนใหญ่ในวรรณคดีรวมถึง Earley's และใช้เพื่อหลีกเลี่ยงการสร้าง กฎไร้ประโยชน์โดยการคำนวณระยะทางและยกเลิกเส้นทางการคำนวณใด ๆ เมื่อเกินเกณฑ์ที่ต้องการ การเขียนโปรแกรมแบบไดนามิกยังสามารถใช้ในการคำนวณ parse-forest (หรือ parse-tree) โดยตรงสำหรับสตริงที่มีระยะทางสั้นที่สุดในการป้อนข้อมูล


คิดว่าสิ่งนี้มีประโยชน์ แต่อาจจะ "อ่านมากเกินไป" ในคำถามดังนั้นการพูดบางอย่างเช่น "นี่เป็นคำถามของคุณอย่างแม่นยำ" ไม่ถูกต้องจริงๆ คุณได้รับคำถามที่ค่อนข้างคลุมเครือซึ่งไม่ได้เป็นระเบียบอย่างเคร่งครัดและ (พยายามที่จะ?) ทำให้เป็นระเบียบด้วยตัวคุณเอง อาจมีมากกว่าหนึ่งวิธีในการทำให้ความคิดค่อนข้างคลุมเครือดั้งเดิมกลายเป็นทางการ คิดว่าอาจเป็นประโยชน์ในการกำหนดสิ่งที่กองกำลัง DFA ของ Levenshtein ทำอย่างรอบคอบ (มีบางคนรู้ / สอบสวน แต่เรากำลังพูดถึงเรื่องอะไรกัน) แล้วอธิบายว่าแนวคิดนี้จะเป็นลักษณะทั่วไปของ CFL ได้อย่างไร
vzn

1
ฉันให้ความเป็นทางการที่แตกต่างกัน มีรายละเอียดปลีกย่อยที่ฉันไม่ได้รับเช่นการใช้น้ำหนักอย่างแท้จริงในกระบวนการซึ่งขึ้นอยู่กับผลลัพธ์ที่แม่นยำที่คุณต้องการ จุดประสงค์ของฉันไม่ใช่เพียงเพื่อให้คำตอบที่มีความสนใจในความคิดเห็นของตัวเองน้อย แต่เพื่อให้เข้าใจปัญหาได้กว้างขึ้น ทางเลือกของการแก้ไขระยะทางที่ใช้นั้นไม่สำคัญมันทำงานได้กับทุกสิ่งที่สามารถแสดงออกได้ด้วย transducer finite state ถ่วงน้ำหนัก
babou
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.