Bisakah Earley Parser dibuat menjadi pengurai fuzzy mirip dengan Levenshtein Automata Algo untuk DFA?

10

Ada cara untuk melakukan parsing fuzzy (menerima string bahkan dengan kesalahan pengetikan untuk jarak edit tertentu), dengan DFA dan run-time yang dibuat oleh Levenshtein Automata dari kata input. Bisakah hal serupa dilakukan dengan pengurai Earley? Saya merasa sulit untuk memahami algoritma, apalagi menjawab pertanyaan ini.

Selamat menikmati
sumber
1
Nah, PDA tertutup terhadap banyak operasi dengan NFA, jadi ini pada prinsipnya mungkin. Mengadaptasi Earley tampaknya merupakan latihan menghafal, karena kami diizinkan menggunakan penghitung dalam item. Apakah saya melewatkan sesuatu?
Raphael
@ Raphael Ya Ini adalah ide umum. Jawaban saya lebih panjang, karena sulit menilai apa yang diketahui atau tidak diketahui pengguna.
babou
silakan mengutip ref / sketsa defn untuk "Levenshtein Automata". tahu satu yang mungkin memenuhi syarat, tetapi yang mana yang Anda maksud?
vzn

Jawaban:

8

Jawabannya iya. Namun saya tidak akan melakukan itu dengan parser Earley karena ada yang lebih sederhana dengan kemampuan yang sama.

Pada dasarnya, parser Earley milik keluarga parser bebas konteks umum, yang menghasilkan semua parsing yang mungkin untuk string yang diberikan, ketika tata bahasa ambigu.

Ada dua cara (setidaknya) untuk memahami parser ini:

  • sebagai interpretasi pemrograman dinamis dari otomat pushdown yang sesuai dengan tata bahasa pada string input;

  • sebagai konstruksi persimpangan tata bahasa dengan otomat keadaan terbatas.

Ketika parsing string tunggal, otomat negara yang terbatas untuk dipertimbangkan adalah robot linear yang hanya mengakui string dapat dipecah, satu simbol pada suatu waktu (jumlah negara adalah | w | + 1 ). Jika Anda menerapkan konstruksi produk silang FA A dan CF garmmar G (Bar Hillel, Perlis, Shamir 1961), Anda mendapatkan tata bahasa CF baru yang merupakan tata bahasa F baru yang menghasilkan L ( A ) L ( G ) . Hal yang menarik biasanya diabaikan adalah bahwa F menjaga pohon parse yang digunakan oleh Gw|w|+1SEBUAHGFL.(SEBUAH)L.(G)FG, hingga penggantian nama non-terminal (karena produk silang).

Jadi jika FA hanya menghasilkan string input Anda, tata bahasa F hanya akan menghasilkan string tersebut (jika berada dalam L ( G ) , jika tidak maka akan menghasilkan bahasa kosong ). Selain itu, ia menghasilkannya dengan semua pohon parse yang dapat digunakan G untuk menghasilkannya.SEBUAHFL.(G)G

Tata bahasa ini adalah apa yang biasanya disebut hutan parse bersama , dan semua algoritma parsing CF umum adalah versi yang kurang lebih dioptimalkan dari konstruksi produk-silang, apakah CYK, Earley, LR atau LL yang digeneralisasikan, atau yang lainnya. Jadi semua yang saya katakan berlaku untuk mereka juga.F

Tetapi, seperti yang Anda lihat, ini bersifat umum untuk mengurai seluruh rangkaian reguler, jika ada yang tertarik untuk melakukan itu.

ww

GF

Jika diinginkan, ini dapat digunakan untuk menjaga hanya string dengan jarak minimal.

Namun, ini dapat ditingkatkan sedikit karena komposisi dengan mesin negara hingga asosiatif.

GwΣ

Akan mudah untuk memangkas konstruksi itu untuk mendapatkan hasil yang sama seperti sebelumnya, tetapi cara terbaik adalah konstruksi persimpangan yang lebih terkontrol, seperti organisasi pemrograman dinamis yang digunakan oleh sebagian besar pengurai dalam literatur, termasuk Earley, dan menggunakannya untuk menghindari menghasilkan aturan yang tidak berguna dengan menghitung jarak dan membatalkan jalur komputasi apa pun ketika melebihi ambang yang diinginkan. Pemrograman dinamis juga dapat digunakan untuk menghitung langsung parse-forest (atau parse-tree) untuk string yang memiliki jarak terpendek ke input.

babou
sumber
berpikir ini membantu tetapi juga mungkin "membaca terlalu banyak" ke dalam pertanyaan sehingga mengatakan sesuatu seperti "ini justru pertanyaan Anda" tidak bisa benar-benar akurat. Anda telah mengambil pertanyaan yang agak kabur yang tidak diformalkan dengan ketat, dan (berusaha?) memformalkannya sendiri. mungkin ada lebih dari satu cara untuk memformalkan ide yang agak kabur. berpikir mungkin bermanfaat untuk pertama menentukan dengan hati-hati apa yang dilakukan konstruksi Dens Levenshtein (ada beberapa yang diketahui / diselidiki, tetapi yang mana yang sedang kita bicarakan?) dan kemudian menjelaskan bagaimana konsep ini dapat digeneralisasi untuk CFL.
vzn
1
Saya benar-benar memberikan formalisasi yang berbeda, yang saling melengkapi. Ada seluk-beluk saya tidak masuk ke, seperti penggunaan bobot yang tepat dalam proses, yang tergantung pada hasil yang tepat yang ingin Anda dapatkan. Tujuan saya bukan hanya untuk memberikan jawaban yang kurang memiliki minat pada pendapat saya sendiri, tetapi untuk memberikan pemahaman yang lebih luas tentang masalah tersebut. Pilihan jarak edit yang digunakan tidak penting, ia bekerja untuk apa pun yang dapat diekspresikan dengan transduser keadaan terbatas tertimbang.
babou