คำถามติดแท็ก parsing

5
กำลังกู้คืนป่าแยกวิเคราะห์จากตัวแยกวิเคราะห์ Earley หรือไม่
เมื่อไม่นานมานี้ฉันอ่านหนังสือบนตัวแยกวิเคราะห์ Earleyและคิดว่าเป็นหนึ่งในอัลกอริทึมที่หรูหราที่สุดที่ฉันเคยเห็นมา อย่างไรก็ตามอัลกอริทึมในความหมายดั้งเดิมของมันคือตัวจดจำและไม่ใช่ตัวแยกวิเคราะห์ซึ่งหมายความว่ามันสามารถตรวจจับได้ว่าสตริงนั้นตรงกับ CFG เฉพาะหรือไม่ แต่ไม่สร้างทรีสำหรับแยกวิเคราะห์ คำถามของฉันคือวิธีการกู้คืนไม่ใช่ทรีการแยกวิเคราะห์แต่เป็นการแยกวิเคราะห์ฟอเรสต์ของ parses ที่เป็นไปได้ทั้งหมดของสตริงอินพุตที่กำหนด ใน "เทคนิคการแยกวิเคราะห์: คู่มือการปฏิบัติ" ของกรุนและจาค็อบพวกเขาแสดงให้เห็นถึงอัลกอริธึมที่สามารถใช้ในการกู้คืนป่าแยกจากผลของ Earley Recognizer แต่มันขึ้นอยู่กับวิธีการแยกวิเคราะห์ของอังเกอร์ซึ่งรันไทม์ O (n k + 1 ) โดยที่ k คือความยาวของการผลิตที่ยาวที่สุดในไวยากรณ์ ซึ่งหมายความว่ารันไทม์ไม่ใช่พหุนามในขนาดของไวยากรณ์ ยิ่งกว่านั้นกระดาษต้นฉบับของ Earley บนอัลกอริทึมซึ่งแนะนำอัลกอริทึมสำหรับการกู้คืนการแยกวิเคราะห์ป่าไม่ถูกต้อง (ดูตัวอย่างหน้า 762 ของบทความนี้โดย Tomita) แม้ว่าหลาย ๆ แหล่งข้อมูลยังอ้างว่าเป็นวิธีที่เหมาะสมในการกู้คืนการแยกวิเคราะห์ . คำถามของฉันคือว่าเป็นไปได้ในเวลาพหุนามเพื่อกู้คืนการแยกวิเคราะห์ฟอเรสต์ที่กำหนด ฉันได้พบกระดาษที่นี่ที่ให้อัลกอริทึมสำหรับการผลิตการแยกวิเคราะห์ป่าขนาดลูกบาศก์สำหรับการแยกวิเคราะห์ใด ๆ โดยใช้การจำลองของ PDA ดังนั้นดูเหมือนว่ามันควรจะเป็นไปได้ แต่ฉันยังไม่พบวิธีที่จะทำเช่นนี้ เป็นการดีที่ฉันต้องการทำสิ่งนี้โดยไม่ต้องแปลงไวยากรณ์อินพุตเป็น CNF (ซึ่งแน่นอนจะแก้ปัญหา) เนื่องจากป่าแจงป่าผลลัพธ์ที่ได้จะยุ่งสวย ขอบคุณสำหรับความช่วยเหลือใด ๆ …

1
สามารถแยกไวยากรณ์ที่ชัดเจนทั้งหมดในเวลาเชิงเส้นได้หรือไม่?
เมื่อทำการวิเคราะห์ด้วย LR แบบ noncanonical LR ฉันคิดวิธีการแยกวิเคราะห์ (ด้วยตารางที่มีขนาดไม่ จำกัด ซึ่งทำให้มันค่อนข้างไม่สามารถปฏิบัติได้) สามารถแยกไวยากรณ์ที่ชัดเจนในเวลาและฉันสงสัยว่ามันเป็นไปได้ไหมที่จะทำ ที่ดีกว่า:O(n2)O(n2)O(n^2) สามารถแยกไวยากรณ์ที่ชัดเจนทั้งหมดในเวลาเชิงเส้นได้หรือไม่? ฉันค่อนข้างแน่ใจว่าฉันได้อ่านที่ไหนสักแห่งว่าเป็นกรณีนี้ แต่มันไม่ได้เกิดขึ้นเมื่อค้นหาอินเทอร์เน็ต คำถามเดียวกันถูกถามที่นี่แต่ไม่มีคำตอบเท่าที่ฉันรู้

3
CFG แยกโดยใช้
มีความหลากหลายของอัลกอริทึมที่สามารถแยกไวยากรณ์บริบทฟรีในเป็นเวลา การใช้การคูณเมทริกซ์สามารถทำให้เร็วกว่าแบบไม่มีสัญญาณได้O ( n3)O(n3)O(n^3) อย่างไรก็ตามอัลกอริทึมทั้งหมดสำหรับการวิเคราะห์ CFG โดยพลการที่ฉันรู้ว่ามีการใช้พื้นที่ในกรณีที่เลวร้ายที่สุดของ (แม้ว่าเป็นที่ยอมรับฉันไม่มีความคิดว่าการใช้พื้นที่ของอัลกอริทึมการคูณเมทริกซ์นั้นคืออะไร) ฉันสงสัยว่ามีอัลกอริทึมใด ๆ ที่ปรับปรุงจากการใช้พื้นที่นี้หรือไม่ (โดยไม่คำนึงถึงเวลาที่กำหนด)Ω( n2)Ω(n2)\Omega(n^2) คำถามผุดขึ้นในใจของฉันหลังจากเชื่อมโยงจิตใจกับพื้นที่เชื่อมโยงกับอัลกอริธึมการแยก CFG ทั้งหมดที่ฉันรู้ มันอาจจะไม่สนใจในทางปฏิบัติ แต่เป็นเพียงสิ่งที่ฉันอยากรู้Ω ( n 2 )คSG = ND SPCE( n ) ⊆ D SPCE( n2)CSG=NDSPACE(n)⊆DSPACE(n2)CSG = NDSPACE(n) \subseteq DSPACE(n^2)Ω ( n2)Ω(n2)\Omega(n^2)

3
ลักษณะทั่วไปของวิธีการ Brzozowski ของอนุพันธ์ของการแสดงออกปกติเพื่อไวยากรณ์?
วิธีการอนุพันธ์ของ Brzozowski เป็นเทคนิคที่น่าสนใจมากสำหรับการสร้างออโตมาต้าแบบกำหนดขึ้นจากการแสดงออกปกติด้วยวิธีพีชคณิตอย่างดี ฉันได้ทำการสรุปภาพรวมที่น่ารักของเทคนิคนี้เพื่อจัดการกับแกรมม่าขนาดใหญ่บางคลาส แต่อัลกอริทึมนั้นตรงไปตรงมามากพอที่จะเป็นไปได้ที่พวกเขาจะค้นพบมาก่อน แต่การอ้างอิงของ Google กับลูกหลานของเทคนิคนี้ดูเหมือนจะไม่เกิดขึ้นมากนัก ใครรู้อะไรบ้าง

2
วลีการเปลี่ยนแปลงกับ LR การแยก
วลีเปลี่ยนแปลงเป็นส่วนขยายมาตรฐาน (E) BNF บริบทฟรีไวยากรณ์คำจำกัดความ: วลีเปลี่ยนแปลงมีnโปรดักชั่น (หรือเท่ากัน nonterminals) 1ผ่านn ที่ตำแหน่งของวลีการเปลี่ยนรูปเราต้องการเห็นทุกการผลิตเหล่านี้เพียงครั้งเดียว แต่เราไม่สนใจที่จะจัดลำดับของผู้ไม่ประสงค์ออกนามเหล่านี้{ A1, … , An}{A1,...,An}\{ A_1, \dots, A_n \}nnnA1A1A_1AnAnA_n ตัวอย่างเช่น: S <- X { A, B, C } Y เทียบเท่ากับ: S <- X A B C Y S <- X A C B Y S <- X B A C Y …

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

2
หมวดหมู่ทฤษฎีและตัวแยกวิเคราะห์ - ต้องการการอ้างอิง
เนื่องจากฉันสนใจนักแยกวิเคราะห์ การอ้างอิงใด ๆ เกี่ยวกับการประยุกต์ใช้ทฤษฎีหมวดหมู่กับการวิเคราะห์คำจะชื่นชมอย่างมาก ที่ดีที่สุด

1
ความสัมพันธ์ระหว่างการแยกวิเคราะห์ลดกะและการแยกต่อเนื่อง?
มีใครบ้างไหมที่ทำให้ความสัมพันธ์ระหว่างเทคนิคการวิเคราะห์การเปลี่ยนแปลงลดและการแยกที่ต่อเนื่องเป็นรูปเป็นร่าง? เมื่อสร้างตัวแยกวิเคราะห์จากล่างขึ้นบน (เช่น LR parsers) เราใช้ไวยากรณ์และแสดงสถานะการแยกวิเคราะห์เป็นชุดของรายการ : เพิ่มการผลิตของรูปแบบโดยที่และอยู่ ลำดับของเทอร์มินัลและ nonterminals เครื่องหมายแสดงให้เห็นว่า parser เข้าไปในสตริงได้ไกลแค่ไหนด้วยแสดงถึงสิ่งที่ได้เห็นมาแล้วและแสดงการคาดการณ์ของสิ่งที่อาจถูกแยกวิเคราะห์A→α∙βA→α∙βA \to \alpha \bullet \betaαα\alphaββ\beta∙∙\bulletαα\alphaββ\beta การดำเนินการเปลี่ยนแปลงในการเปลี่ยนแปลงของหุ่นยนต์ LR แจงตรงกับคำนำหน้าของสแต็คกับที่ , และแทนที่ด้วย การเรียงซ้อนอย่างลึกล้ำของสแต็กมีลักษณะคล้ายกับผลกระทบของโอเปอเรเตอร์ควบคุม แต่นี่เป็นเพียงการสังเกตเชิงคุณภาพαα\alphaAAA มีใครศึกษาการเชื่อมต่อระหว่างตัวแยกการลดกะและตัวควบคุมที่มีตัวคั่นเช่นกะ / รีเซ็ต?

1
ทำไม Tomita สร้าง GLR และไม่ได้ใช้ Earley
เมื่อฉันดูการแยกวิเคราะห์ Earley มันดูสง่างามมากและฉันสงสัยว่าทำไมเทคนิค GLR จึงเป็นที่นิยม ไม่มีใครรู้ว่าเกิดอะไรขึ้นกับ Earley ในการแยกวิเคราะห์ว่า Tomita สร้าง GLR หรือไม่ ประสิทธิภาพ? สิ่งพิมพ์ใด ๆ เกี่ยวกับการสนทนาเหล่านี้มีความนิยมอย่างสูง
11 parsing 

4
หนังสือที่ดีเกี่ยวกับทฤษฎี parser?
หนึ่งในโปรเจ็กต์ Java ของฉันคือการแยกส่วนของ parboiledและไม่เหมือนกับว่า Antlr หรือ JavaCC ตัวแยกวิเคราะห์จะถูกสร้างขึ้นที่รันไทม์ Grammars ที่สร้างขึ้นคือ Parsing Expression Grammars หรือ PEG (ฉันได้ยินคำศัพท์อื่นสำหรับพวกเขาคือ "packrat") ในขณะที่การสร้างรันไทม์เพิ่มความซับซ้อน (เกี่ยวข้องกับการสร้าง bytecode) อีกแง่มุมหนึ่งเกี่ยวข้องกับทฤษฎี parser เอง อย่างที่ฉันมีโชคไม่ดีที่วิทยาศาสตร์คอมพิวเตอร์ฉันไม่มีความรู้ทางทฤษฎีในการแมปรหัสที่มีอยู่กับแนวคิดที่มีอยู่ - ในกรณีนี้ตัวแยกวิเคราะห์ มีหนังสืออ้างอิงที่ดีในตัวแยกวิเคราะห์ที่ฉันสามารถซื้อและอ่านหรือแม้กระทั่งลิงก์บนอินเทอร์เน็ตซึ่งสามารถช่วยฉันสร้าง "การแมป" การบัญชีสำหรับความรู้เชิงทฤษฎีของฉันได้หรือไม่?

2
วิธีแบบฟอร์ม Chomsky ปกติ: CYK parser ผลกระทบของประสิทธิภาพการทำงาน?
ตัวแยกวิเคราะห์แผนภูมิสามารถดำเนินการตามรูปแบบปกติของ Chomsky หรือตามกฎการผลิตโดยตรง ลองสมมติว่าเรามีตัวแยกวิเคราะห์แผนภูมิ CYK ที่ใช้รูปแบบปกติของ Chomsky ไม่มีการกำหนดไบนารีนาร์ สิ่งนี้จะส่งผลกระทบต่อประสิทธิภาพของการแยกวิเคราะห์แผนภูมิ CYK หรือไม่ สิ่งนี้สามารถใช้เพื่อปรับปรุงประสิทธิภาพของตัวแยกวิเคราะห์แผนภูมิ CYK ได้หรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.