Earley Parser có thể được tạo thành một trình phân tích cú pháp mờ tương tự như Levenshtein Automata Algo cho DFA không?


10

Có một cách để thực hiện phân tích cú pháp mờ (chấp nhận các chuỗi ngay cả với lỗi chính tả đến một khoảng cách chỉnh sửa nhất định), với DFA và Levenshtein Automata được xây dựng trong thời gian chạy của từ đầu vào. Có thể làm điều gì đó tương tự với trình phân tích cú pháp Earley không? Tôi cảm thấy khó hiểu về thuật toán, hãy để một mình trả lời câu hỏi này.


1
Vâng, PDA đã bị đóng cửa đối với nhiều hoạt động với NFA, vì vậy về nguyên tắc điều này có thể xảy ra. Thích ứng Earley dường như là một bài tập vẹt, vì chúng tôi được phép sử dụng một quầy trong các mặt hàng. Tui bỏ lỡ điều gì vậy?
Raphael

@Raphael Có Đây là ý tưởng chung. Câu trả lời của tôi dài hơn, vì rất khó để đánh giá những gì người dùng biết hoặc không biết.
babou

xin vui lòng trích dẫn một ref / sketch defn cho "Levenshtein Automata". biết một trong những có thể đủ điều kiện, nhưng bạn đang đề cập đến cái nào?
vzn

Câu trả lời:


8

Câu trả lời là có. Tuy nhiên tôi sẽ không làm điều đó với trình phân tích cú pháp Earley vì có những trình đơn giản hơn có cùng khả năng.

Về cơ bản, trình phân tích cú pháp Earley thuộc về một họ các trình phân tích cú pháp không ngữ cảnh chung, tạo ra tất cả các phân tích cú pháp có thể cho một chuỗi nhất định, khi ngữ pháp không rõ ràng.

Có hai cách (ít nhất) để hiểu các trình phân tích cú pháp này:

  • như giải thích lập trình động của một máy tự động đẩy xuống tương ứng với ngữ pháp trên chuỗi đầu vào;

  • như việc xây dựng giao điểm của ngữ pháp với một máy tự động trạng thái hữu hạn.

w|w|+1AGFL(A)L(G)FG, lên đến không đổi tên thiết bị đầu cuối (do sản phẩm chéo).

Vì vậy, nếu FA chỉ tạo ra chuỗi đầu vào của bạn, ngữ pháp F sẽ chỉ tạo ra rằng chuỗi (nếu nó đang trong L ( G ) , nếu không nó sẽ tạo ra ngôn ngữ rỗng ). Hơn nữa, nó tạo ra nó với tất cả các cây phân tích mà G có thể sử dụng để tạo ra nó.AFL(G)G

Ngữ pháp này thường được gọi là rừng phân tích cú pháp chung và tất cả các thuật toán phân tích cú pháp CF chung là phiên bản được tối ưu hóa ít nhiều của cấu trúc sản phẩm chéo, cho dù CYK, Earley, LR tổng quát hoặc LL, hoặc các thuật toán khác. Vì vậy, tất cả những gì tôi đang nói áp dụng cho họ quá.F

Nhưng, như bạn thấy, điều này khái quát để phân tích toàn bộ tập hợp thông thường, nếu có ai quan tâm đến việc đó.

ww

GF

Nếu muốn, điều này có thể được sử dụng để chỉ giữ các chuỗi có khoảng cách tối thiểu.

Tuy nhiên, điều này có thể được cải thiện một chút vì thành phần với các máy trạng thái hữu hạn có liên quan.

GwΣ

Có thể dễ dàng cắt tỉa công trình đó để có kết quả như trước, nhưng cách tốt nhất là xây dựng giao lộ được kiểm soát nhiều hơn, chẳng hạn như tổ chức lập trình động được sử dụng bởi hầu hết các trình phân tích cú pháp trong tài liệu, bao gồm cả Earley và sử dụng nó để tránh tạo ra quy tắc vô dụng bằng cách tính toán khoảng cách và hủy bỏ bất kỳ con đường tính toán nào khi vượt quá ngưỡng mong muốn. Lập trình động cũng có thể được sử dụng để tính trực tiếp parse-Forest (hoặc parse-tree) cho chuỗi có khoảng cách ngắn nhất đến đầu vào.


nghĩ rằng điều này hữu ích nhưng cũng có thể "đọc quá nhiều" vào câu hỏi vì vậy nói một câu như "đây chính xác là câu hỏi của bạn" thực sự không thể chính xác. bạn đã đưa ra một câu hỏi khá mơ hồ không được chính thức hóa nghiêm ngặt, và (cố gắng?) chính thức hóa nó. có lẽ có nhiều hơn một cách để chính thức hóa ý tưởng ban đầu hơi mơ hồ. nghĩ rằng có thể hữu ích cho lần đầu tiên xác định cẩn thận những gì các công trình DFA của Levenshtein làm (có một số điều đã biết / đã điều tra, nhưng chúng ta đang nói về vấn đề nào?) và sau đó giải thích cách khái niệm này có thể được khái quát cho CFL.
vzn

1
Tôi thực sự đưa ra chính thức khác nhau, mà bổ sung cho nhau. Có những sự tinh tế mà tôi không có được, chẳng hạn như việc sử dụng chính xác các trọng số trong quy trình, điều này phụ thuộc vào kết quả chính xác mà bạn muốn nhận được. Mục đích của tôi không chỉ là đưa ra một câu trả lời mà ít quan tâm đến ý kiến ​​của riêng tôi, mà là để hiểu sâu hơn về vấn đề. Sự lựa chọn của khoảng cách chỉnh sửa được sử dụng là không quan trọng, nó hoạt động cho bất cứ điều gì có thể được thể hiện với một bộ chuyển đổi trạng thái hữu hạn có trọng số.
babou
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.