De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Definite Clause Grammar Natuurlijke taalverwerking week 5.

Verwante presentaties


Presentatie over: "Definite Clause Grammar Natuurlijke taalverwerking week 5."— Transcript van de presentatie:

1 Definite Clause Grammar Natuurlijke taalverwerking week 5

2 Natuurlijke Taalverwerking2 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.

3 Natuurlijke Taalverwerking3 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.

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

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

6 Natuurlijke Taalverwerking6 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).

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

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

9 Natuurlijke Taalverwerking9 Voorbeeld 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]. ? s([het,kind,koopt,een,ijsje,in,het,park],[]).

10 Natuurlijke Taalverwerking10 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!

11 Natuurlijke Taalverwerking11 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).

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

13 Natuurlijke Taalverwerking13 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).

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

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

16 Natuurlijke Taalverwerking16 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].

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

18 Natuurlijke Taalverwerking18 Accolades 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). Soms is het handig `gewone’ Prolog-code en DCG-notatie te combineren. v(1,enk,P0,P1) :- ‘C’(P0,Wd,P1), ww(Wd,_,_).

19 Natuurlijke Taalverwerking19 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)


Download ppt "Definite Clause Grammar Natuurlijke taalverwerking week 5."

Verwante presentaties


Ads door Google