Potisni automati i primeri upotrebe automata u obradi
Potisni automati i primeri upotrebe automata u obradi prirodnih jezika Cvetana Krstev
Potisni automati • Potisni automati (engl. push-down automata) • Snažnija klasa automata od konačnih automata – Klasa jezika koje generišu kontekstno slobodne gramatike je ekvivalentna klasi jezika koje generišu nedeterministički potisni automati. • Potisni automat je konačni automat kome je dodata pomoćna memorija. • Pomoćna memorija funkcioniše po principu steka, tj. last-in first-out ili LIFO liste, po čemu je automat i dobio ime.
Definicija potisnog automata • Formalni sistem – <V 0, V 1, e, σ, Z 0, Σ, S 0, R, F>
Funkcionisanje potisnog automata (1) • Ulazna traka je konačna kao i kod konačnog automata, pokreće se uvek udesno za jedno mesto, a potisni automat ništa ne menja na ovoj traci. • Potisna memorija je potencijalno beskonačna traka. Kada se simbol dodaje, sadržaj skladišta se potiskuje nadole, kada se simbol briše iz njega, sadržaj iskače nagore. Uvek se čita samo simbol s vrha skladišta.
Funkcionisanje potisnog automata (2) • Početak rada: Automat je u stanju S 0, ulazna traka je na početku (čita se prvi simbol) u potpisnom skladištu je samo simbol Z 0. • Pravila prelaska: (a, Si, b)→ (Sj, x) sa značenjem: ako je automat u stanju Si, na ulazu je simbol a, a na vrhu steka simbol b, automat prelazi u stanje Sj, ulazna traka se pomera za jedno mesto i menja se sadržaj steka na sledeći način: – x = σ, onda se briše simbol sa vrha skladišta (steka); – x σ, onda se x dodaje na vrh skladišta (steka);
Funkcionisanje potisnog automata (3) • Pravila prelaska: (a, Si, b)→ (Sj, x) i značaj simbola e – jedinična niska: – a = e, onda se pravilo izvršava bez obzira na simbol na ulaznoj traci i ulazna traka se NE pomera; – b = e, onda se pravilo izvršava bez obzira na simbol na vrhu skladišta (steka); – x = e, onda se ne vrši nikakva promena skladišta (steka).
Funkcionisanje potisnog automata (4) • Prihvatanje niske s ulazne trake, treba istovremeno da budu ispunjena sledeća tri uslova: – Svi ulazni simboli su pročitani; – Automat je u završnom stanju; – Potisno skladište je potpuno prazno.
Primer konstruisanja potisnog automata • Treba konstruisati potisni automat koji generiše sledeća gramatika: – S → a. Sb; S → ab; • Ova gramatika generiše sledeći jezik – L = {anbn | n > 0} • Ovaj automat premašuje kapacitet konačnih automata, jer oni “ne umeju da broje”. • Potisni automat treba da upiše u pomoćno skladiše (stek) neki simbol kad god pročita simbol a, a da briše iz skladišta taj simbol kad god pročita s ulazne trake b. Skladiše treba da bude prazno ako je bilo podjednako simbola a i simbola b u ulaznoj niski.
Formalna definicija automata koji prihvata jezik L = {anbn | n > 0} • (a, S 0, e)→ (S 0, 1) U stanju S 0 ako je na ulazu a a na steku bilo šta (Z 0 ili 1) ostani u S 0 i upiši na stek 1; • (b, S 0, 1)→ (S 1, σ) U stanju S 0 ako je na ulazu b a na steku 1 pređi u S 1 i obriši (1) sa steka; • (b, S 1, 1)→ (S 1, σ) U stanju S 1 ako je na ulazu b a na steku 1 ostani u S 1 i obriši (1) sa steka; • (e, S 1, Z 0)→ (S 2, σ) U stanju S 1 bez obzira na ulaz, ako je na steku Z 0 pređi u završno stanje S 2 i obriši (Z 0) sa steka. Time stek ostaje prazan.
Ilustracija rada PA • Neka je na ulazu niska aaabbb: ulaz aaabbb aaabbb stanje S 0 S 0 S 1 S 1 S 2 stek Z 0 11 Z 0 1 Z 0 ε
Konstruisati potisni automat (PA) za jezik “slike u ogledalu” • Ovaj jezik generiše se kontekstno slobodnom gramatikom: – S → a. Sa – S → b. Sb – S→c • Jezik se sastoji od proizvoljne niske {a, b}*, iza koje sledi simbol c a zatim početna niska ispisana u obrnutom redosledu: – L = { xcxr | x {a, b}*}; – Npr. aabcbaa; baacaab
PA za jezik L = { xcxr | x {a, b}*} • U stanju S 0 ako je na ulazu a ili b na stek se upisuje A odnosno B (stek pamti šta je učitano) bez obzira na tekući sadržaj steka; • ako je na ulazu c, sadržaj steka je ostaje nepromenjen, a automat prelazi u stanje S 1; • U stanju S 1 ako je na ulazu a ili b, a na steku A odnosno B, briše se simbol sa steka; • U stanju S 1 bez obzira na ulaz, ako je na steku Z 0 PA prelazi u završno stanje S 2 i briše (Z 0) sa steka. Time stek ostaje prazan.
Ilustracija rada PA • Neka je na ulazu niska aabcbaa: ulaz stanje aabcbaa aabcbaa aabcbaa stek S 0 S 0 S 1 S 1 S 2 Z 0 AAZ 0 BAAZ 0 ε • Neka je na ulazu niska aabcbba: ulaz stanje aabcbba aabcbba stek S 0 S 0 S 1 S 1 Z 0 AAZ 0 BAAZ 0 • Blokada rada – niska se ne prihvata
Još jedan PA koji broji • Jezik J {a, b}*, takav da niske jezika imaju isti broj simbola a i b i završavaju se sa c – • Gramatika koja generiše ovaj jezik bila bi: 1. 2. 3. 4. 5. • Npr. aababbc, babbabaac S → a. XAc | b. YBc XA → a. XXA | Ab | b XAb → b. XA YB → b. YYB | Ba | a YBa → a. YB Kako bi se generisala niska aababbc – S → 1 a. XAc → 2 aa. XAbc → 3 aab. XAc → 2 aaba. XAbc → 3 aabab. XAc → 3 aababbc
PA automat za jezik J • Automat ima samo jedno stanje S 0; • Na početku, kada je na steku Z 0 , ako je na ulazu simbol a na stek se upisuje A, a ako je na ulazu b na stek se upisuje B; • Dalje, ako je na steku A i na ulazu a dodaje se na stek novo A, ako je na steku B i na ulazu b dodaje se na stek novo B; • Ako je na steku A i na ulazu b briše se A sa steka (upareno b s prethodnim a), ako je na steku B i na ulazu a briše se B sa steka (upareno a s prethodnim b); • Ako je na ulazu c, i na steku Z 0 PA briše se (Z 0) sa steka. Time stek ostaje prazan.
Ilustracija rada PA • Neka je na ulazu niska aababbc: ulaz stanje aababbc aababbc stek S 0 S 0 Z 0 AZ 0 AAZ 0 ε
Nedeterministički potisni automati • Definicija potisnih automata pokriva i nedeterminističke potisne automate. • Da bi PA bio deterministički mora da bude zadovoljeno sledeće: – U skupu pravila automata ne postoje dva pravila prelaska sa identičnim levim stranama • Što znači da za isto stanje automata, isti ulazni simbol i isti simbol na vrhu steka postoji najviše jedna mogućnost za nastavak rada; – Ne postoje dva pravila prelaska čije se leve strane razlikuju samo u upotrebi simbola e prema nekom alfabetskom simbolu • Jer simbol e obuhvata svaki alfabetski simbol; odnosi se i na ulazni alfabet i na alfabet steka.
Odnos deterministički i nedeterminističkih PA • U slučaju konačnih automata pokazali smo da su deterministički i nedeterministički automati ekvivalentni (u odnosu na jezike koje prihvataju); • U slučaju potisnih automata to nije slučaj: – Postoje jezici koje prihvataju nedeterministički PA a za koje ne postoji deterministički PA koji ih prihvata.
Primer jezika za koji postoji NPA, a ne postoji DPA • Takav je jezik “slike u ogledalu” ali bez graničnog simbola koji razdvaja dve slike. • Gramatika koja generiše ovaj jezik je: – S → a. Sa | b. Sb – S → aa | bb • U toku rada NPA mora posle svakog učitanog simbola da pravi pretpostavku: 1. Da je stigao do sredine niske; 2. Da nije stigao do sredine niske.
NDA koji prihvata jezik L = { xxr | x {a, b}*} • NPA svaki put kada naiđe na aa ili bb na ulazu može da nastavi po dva puta: – Jeste sredina niske (a, S 0, A) → (S 1, σ) – Nije sredina niske (a, S 0, A) → (S 0, A) • Ako niska jeste oblika “slika u ogledalu”, postojaće samo jedna sekvencija koraka koja dovodi do njenog prihvatanja.
Jednostavniji zapis NDA koji prihvata L = { xxr | x {a, b}*} • Ovaj automat je nedeterministički zbog upotrebe slova e – Pravila (a, S 0, e) → (S 0, A) i (a, S 0, A) → (S 1, σ) imaju istu levu stranu do na simbol e na steku; – Pravila (b, S 0, e) → (S 0, B) i (b, S 0, B) → (S 1, σ) imaju istu levu stranu do na simbol e na steku.
Primer upotrebe (konačnih) automata u obradi prirodnih jezika
Automati u obradi prirodnih jezika • Koriste se u mnoge svrhe, na mnogo načina, u okviru različitog softvera • Ovde ćemo ilustrovati korišćenje pomoću Unitex-a • Na primeru romana „Čedomir Ilić“ Milutina Uskokovića
Jednostavan graf – lično ime, prezime ili nadimak na početku rečenice • Kako se tumači ovaj graf? • Rezultati <N+First+SR: s 1> {S} S 0 S 1 S 2 <N+Last+SR: s 1> <N+Nick+SR: s 1>
Prosta rečenica – subjekat predikat • Iza subjekat – koji je na početku rečenice, lično ime – dolazi glagol: prezent, aorist ili imperfekat. • Samo dva pogotka
Prosta rečenica – glagol može biti i povratni • Dodata je povratna rečca „se“ • Povećao se broj pogodaka na 7 • Ono što nisu lična imena – Oblak i Mladić – to potencijalno mogu da budu.
Prosta rečenica – može postojati negacija • • Dodata je rečca „ne“ za negaciju Važan je redosled – rečca „se“ pa negacija „ne“ odgovara reg. izrazu se ne? <V+Ref: Pzs: Azs: Izs> Broj pogodaka je 8
Prosta rečenica – subjekat može da bude i lična zamenica • Dodat je novi alternativni čvor za subjekat • 14 pogodaka
Složeniji primer • Rečenice u kojima se neka reč (od bar 4 slova da bi se isključile rečce i sl. ) ponavlja u okviru iste rečenice ili fraze • 117 pogodaka – tekst je modifikovan, dodata je na kraju reč koja se ponavlja.
Zaključak • Ako vas sve ovo interesuje i ako vam se dopada • i ako upišete master studije sledeće godine na našem fakultetu • možemo ovim da se bavimo detaljno u okviru predmeta Napredne jezičke tehnologija
- Slides: 30