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

Loading in 2 Seconds...

play fullscreen
1 / 19

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


  • 118 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Parsing: Top-down en bottom-up' - shanta


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
parsing top down en bottom up

Parsing:Top-down en bottom-up

Natuurlijke taalverwerking

week 6

bomen
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

bomen1
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

dcg met bomen
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

dcg s en links recursie
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

links recursie meer voorbeelden
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

oplossing 1 aanpassen grammatica
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

nadelen oplossing 1
Nadelen Oplossing 1
  • wel dezelfde strings, niet dezelfde bomen

n

n

pp*

n

pp

n

pp

pp*

n

n

pp

n

pp

Natuurlijke Taalverwerking

parsing
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

top down parser in prolog
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

shift reduce parsing
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

bottom up parsing
bottom-up parsing
  • de hond snurkt
  • DET hond snurkt
  • DET N snurkt
  • NP snurkt
  • NP V
  • NP VP
  • S

Natuurlijke Taalverwerking

shift reduce algoritme
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

shift reduce algoritme1
Shift-reduce algoritme

Natuurlijke Taalverwerking

shift reduce in prolog
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

shift in prolog
Shift in Prolog

shift([Woord|Invoer],Invoer,Cat) :-

woord(Woord,Cat).

Natuurlijke Taalverwerking

reduce in prolog i
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

reduce in prolog ii
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

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