De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Definite Clause Grammar

Verwante presentaties


Presentatie over: "Definite Clause Grammar"— Transcript van de presentatie:

1 Definite Clause Grammar
Natuurlijke taalverwerking week 5

2 Zinsontleden in Prolog: parsing as deduction
Een herschrijfregel vertoont enige overeenkomst met een Prolog-regel: S --> NP VP Je kunt een S afleiden door een NP en een VP af te leiden s :- np, vp. Natuurlijke Taalverwerking

3 Zinsontleden in Prolog
Verschil tussen herschrijfregel en Prolog:(woord-)volgorde. De volgende Prolog-regels zijn equivalent: s :- np, vp. s :- vp, np s :- np, vp, np. De corresponderende herschrijfregels niet. Natuurlijke Taalverwerking

4 Woordvolgorde toevoegen
s(P0,P1) : een s van positie P0 tot P1. s(P0,P2) :- np(P0,P1), vp(P1,P2). Regels die woorden introduceren: np(P0,P1) :- woord(P0,jan,P1). Invoer weergeven (assert) als: woord(0,de,1). woord(1,man,2). woord(2,slaapt,3). Natuurlijke Taalverwerking

5 Stringposities als lijsten
Invoer: [de,man,slaapt] Positie 0: [de,man,slaapt] Positie 1: [man,slaapt] Positie 2: [slaapt] Positie 3: [] (tevens: zinseinde) Invoer hoef je nu niet meer apart toe te voegen: Natuurlijke Taalverwerking

6 Natuurlijke Taalverwerking
Posities als lijsten: ? s([de,man,slaapt],[]). ? det([de,man,slaapt],P1) ? woord([de,man,slaapt],de,P1). algemene regel: woord([Woord|Wn],Woord,Wn). Natuurlijke Taalverwerking

7 Definite clause grammar
Iedere herschrijfregel bevat twee argumenten die stringposities coderen. Regels die een woord introduceren, verwijderen (‘poppen’) het eerste woord van een lijst. Deze twee mechanismen zijn ingebouwd in de Prolog DCG-notatie. Natuurlijke Taalverwerking

8 Definite clause grammar II
s --> np, vp. vertaalt als s(P0,P2) :- np(P0,P1), vp(P1,P2). np --> [jan]. np(P0,P1) :- ‘C’(P0,jan,P1). (‘C’ is Sicstus’ voor woord.) Natuurlijke Taalverwerking

9 Voorbeeld ? s([het,kind,koopt,een,ijsje,in,het,park],[]).
s --> np, vp. np --> det, n. vp --> v, np. vp --> v, np, pp. vp --> v, pp. pp --> p, np. det --> [een]. det --> [het]. n --> [kind]. n --> [ijsje]. n --> [park]. v --> [koopt]. v --> [loopt]. v --> [in]. Natuurlijke Taalverwerking

10 Strings als difference lists
Dit is een alternatieve manier om CFG-regels als Prolog op te schrijven: s(String) :- append(NP,VP,String), np(NP), vp(VP). np([jan]). vp(String) :- append(V,NP,String), v(V), np(NP). Nadeel : non-deterministisch gebruik van append! Natuurlijke Taalverwerking

11 Strings als difference-lists
Je kunt de string-posities van een DCG ook zien als een difference-list, die append overbodig maakt: s(In,Out) :- np(In,Mid), vp(Mid,Out). vp(In,Out) :- v(In,Mid), np(Mid,Out). np([jan|Rest],Rest). Natuurlijke Taalverwerking

12 Congruentie/Agreement
Het onderwerp van de zin moet overeenstemmen in persoon en getal met de persoonsvorm: ik denk aan Henk * zij denkt aan Henk wij denken aan Henk *hij denken aan Henk Natuurlijke Taalverwerking

13 Natuurlijke Taalverwerking
DCG is veel meer dan CFG s > np(P,G), vp(P,G). vp(P,G) --> v(P,G), pp. np(1,enk) --> [ik]. np(1,mv) --> [wij]. v(1,enk) --> [denk]. v(1,mv) --> [denken]. s(P0,P2) :- np(P,G,P0,P1),vp(P,G,P1,P2). Natuurlijke Taalverwerking

14 Natuurlijke Taalverwerking
De/Het-onderscheid np --> det(Det), n(Det). det(de) --> [de]. det(het) --> [het]. det(_) --> [een]. n(de) --> [hond]. n(het) --> [hondje]. Natuurlijke Taalverwerking

15 Selectie van argumenten
Werkwoorden leggen restricties op aan de argumenten waarmee ze combineren: Wim slaapt / *Wim slaapt Ben Wim kent Ben / *Wim kent Wim denkt aan Ben *Wim denkt van Ben Natuurlijke Taalverwerking

16 Selectie van argumenten
vp --> v(intrans). vp --> v(trans), np. vp --> v(Prep), pp(Prep). pp(Prep) --> p(Prep), np. v(intrans) --> [slaapt]. v(trans) --> [kent]. v(aan) --> [denk]. p(aan) --> [aan]. Natuurlijke Taalverwerking

17 Natuurlijke Taalverwerking
Het Woordenboek v(1,enk) --> [aai]. v(2,enk) --> [aait]. v(_,mv) --> [aaien]. ….. v(1,enk) --> [zwijg]. v(2,enk) --> [zwijgt]. v(_,mv) --> [zwijgen]. Natuurlijke Taalverwerking

18 Accolades Soms is het handig `gewone’ Prolog-code en DCG-notatie te combineren. v(1,enk) --> [Woord], {ww(Woord,_,_)}. v(2,enk) --> [Woord], {ww(_,Woord,_)}. v(_,mv) --> [Woord], {ww(_,_,Woord)}. ww(aai,aait,aaien). ww(zwijg,zwijgt,zwijgen). v(1,enk,P0,P1) :- ‘C’(P0,Wd,P1), ww(Wd,_,_). Natuurlijke Taalverwerking

19 Natuurlijke Taalverwerking
Links-recursie DCG heeft één groot nadeel: Links-recursieve regels leiden tot een eindeloze lus. n --> n, pp vp --> vp, pp. n(P0,P2) :- n(P0,P1), pp(P1,P2) Natuurlijke Taalverwerking


Download ppt "Definite Clause Grammar"

Verwante presentaties


Ads door Google