ich habe aktuell ein Prolog-Programm, dass prüft, ob ein Satz korrekt ist oder nicht.
Dafür werden die einzelnen Satzbestandteile mittels member geprüft.
satz(In) :- satz(In,[]).
satz(In,Rest) :- nominalphrase(_,nom,In,R), verbalphrase(R,Rest).
nominalphrase(Genus,Kasus,In,Rest) :- artikel(Genus, Kasus, In, R),adjektiv(In,R) ;nomen(Genus, R, Rest).
verbalphrase(In,Rest) :- verbintransitiv(In,Rest); verbtransitiv(In,R), nominalphrase(_,akk,R,Rest).
artikel(m,nom,In,Rest) :- match(A,In,Rest), member(A,[der,il]).
artikel(f,nom,In,Rest) :- match(A,In,Rest), member(A,[die,la]).
artikel(m,akk,In,Rest) :- match(A,In,Rest), member(A,[den,il]).
artikel(m,akk,In,Rest) :- match(A,In,Rest), member(A,[die,i]).
artikel(f,akk,In,Rest) :- match(A,In,Rest), member(A,[die,le]).
verbintransitiv(In,Rest) :- match(V, In, Rest), member(V,[schläft,dorme]).
verbtransitiv(In,Rest) :- match(V, In, Rest), member(V,[sieht,vede]).
verbtransitiv(In,Rest) :- match(V, In, Rest), member(V,[sehen,vedono]).
adjektiv(In,Rest) :- match(V, In, Rest), member(V,[große,grande]).
adjektiv(In,Rest) :- match(V, In, Rest), member(V,[schönen,belle]).
nomen(m,In,Rest) :- match(V,In,Rest),member(V,[mann,uomo]).
nomen(m,In,Rest) :- match(V,In,Rest),member(V,[männer,uomini]).
nomen(m,In,Rest) :- match(V,In,Rest),member(V,[kater,gatto]).
nomen(f,In,Rest) :- match(V,In,Rest),member(V,[frau,donna]).
nomen(f,In,Rest) :- match(V,In,Rest),member(V,[frauen,donne]).
match(X, [X|Rest], Rest).
Hier steht in der Liste außerdem die Übersetzung des Bestandteils. Gibt es eine Möglichkeit, gezielt, die Übersetzung zu der Satzbestandteile in eine Liste zuführen ?
Ich möchte also eingeben: satz([die, frau, sieht, den, mann]). und als Antwort [la, donna, vede, il, uomo] bekommen. Ich habe aber keine Ahnung, wie ich die Übersetzungen zu den Wörtern rausfiltern kann.