De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

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

Verwante presentaties


Presentatie over: "Parsing: Top-down en bottom-up Natuurlijke taalverwerking week 6."— Transcript van de presentatie:

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

2 Natuurlijke Taalverwerking2 Bomen m d1 dndn d11d12 slaapt een lokale boom bestaat uit een moeder en een willekeurig aantal dochters Dochters kunnen zelf weer bomen zijn of een woord. ……...

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

4 Natuurlijke Taalverwerking4 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)])])

5 Natuurlijke Taalverwerking5 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.

6 Natuurlijke Taalverwerking6 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] ; [].

7 Natuurlijke Taalverwerking7 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.

8 Natuurlijke Taalverwerking8 Nadelen Oplossing 1 wel dezelfde strings, niet dezelfde bomen n n n n n pp n n pp*

9 Natuurlijke Taalverwerking9 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.

10 Natuurlijke Taalverwerking10 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).

11 Natuurlijke Taalverwerking11 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!

12 Natuurlijke Taalverwerking12 bottom-up parsing de hond snurkt DET hond snurkt DET N snurkt NP snurkt NP V NP VP S

13 Natuurlijke Taalverwerking13 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 C 1 …C n op de stapel door C 0 als er een regel C 0 --> C 1 …C n bestaat.

14 Natuurlijke Taalverwerking14 Shift-reduce algoritme

15 Natuurlijke Taalverwerking15 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]).

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

17 Natuurlijke Taalverwerking17 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!

18 Natuurlijke Taalverwerking18 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.

19 Natuurlijke Taalverwerking19 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…...


Download ppt "Parsing: Top-down en bottom-up Natuurlijke taalverwerking week 6."

Verwante presentaties


Ads door Google