Uppsala universitet
Språkteknologiprogrammet
Logikprogrammering I, vt 2002
Leif-Jöran Olsson

Föreläsning 8: Definite Clause Grammar

Innehåll

  1. Definite Clause Grammar

1 Definite Clause Grammar

En enkel frasstrukturgrammatik

Fragment

lisa springer
lisa skjuter en älg
Grammatik

s --> np, vp.
np --> pn.
np --> det, n.
vp --> iv.
vp --> tv, np.
pn --> [lisa].

det --> [en].

n --> [älg].

iv --> [springer].
tv --> [skjuter].

Igenkänning och generering

Igenkänning
?- s([lisa,springer],[]).
yes
?- s([springer,lisa],[]).
no
Generering

?- s(Sent,[]).
Sent = [lisa,springer] ;
Sent = [lisa,skjuter,lisa] ;
Sent = [lisa,skjuter,en,älg] ;
Sent = [en,älg,springer] ;
Sent = [en,älg,skjuter,lisa] ;
Sent = [en,älg,skjuter,en,älg] ;
no

Unifieringsbaserad grammatik

Fragment

en älg, ett lejon
*ett älg, *en lejon
Grammatik

np --> det(Gen), n(Gen).
det(utrum) --> [en].
det(neutrum) --> [ett].
n(utrum) --> [älg]
n(neutrum) --> [lejon].
?- np([en,älg],[]).
yes

? - np([ett,älg],[]).
no

Ett exempel från engelskan

Grammatik
s --> np(Num,nom), vp(Num).
np(Num,Case) --> pron(Num,Case).
np(Num,_) --> det(Num), n(Num).
vp(Num) --> v(Num), np(_,acc).
pron(sg,nom) --> [he];[she].
pron(sg,acc) --> [him];[her].
pron(pl,nom) --> [they].
pron(pl,acc) --> [them].
det(sg) --> [a].
det(_) --> [the].
n(sg) --> [dog];[cat].
n(pl) --> [dogs];[cats].
v(sg) --> [chases].
v(pl) --> [chase].
?- s([she,chases,him],[]).
yes
?- s([him,chases,she],[]).
no

Senast ändrad av Leif-Jöran Olsson 2002-05-23 20:17