1 / 19

Parsing: Top-down en bottom-up

Parsing: Top-down en bottom-up. Natuurlijke taalverwerking week 6. Bomen. een lokale boom bestaat uit een moeder en een willekeurig aantal dochters Dochters kunnen zelf weer bomen zijn of een woord. m. d1. ……. d n. slaapt. d11. d12. Bomen. boom(m,[D1,…,Dn]) woord(dn,slaapt). m.

shanta
Download Presentation

Parsing: Top-down en bottom-up

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Parsing:Top-down en bottom-up Natuurlijke taalverwerking week 6

  2. Bomen • een lokale boom bestaat uit een moeder en een willekeurig aantal dochters • Dochters kunnen zelf weer bomen zijn of een woord. m d1 ……... dn slaapt d11 d12 Natuurlijke Taalverwerking

  3. Bomen • boom(m,[D1,…,Dn]) • woord(dn,slaapt) m d1 ……... dn slaapt d11 d12 b(m,[b(d1,[b(d11,_),b(d12,_)]),…,w(dn,slaapt)]) Natuurlijke Taalverwerking

  4. DCG met bomen • s(b(s,[NP,VP])) --> np(NP), vp(VP). • vp(b(vp,[V])) --> v(V). • np(w(np,jan)) --> [jan]. • ?- s(Boom,[jan,slaapt],[]). • Boom = b(s,[w(np,jan),b(vp,[w(v,slaapt)])]) Natuurlijke Taalverwerking

  5. DCG’s en links-recursie • Prolog gebruikt een top-down zoek-strategie. • Deze is niet geschikt voor links-recursie. • an eet en jan slaapt • s --> s, [en], s. • kaartje met korting • n --> n, pp. Natuurlijke Taalverwerking

  6. Links-recursie: meer voorbeelden • Peter’s (broer’s) huis. • np --> det, n. • det --> np, [s]. • een (erg) aardig kind • n -> a, n. • a -> int, a. • int --> [erg] ; [heel] ; []. Natuurlijke Taalverwerking

  7. Oplossing 1: aanpassen grammatica • n --> n, pp • is equivalent aan • n --> n_wrd, pp_ster. • n_wrd --> [kaartje]. • pp_ster --> pp, pp_ster. • pp_ster --> []. • pp --> p, np. Natuurlijke Taalverwerking

  8. Nadelen Oplossing 1 • wel dezelfde strings, niet dezelfde bomen n n pp* n pp n pp pp* n n pp n pp Natuurlijke Taalverwerking

  9. Parsing • scheid regels (data) en parser (algoritme) • Grammatica-regels: regel(s,[np,vp]). regel(np,[det,n]). woord(det,de). • Dit zijn eenvoudige Prolog-feiten. Natuurlijke Taalverwerking

  10. Top-down parser in Prolog top_down(Cat,P0,P1) :- regel(Cat,Dochters), vind_ds(Dochters,P0,P1). top_down(Cat,[Woord|Wn],Wn) :- woord(Cat,Woord). vind_ds([D1|Ds],P0,P2) :- top_down(D1,P0,P1), vind_ds(Ds,P1,P2). vind_ds([],P0,P0). Natuurlijke Taalverwerking

  11. Shift-reduce parsing • Bottom-up parsing! • Begin bij de woorden in de input, en probeer deze samen te voegen tot zinsdelen. • Probeer zinsdelen samen te voegen tot een zin. • Bottom-up parsers hebben geen last van links-recursie! Natuurlijke Taalverwerking

  12. bottom-up parsing • de hond snurkt • DET hond snurkt • DET N snurkt • NP snurkt • NP V • NP VP • S Natuurlijke Taalverwerking

  13. shift-reduce algoritme • Stapel/Stack: hierop staan tussenresultaten. • Shift-actie : Verwijder het meest linkse woord uit de invoer, en plaats de categorie van het woord op de stapel • Reduce-actie: Vervang C1…Cn op de stapel door C0 als er een regel C0 --> C1…Cn bestaat. Natuurlijke Taalverwerking

  14. Shift-reduce algoritme Natuurlijke Taalverwerking

  15. Shift-reduce in Prolog sr(Invoer,Stapel) :- reduce(Stapel,NwStapel), sr(Invoer,NwStapel). sr(Invoer,Stapel) :- shift(Invoer,RestInvoer), sr(RestInvoer,[Cat|Stapel]). sr([],[s]). Natuurlijke Taalverwerking

  16. Shift in Prolog shift([Woord|Invoer],Invoer,Cat) :- woord(Woord,Cat). Natuurlijke Taalverwerking

  17. Reduce in Prolog I reduce(Stapel,[M|NwStapel]) :- reduce_regel(M,Dochters), append(Dochters,NwStapel,Stapel). reduce_regel(s,[vp,np]). N.B. volgorde van de dochters is omgekeerd! Natuurlijke Taalverwerking

  18. Reduce in Prolog II reduce([vp,np|Stapel],[s|Stapel]). reduce([n,det|Stapel],[np||Stapel). voordeel: geen append. nodig: automatisch omzetten van regels in reduce-predicaten. Natuurlijke Taalverwerking

  19. Bottom-up • voordeel: links-recursie is geen probleem, omdat je vanuit de woorden begint. Het aantal woorden is altijd eindig… • nadeel: epsilon-regels (det --> e) • shift(Invoer,Invoer,det). • Je kunt eindeloos categorieën aan de stapel toevoegen, zonder dat de invoer korter wordt…... Natuurlijke Taalverwerking

More Related