Morfologisk analys i DCG Introduktion till lingvistik och datalingvistik

3 augusti 2001
GÖTEBORGS UNIVERSITET
Utbildningsprogrammet i datalingvistik
Robert Andersson
LABORATION 3: Morfologisk analys i DCG
Introduktion till lingvistik och datalingvistik XD1110
Inledning
Den morfologiska strukturen hos (böjda) substantiv i svenska kan beskrivas med en enkel DCG
n(n(Stam, Num, Best, Case)) -->
n_stem(Stem, Num, Dekl),
num(Num, Dekl),
def(Def, Num, Dekl),
case(Case, Dekl, Def).
Enligt denna grammatik skulle ett substantiv som fiskarnas ges följande strukturella analys
n(stem(fisk),num(plur),def(def),case(gen))
För att enkelt kunna använda denna grammatik för att parsa ord så representerar vi ett ord som
en lista med teckenkoder.
Till vår hjälp har vi de två predikaten analysera/0 och generera/0. De båda predikaten finns
definierade i filen /users/ling/ra/publik/kurser/xd1110/lab3.pl. Den finns även att ladda
ned från min hemsida på url http://www.ling.gu.se/~ra/. Relationsschema och en förklarande
kommentar ges här
%% analysera
%% Läser in ett ord (som en sträng) från användaren och försöker sedan
%% skriva ut en morfologisk analys för detta ord
%% generera
%% Skriver ut samtliga ord som grammatiken kan generera samt deras
%% respektive morfologiska analys
Dessutom behöver vi ange ett lämpligt morfologiskt lexikon (det vill säga en förkortning över de
morfer som kan realisera olika typer av morfem)
n_stem(n_stem(fisk))
--> "fisk".
num(num(sing))
num(num(plur))
--> "".
--> "ar".
def(def(indef))
def(def(def))
--> "".
--> "na".
case(case(nom))
case(case(gen))
--> "".
--> "s".
Fråga: Varför måste morferna anges inom dubbla citationstecken?
1
Uppgift 1
Utvidga ovanstående grammatik så att även följande substantiv kan analyseras
fisken
äpplets
kvinnans
äpplena
kvinnornas
skon
bilen
bok
husen
böckerna
En analys av ordet fisken
| ?- analysera.
Skriv in det ord du vill ha en morfologisk analys av
|: fisken
Ordet ger den morfologiska analysen
n(n_stem(fisk),num(sing),def(def),case(nom))
yes
Uppgift 2
Det är troligt att er morfologiska analysator övergenererar och till exempel tillåter följande något
märkliga substantiv
fiskna
kvinnar
böcken
Fundera på hur man skulle kunna eliminera detta problem och modifiera grammatiken så att den
undviker dessa problem.
Ytterliggare ett problem är ordet hus som i genitiv troligtvis kommer att genereras som huss
av er grammatik. Fundera även över detta och gör gärna ett försök att skriva en ny grammatik
som undviker det här problemet.
En testörning på en korrekt grammatik borde ge följande resultat
| ?- generera.
Dessa ord genereras av grammatiken
kvinna
kvinnas
kvinnan
kvinnans
kvinnor
kvinnors
kvinnorna
kvinnornas
fisk
fisks
fisken
fiskens
fiskar
fiskars
fiskarna
fiskarnas
bil
bils
bilen
bilens
bilar
n(n_stem(kvinn),num(sing),def(indef),case(nom))
n(n_stem(kvinn),num(sing),def(indef),case(gen))
n(n_stem(kvinn),num(sing),def(def),case(nom))
n(n_stem(kvinn),num(sing),def(def),case(gen))
n(n_stem(kvinn),num(plur),def(indef),case(nom))
n(n_stem(kvinn),num(plur),def(indef),case(gen))
n(n_stem(kvinn),num(plur),def(def),case(nom))
n(n_stem(kvinn),num(plur),def(def),case(gen))
n(n_stem(fisk),num(sing),def(indef),case(nom))
n(n_stem(fisk),num(sing),def(indef),case(gen))
n(n_stem(fisk),num(sing),def(def),case(nom))
n(n_stem(fisk),num(sing),def(def),case(gen))
n(n_stem(fisk),num(plur),def(indef),case(nom))
n(n_stem(fisk),num(plur),def(indef),case(gen))
n(n_stem(fisk),num(plur),def(def),case(nom))
n(n_stem(fisk),num(plur),def(def),case(gen))
n(n_stem(bil),num(sing),def(indef),case(nom))
n(n_stem(bil),num(sing),def(indef),case(gen))
n(n_stem(bil),num(sing),def(def),case(nom))
n(n_stem(bil),num(sing),def(def),case(gen))
n(n_stem(bil),num(plur),def(indef),case(nom))
2
bilars
bilarna
bilarnas
bok
boks
boken
bokens
böcker
böckers
böckerna
böckernas
sko
skos
skon
skons
skor
skors
skorna
skornas
hus
hus
huset
husets
hus
hus
husen
husens
äpple
äpples
äpplet
äpplets
äpplen
äpplens
äpplena
äpplenas
n(n_stem(bil),num(plur),def(indef),case(gen))
n(n_stem(bil),num(plur),def(def),case(nom))
n(n_stem(bil),num(plur),def(def),case(gen))
n(n_stem(bok),num(sing),def(indef),case(nom))
n(n_stem(bok),num(sing),def(indef),case(gen))
n(n_stem(bok),num(sing),def(def),case(nom))
n(n_stem(bok),num(sing),def(def),case(gen))
n(n_stem(böck),num(plur),def(indef),case(nom))
n(n_stem(böck),num(plur),def(indef),case(gen))
n(n_stem(böck),num(plur),def(def),case(nom))
n(n_stem(böck),num(plur),def(def),case(gen))
n(n_stem(sko),num(sing),def(indef),case(nom))
n(n_stem(sko),num(sing),def(indef),case(gen))
n(n_stem(sko),num(sing),def(def),case(nom))
n(n_stem(sko),num(sing),def(def),case(gen))
n(n_stem(sko),num(plur),def(indef),case(nom))
n(n_stem(sko),num(plur),def(indef),case(gen))
n(n_stem(sko),num(plur),def(def),case(nom))
n(n_stem(sko),num(plur),def(def),case(gen))
n(n_stem(hus),num(sing),def(indef),case(nom))
n(n_stem(hus),num(sing),def(indef),case(gen))
n(n_stem(hus),num(sing),def(def),case(nom))
n(n_stem(hus),num(sing),def(def),case(gen))
n(n_stem(hus),num(plur),def(indef),case(nom))
n(n_stem(hus),num(plur),def(indef),case(gen))
n(n_stem(hus),num(plur),def(def),case(nom))
n(n_stem(hus),num(plur),def(def),case(gen))
n(n_stem(äpple),num(sing),def(indef),case(nom))
n(n_stem(äpple),num(sing),def(indef),case(gen))
n(n_stem(äpple),num(sing),def(def),case(nom))
n(n_stem(äpple),num(sing),def(def),case(gen))
n(n_stem(äpple),num(plur),def(indef),case(nom))
n(n_stem(äpple),num(plur),def(indef),case(gen))
n(n_stem(äpple),num(plur),def(def),case(nom))
n(n_stem(äpple),num(plur),def(def),case(gen))
yes
Inlämning
Minimalt ska ni lämna in en grammatik som tillåter substantiven i uppgift 1 samt de modifieringar
som krävs för att eliminera de problematiska formerna i uppgift 2. Ni ska också lämna in en
fundering om vad som kan göras för att ta hand om huss-problemet. Alternativt kan ni lämna in
en grammatik som dessutom löser problemet.
3