Problem mit Prolog

Hi Sabrina,
also ich verwende die SWI Prolog Version 5.6.64 und wenn ich "map(lieben, E)" eingebe, dann kommt "Error: toplevel: undefinedprocedure map/2 (DWIM could not correct goal). Allerdings lese ich gerade erst, wie dieses map-Prädikat überhaupt funktioniert.
Also das map Prädikat hast du doch ins Spiel gebracht bei deinem Beispiel. Wie auch immer du es nennst, du müßtest ein Prädikat schreiben welches diese Übersetzung macht. Die Übersetzung der Präsens in die Präteritumform an sich ist trivial - das sind ja nur 2 Regeln; die sind dir klar, oder?! ;-)

Gruß
 
Achso ich dachte, Du meintest man könnte dieses map-Prädikat problemnah noch anders einsetzen, als ich es bereits getan hatte.
Das Problem an meiner Lösung ist aber, das ich ja selber den Lexikonbestand an Wörtern angegeben habe (von A wie abbauben, bis W wie wünschen), das heisst meine Lösung funktioniert ja lediglich mit den Wörtern, die ich selber in den bestand eingefügt habe, gesucht ist jedoch ein Prädikat, was diese Aufgabe praktisch on-the-fly erledigt ^^ also was einen generellen Umwandlungsansatz enthält ohne einfach eine vorgefertigte Liste wieder auszugeben. Also es muss ein Wort im Präsens eingelesen werden, dass umgehend in die Vergangenheitsform umgewandelt wird und dann sofort wieder ausgegeben wird, anders als bei meinem Ansatz, der das ja nur für die Wörter kann, die ich eingefügt habe.
Sorry das ich mich da etwas blöd ausgedrückt hatte. Diese zwei trivialen Regeln die Du ansprichst sind mir ansich nicht unbedingt klar, bzw. weiss ich nicht was Du meinst.

Gruß

Sabrina
 
Achso ich dachte, Du meintest man könnte dieses map-Prädikat problemnah noch anders einsetzen, als ich es bereits getan hatte.
Das Problem an meiner Lösung ist aber, das ich ja selber den Lexikonbestand an Wörtern angegeben habe (von A wie abbauben, bis W wie wünschen), das heisst meine Lösung funktioniert ja lediglich mit den Wörtern, die ich selber in den bestand eingefügt habe, gesucht ist jedoch ein Prädikat, was diese Aufgabe praktisch on-the-fly erledigt ^^ also was einen generellen Umwandlungsansatz enthält ohne einfach eine vorgefertigte Liste wieder auszugeben.
Ja, das war mir von Anfang an klar. Ich hätte ausgehend von deinem Beispielcode dein map/2 Prädikat einfach dahingehend geändert.
Diese zwei trivialen Regeln die Du ansprichst sind mir ansich nicht unbedingt klar, bzw. weiss ich nicht was Du meinst.
Na, wie willst du denn grundsätzlich die Übersetzung machen? Nach welchen Regeln erfolgt denn die Übersetzung? Das mußt du dir schon überlegen bevor du überhaupt anfängst ein Programm dafür zu schreiben.

Gruß
 
Grundsätzlich möchte ich ein Wort (schwaches Verb) mit einem Read-Befehl einlesen, dieses Wort dann im günstigsten Fall in seine Silben zerlegen und dann die letzte Silbe einfach mit der Silbe für die Vergangenheitsform ersetzen, also "-te".

z.B.
Eingabe : lieben

Zerlegung in:

lieb-en

Ersetzung von "-en" in "-te"

Vielleicht kann man die Silben ja in Einer Liste erfassen, wo im Head der Stamm steht, z.B. "lieb" und im Tail die Endung, der Tail müsste dann wiederum mit der Endung "-te" ersetzt werden, so dachte ich mir das Ganze.
 
Grundsätzlich möchte ich ein Wort (schwaches Verb) mit einem Read-Befehl einlesen, dieses Wort dann im günstigsten Fall in seine Silben zerlegen
Aha. Und wie? ;-]
und dann die letzte Silbe einfach mit der Silbe für die Vergangenheitsform ersetzen, also "-te".

z.B.
Eingabe : lieben

Zerlegung in:

lieb-en

Ersetzung von "-en" in "-te"
Was ist mit "erobern" o.ä.?
Vielleicht kann man die Silben ja in Einer Liste erfassen, wo im Head der Stamm steht, z.B. "lieb" und im Tail die Endung, der Tail müsste dann wiederum mit der Endung "-te" ersetzt werden, so dachte ich mir das Ganze.
Ja, warum eine Liste? Wie könnte da das atom_concat/3 Prädikat nützlich sein? Ist es notwendig wirklich das Wort in seine Silben zu trennen? (evtl. reicht auch die Endung?)

Gruß
 
Hi DT ;-)

Danke nochmal für Deine ganze Hilfe, also ich seh schon, dass atom_concat Prädikat scheint der Schlüssel zu sein, ich werde mal versuchen mehr über dieses Prädikat herauszubekommen in den Einführungsbüchern, die ich hier habe, ist das Prädikat leider nur rudimentär beschrieben, aber das wird schon, das Netz dürfte da noch etwas zu haben.
Ich denke aber, dass ich mein ganzes Mapkonzept ja dann weitesgehend über Board werfen kann.
Anyway ich melde mich wieder und berichte über meine Fortschritte.

Alles Liebe

Sabrina

:)
 
Hi Sabrina!

Bevor du jetzt einen Haufen Dokumenation liest:

Das atom_concat macht ja im Grunde nichts anders als append/3 für Listen, nur das es eben mit Atomen funktioniert. Als Tipp:
Code:
atom_concat(Stamm, en, spielen).

Und bspw. mit read:
Code:
?- read(Wort), atom_concat(Stamm, en, Wort).
|: spielen.
Wort = spielen,
Stamm = spiel.
Gruß
 
Ich hatte erst an sowas gedacht:

Code:
atom_concat('lieben', ' liebte', PräsensPräteritum).

aber das ist ja echt unkreativ.
 
Hey habe da jetzt glaube ich etwas gefunden:

atom_concat(Stamm, en, spielen), atom_concat(Stamm, te, Präterialform).

Das sollte das Problem zumindest weitesgehend lösen. Leider kann man damit keine Verben, wie "erobern" ableiten, es seidenn mithilfe von folgendem Befehl:

atom_concat(Stamm, rn, erobern), atom_concat(Stamm, rte, Präterialform).

Noch Anmerkungen?

Lieben Gruß

S.
 
Hey habe da jetzt glaube ich etwas gefunden:

atom_concat(Stamm, en, spielen), atom_concat(Stamm, te, Präterialform).

Das sollte das Problem zumindest weitesgehend lösen. Leider kann man damit keine Verben, wie "erobern" ableiten, es seidenn mithilfe von folgendem Befehl:

atom_concat(Stamm, rn, erobern), atom_concat(Stamm, rte, Präterialform).

Noch Anmerkungen?
Das sind genau die 2 Regeln von den ich gesprochen hatte. Die kann man jetzt prima zu einem Prädikat zusammenführen, wobei natürlich das Wort durch eine Variable ersetzt werden muss.

Gruß
 
Zurück