Parsing: Top-down en bottom-up - PowerPoint PPT Presentation

shanta
parsing top down en bottom up n.
Skip this Video
Loading SlideShow in 5 Seconds..
Parsing: Top-down en bottom-up PowerPoint Presentation
Download Presentation
Parsing: Top-down en bottom-up

play fullscreen
1 / 19
Download Presentation
Parsing: Top-down en bottom-up
125 Views
Download Presentation

Parsing: Top-down en bottom-up

- - - - - - - - - - - - - - - - - - - - - - - - - - - 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