Autor |
Nachricht |
< Adjektivendung mit [^] im Objektnamen. |
|
Verfasst am:
So, 21 Feb 2010 - 22:35
|
|
|
Wasserträger

Anmeldungsdatum: 25.01.2010
Beiträge: 37
Wohnort: Wien
|
|
Im Zuge meines ersten IF-Projektes bin ich auf ein weiteres Problem gestoßen:
Erstmal mein Beispielcode:
Code: | [Spieler Auto]
The PlayerAuto is a neuter vehicle in the Vor dem Jarden.
The printed name of the PlayerAuto is "[one of]silbern[^][or]blau[^][or]rot[^][or]schwarz[^][sticky random] Auto".
The special indefinite article of the PlayerAuto is YOURS.
Understand "Auto" as the PlayerAuto.
The description of the PlayerAuto is "Was würdest du nur ohne dein [PlayerAuto] tun? Wahrscheinlich wieder Radfahren..."
The initial appearance of the PlayerAuto is "Dein [PlayerAuto] strahlt im dumpfen Licht des [Fenster]s." |
Das Problem hiermit ist folgendes:
Wenn ich dem Objekt keine initial apperance hinzufüge, wird es richtig als "schwarzes Auto" beschrieben, ebenso ist es in der Beschreibung richtig.
In der initial appearance fehlt die Endung allerdings und es wird als "schwarz Auto" ausgegeben.
Auch wenn ich das Objekt in der Einleitung verwende, also z.B.
Code: | When play begins:
say "[paragraph break][bold type]Einleitung:[roman type][line break]Gerade bist du aus deinem [PlayerAuto] ausgestiegen und stehst nun auf dem Parkplatz vor dem Krankenhaus.[paragraph break]". |
Auch hier wird nur "schwarz Auto" geschrieben. Gibt es eine Möglichkeit dieses Problem anders zu lösen?
MfG |
|
|
|
 |
|
Verfasst am:
Mo, 22 Feb 2010 - 0:02
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Tja, I7 auf Deutsch ist leider nicht immer so intuitiv zu benutzen. Wenn Du per "[PlayerAuto]" den Objektnamen ohne Artikel ausgibst, wird die [^]-Endung nicht gesetzt (und auch keine andere), weil dem Programm der Kasus nicht bekannt ist, in dem die Endung stehen soll.
Du hast ja durch
The special indefinite article of the PlayerAuto is YOURS.
dafür gesorgt, dass bei der Ausgabe mit unbestimmtem Artikel "dein" geschrieben wird. Deshalb gibt
The initial appearance of the PlayerAuto is "[Ein PlayerAuto] strahlt im dumpfen Licht des Fensters."
auch alles korrekt aus -- denn jetzt ist der Fall, der Nominativ, bekannt und der unbestimmte Artikel "Ein" ist jetzt "Dein":
Mein Testspiel hat folgendes geschrieben: | Labor
Dein rotes Auto strahlt im dumpfen Licht des Fensters. |
Eine andere Möglichkeit ist, die GerX-Textersetzung "[Objekt with <case>]" zu verwenden, die für genau einen solchen Fall, wie Du ihn beschrieben hast, vorgesehen ist.
The initial appearance of the PlayerAuto is "Dein [PlayerAuto with nominative] strahlt im dumpfen Licht des Fensterrestarts."
Bei deinem Beispiel wird 'PlayerAuto' übrigens mit ins Vokabular übernommen. (Es sei denn, du hast es privately-named gemacht.)
Mein Testspiel hat folgendes geschrieben: | >u playerauto
Was würdest du nur ohne dein rotes Auto tun? Wahrscheinlich wieder Radfahren... |
Grüße,
Christian |
|
|
|
 |
|
Verfasst am:
Mo, 22 Feb 2010 - 3:37
|
|
|
Wasserträger

Anmeldungsdatum: 25.01.2010
Beiträge: 37
Wohnort: Wien
|
|
Danke Christian,
Die Ersetzung mit [Ein PlayerAuto] funktioniert soweit, nur leider geht dadurch die ebenfalls von mir benutzte Keyword-Färbung von Keyword Interface verloren.
Die Ersetzung [PlayerAuto with nominative] funktioniert bei mir seltsamerweise nicht. Ich benutze die letzte Version von Gerx (mit PENDING special indefinite article) und die neueste Version des von dir kompilierten Compilers.
Folgende Fehlermeldung wird ausgegeben:
Code: | I was expecting that 'PlayerAuto with nominative' would be something to 'say', but it didn't look like any form of 'say' that I know. So I tried to read 'PlayerAuto with nominative' as a value of some kind (because it's legal to say values), but couldn't make sense of it that way either.
|
Ich habe es auch in einem Projekt nur mit der German Extension und allen anderen deaktiviert versucht, selbes Ergebnis.
Ein weiteres Problem:
Code: | The Eingangstuer is a female door. It is west of the Jarden Garten and east of the Jardenhaus Erdgeschoss.
The printed name of the Eingangstuer is "Eingangstür". The Eingangstuer is privately-named.
The description of the Eingangstuer is "Eine simple, blaue Holztür." Understand "Eingangstuer" or "Eingang" or "Tuer" as the Eingangstuer. |
Seltsamerweise funktioniert in diesem Beispiel nur "x Tür", Eingang oder Eingangstür werden nicht als Namen anerkannt.
MfG |
|
|
|
 |
|
Verfasst am:
Mo, 22 Feb 2010 - 9:06
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Strainer hat folgendes geschrieben: | Die Ersetzung [PlayerAuto with nominative] funktioniert bei mir seltsamerweise nicht. |
Sorry, die Phrase müsste lauten "[PlayerAuto with case nominative]"; ein Blick in den Phrasen-Index (Saying - Names with cases) hat mich drauf gebracht. Das steht leider auch falsch in der Doku. Aber mit gefällt die Kurzform ohne "case" eh besser. Vielleicht änder ich das mal. Oder man nimmt eine deutsche Phrase, die besser in die deutschen Ausgabetexte passt, z.B. "Dein [Fahrzeug im Nominativ] steht zur Abfahrt bereit.". Das gefällt mir eigentlich ganz gut.
Zitat: | Seltsamerweise funktioniert in diesem Beispiel nur "x Tür", Eingang oder Eingangstür werden nicht als Namen anerkannt. |
Kann ich hier nicht reproduzieren. Alle Vokabeln werden bei mir korrekt verstanden. Dein Code ist korrekt. |
|
|
|
 |
|
Verfasst am:
Mo, 22 Feb 2010 - 13:35
|
|
|
Wasserträger

Anmeldungsdatum: 25.01.2010
Beiträge: 37
Wohnort: Wien
|
|
Danke, [with case nominative] funktioniert perfekt.
Ich habe mich im unteren Beispiel schlecht ausgedrückt:
Ich versuche das Spiel mit Keyword Interface von Aaron Reed zu steuern, weshalb ich auch jeweils die Keywords benutze.
In diesem Fall funktionieren auch bei mir alle entsprechungen wie "x eingang", allerdings funktioniert als keyword nur "Tür". Daraus schließe ich das es mit Keyword Interface zu tun hat, werde ich mir noch genauer ansehen müssen.
Wie immer: Besten Dank für die schnelle Hilfe.
MfG |
|
|
|
 |
|
Verfasst am:
Do, 25 Feb 2010 - 0:31
|
|
|
Wasserträger

Anmeldungsdatum: 25.01.2010
Beiträge: 37
Wohnort: Wien
|
|
So, ich habe jetzt weiter getestet und bin auf folgendes gestoßen:
Include German by Banbury & Christian Bluemke.
Include Keyword Interface by Aaron Reed.
[Eingangstür]
The Eingangstuer is a female door. It is west of the Garten and east of the Erdgeschoss.
The printed name of the Eingangstuer is "Eingangstür".
The description of the Eingangstuer is "Eine simple Holztür mit einem undurchsichtigen Buntglasfenster."
Understand "Eingang" or "Tuer" as the Eingangstuer.
Bei diesem Code bekomme ich folgenden Output:
Code: | Garten
Du siehst hier eine Eingangstür.
>tür
Eine simple Holztür mit einem undurchsichtigen Buntglasfenster.
>eingang
That's neither a verb I recognise nor a keyword you can use right now.
>eingangstür
That's neither a verb I recognise nor a keyword you can use right now.
>eingangstuer
That's neither a verb I recognise nor a keyword you can use right now.
>tür
Eine simple Holztür mit einem undurchsichtigen Buntglasfenster.
>tuer
Eine simple Holztür mit einem undurchsichtigen Buntglasfenster.
> |
Wenn ich allerdings GerX entferne sieht der Output so aus:
Code: | Garten
You can see an Eingangstür here.
>eingang
Eine simple Holztür mit einem undurchsichtigen Buntglasfenster.
>eingangstür
Eine simple Holztür mit einem undurchsichtigen Buntglasfenster.
>tür
That's neither a verb I recognise nor a keyword you can use right now.
>tuer
Eine simple Holztür mit einem undurchsichtigen Buntglasfenster.
> |
Es dürfte also doch an Problemen zwischen dem Keyword Interface und GerX liegen, seltsamerweise tritt dieses Problem aber (bisher) nur bei den Beiden Worten "Eingang" und "Eingangstuer" auf.
Werde vorerst auch ohne diese Worte auskommen können, es wundert mich einfach nur das es gerade hier auftritt.
Edit:
Könnte es evtl. mit der Vorsilbe "ein" zu tun haben. Es scheinen nämlich alle Worte die damit beginnen nicht im Keyword Interface zu funktionieren.
MfG |
|
|
|
 |
|
Verfasst am:
Do, 25 Feb 2010 - 1:44
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Bei mir funktioniert Keyword Interface überhaupt nicht mit GerX. Was benutzt du denn für eine Version?
Edit: Ich habe die Richtungen mal auskommentiert. Dann compiliert es wenigstens durch.
Wenn ich Deine Understand-Zeile weglasse, wird "eingangstür" als Keyword verstanden. Daran liegt's also nicht. Aber was da los ist, weiß ich nicht, da ich Aarons Extension noch nicht durchschaue. Aber ich fürchte, die muss man an den deutschen Parser anpassen. Wie auch immer. |
|
|
|
 |
|
Verfasst am:
Do, 25 Feb 2010 - 12:42
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Strainer hat folgendes geschrieben: | Könnte es evtl. mit der Vorsilbe "ein" zu tun haben. Es scheinen nämlich alle Worte die damit beginnen nicht im Keyword Interface zu funktionieren. |
Das schint doch das Problem zu sein. Wenn das erste Wort der Eingabe mit "ein" beginnt, nimmt der Parser an, es handle sich um eine Infinitiv-Form wie z.B. "einschlafen", die dann vor dem eigentlichen Parsen in "schlaf ein" umgewandelt wird.
Wenn ich "ein" aus der Tabelle mit den Präpositionen für diesen Vorgang herausnehme (aus der Tabelle LanguageVerbPreps), dann funktioniert es! Vielleicht könnte man CheckInfinitiveClause() dazu überreden, das Verb nicht zu prüfen, wenn es 'no.verb' ist. |
|
|
|
 |
|
Verfasst am:
Do, 25 Feb 2010 - 13:11
|
|
|
Wasserträger

Anmeldungsdatum: 25.01.2010
Beiträge: 37
Wohnort: Wien
|
|
Danke, das Entfernen von ein aus der LanguageVerbPreps Tabelle hat tatsächlich geholfen.
Ich glaube die Vorsilbe "ein" für Infinitivverben zu verlieren ist nicht allzu tragisch, mir fallen da nur wenige passende Situationen ein. (einschalten wäre so eine) Wie du aber schon sagtest, evtl. lässt sich ja mit if-clauses was machen, leider ist GerX so gut wie 100% i6 Code, welchen zu verstehen schon etwas schwieriger ist als i7.
Danke jedenfalls, im Moment komme ich sehr gut auch ohne die Vorsilbe aus und in Zukunft kann ich diese Tabelle nach möglichen Ursachen durchforsten.
MfG |
|
|
|
 |
|
Verfasst am:
Do, 25 Feb 2010 - 13:23
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Strainer hat folgendes geschrieben: | Danke, das Entfernen von ein aus der LanguageVerbPreps Tabelle hat tatsächlich geholfen. |
Aber das kann ja keine dauerhafte Lösung sein. Diese I7-Besonderheit, dass ein einzelnes Nomen eine Aktion auslösen kann (und das verb_word dann 'no.verb' ist) müsste man schon in GerX berücksichtigen, nicht nur in Hinblick auf die Keyword-Extension.
Leider wird verb_word erst nach dem Prüfen auf Konversation -- und damit auch nach dem Prüfen auf einen Infinitv zu 'no.verb'. Hm, das muss bis zum Wochenende warten, wenn nicht jemand anderes vorher noch eine Idee hat ... |
|
|
|
 |
|
Verfasst am:
Do, 25 Feb 2010 - 14:03
|
|
|
Wasserträger

Anmeldungsdatum: 25.01.2010
Beiträge: 37
Wohnort: Wien
|
|
ChristianB hat folgendes geschrieben: | Leider wird verb_word erst nach dem Prüfen auf Konversation -- und damit auch nach dem Prüfen auf einen Infinitv zu 'no.verb'. Hm, das muss bis zum Wochenende warten, wenn nicht jemand anderes vorher noch eine Idee hat ... |
Also bis zum Wochenende ist überhaupt kein Problem Christian, nimm dir bitte alle Zeit die du brauchst, schließlich eilt es keineswegs.
Es ist mir fast schon peinlich, aber bei der Übersetzung einer weiteren Extension, namentlich "Exit Lister von Gavin Lambert" bin ich auf ein weiteres Problem gestoßen, das mit der Eigenheit der deutschen Sprache zusammenhängt.
Das ist der von mir angepasste Code der Extension:
The last for listing exits rule (this is the standard exit listing rule):
let exits be the number of exit-listable directions;
if exits is 0:
say "[no obvious exits]";
otherwise:
let exitlist be indexed text;
let exitlist be "[list of exit-listable directions]";
replace the regular expression "und" in exitlist with "und nach";
replace the regular expression "," in exitlist with ", nach";
say "Du kannst von hier nach [exitlist] gehen.".
Last after printing the name of a direction (called way) while listing exits (this is the standard exit printing rule):
let place be the room way from the location;
if mentioning doors is true
begin;
let gateway be the room-or-door way from location;
if gateway is a door, say " [passing text of gateway] [the gateway]";
end if;
if place is visited and room memory is true then say " zu [dem place]".
Last before printing the name of a closed door (called gateway) while listing exits (this is the standard door closed text rule):
say "[closed text of gateway] ".
Momentan sieht die Ausgabe so aus(was eigentlich schon fast meinen Vorstellungen entspricht):
Code: | Du kannst von hier nach Nordosten durch das (geschlossene) Gartentor gehen.
Du kannst von hier nach Norden durch die (geschlossene) Kellertür, nach Westen zu dem Parkplatz, nach Osten durch die Eingangstür zu dem Garten und nach oben gehen. |
Höchstens die häufigen "zu dem" Konstruktionen könnte man noch durch "zum" ersetzen, aber darum geht es momentan nicht.
Das Problem wird an folgendem Output ersichtlich:
Code: | Du kannst von hier nach Norden durch die (geschlossene) Kellertür, nach Süden zu dem Speisekammer, nach Osten durch die Eingangstür zu dem Garten und nach oben gehen. |
Wie man an diesem Beispiel sieht wird Speisekammer mit männlichem Artikel ausgegeben, was auch Sinn Macht, weil Räume nunmal keine Artikel haben und die Ersetzung [dem place] deshalb immer den männlichen Artikel annimmt.
Meine Frage deshalb: Ist es möglich Räumen Artikel zu geben oder würde das andere Probleme hervorrufen? Dies wäre eben gerade nützlich wenn man Satzkonstruktionen wie
"Ich bin heute in [dem Parkplatz] herumgelaufen. Danach habe ich mir in [dem Speisekammer] satt gegessen."
benutzen möchte (in diesem Fall könnten sich die Namen der Räume ändern und es würde weiterhin richtig, mit Artikel, ausgegeben.
Ich hoffe ich werde nicht lästig, es gefällt mir nur sehr in i7 herumzuexperimentieren und speziell die Funktionsweise von Extensions zu verstehen. Mach dir auf jeden Fall wegen mir keinen Stress, das ganze eilt nicht und ist sowieso nur ein (spaßiges) Hobby.
Mit freundlichen Grüßen aus Wien
Strainer |
|
|
|
 |
|
Verfasst am:
Do, 25 Feb 2010 - 14:14
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Strainer hat folgendes geschrieben: | Ist es möglich Räumen Artikel zu geben oder würde das andere Probleme hervorrufen? |
Man könnte Räumen ein Geschlecht geben.
Also vielleicht so etwas (ungetestet)
A room can be male. A room can be female. A room can be neuter.
The Garten is male.
Vielleicht klappt das ja schon. Die Spanier machend das, glaube ich, auch so oder ähnlich in ihrer Spanish.i7x.
Grüße,
Christian |
|
|
|
 |
|
Verfasst am:
Do, 25 Feb 2010 - 14:19
|
|
|
Wasserträger

Anmeldungsdatum: 25.01.2010
Beiträge: 37
Wohnort: Wien
|
|
Super, werde das heute Abend gleich testen.
MfG
Edit:
So, nach einigem herumprobieren hat alles wunderbar funktioniert. Ich habe die Definitionen folgendermaßen gemacht (als Vorbild diente hier die Definition der Artikel in GerX):
A room can be male. A room can be female. A room can be neuter. A room can be plural-named.
A room is usually neuter. A male room is never neuter. A female room is never neuter. A plural-named room is never neuter.
Dies habe ich gleich in die Extension eingebaut, damit nicht jeder der den Exit Lister von Gavin Lambert nutzen möchte diese Definitionen erneut im Source einfügen muss. Außerdem macht es Sinn, alle Räume vorerst sächlich oder männlich zu definieren, da nur selten weibliche und noch seltener Raumnamen im plural vorkommen.
Das nächste Problem, dem ich mich angenommen habe, ist die unschöne Ausgabe als Code: | "Du kannst von hier nach Südwesten durch das Gartentor zu dem Garten und nach Westen durch die (geschlossene) Eingangstür gehen." | Hier wirkt eine Konstruktion mit "zum" anstatt von "zu dem" viel natürlicher.
Damit man aber die Wahl hat habe ich das ganze mit einem truth state gelöst. Mithilfe des Wertes "SummarizedPrepArticle"(von zusammengefasste Präposition+Artikel, könnte noch einen besseren Namen vertragen) lässt sich nun bestimmen ob man lieber die zusammengefasste oder die ausgeschriebene Schreibweise benutzen möchte. (Standardmäßig wird zusammengefasst zu "zum" und "zur")
Für interessierte habe ich hier noch den neuen Source:
Code: | Last after printing the name of a direction (called way) while listing exits (this is the standard exit printing rule):
let place be the room way from the location;
if mentioning doors is true:
let gateway be the room-or-door way from location;
if gateway is a door, say " [passing text of gateway] [the gateway]";
if place is visited and room memory is true:
if SummarizedPrepArticle is true:
if place is plural-named,
say " zu [dem room way from the location]";
if place is female,
say " zur [room way from the location]";
if place is male,
say " zum [room way from the location]";
if place is neuter,
say " zum [room way from the location]";
else:
say " zu [dem room way from the location]". |
Und hier abschließend noch der Downloadlink zu "German Exit Lister", der deutschen Übersetzung zu Gavin Lambert's Erweiterung Exit Lister:
Download German Exit Lister by Gavin Lambert
Ich hoffe es findet Anklang.
MfG
Zuletzt bearbeitet von Strainer am Do, 25 Feb 2010 - 19:57, insgesamt einmal bearbeitet |
|
|
|
 |
|
Verfasst am:
Do, 25 Feb 2010 - 18:36
|
|
|
Experte

Anmeldungsdatum: 05.05.2004
Beiträge: 633
Wohnort: Hamburg
|
|
Nochmal zu den Aktionen ohne Verben:
Ein etwas besserer Workaround als das ruppige Entfernen einzelner Präositionen aus der Tabelle LanguageVerbPreps (wodurch manche Infinitve nicht mehr funktionieren) ist vielleicht das hier:
After reading a command: if the player's command includes "eingang", replace the matched text with "tuer"; if the player's command includes "aufgang", replace the matched text with "tuer".
Die Vokabeln, die die kritischen Präpositionen tragen, werden durch 'tuer' ersetzt, womit alles normal funktioniert.
Edit: Ab GerX-Version 2/100226 werden im Zusammenhang mit Aktionen ohne Verb auch Substantive, die mit einer Präposition beginnen, korrekt verstanden.
Allerdings schaffen es Objekt-Synonyme, die von Verben mit Präposition abstammen (z.B. "Aufseher"), immer noch nicht durch die Verben-Prüfung des Parsers.
Zuletzt bearbeitet von ChristianB am So, 28 Feb 2010 - 22:14, insgesamt 2-mal bearbeitet |
|
|
|
 |
|
Verfasst am:
Do, 25 Feb 2010 - 19:58
|
|
|
Wasserträger

Anmeldungsdatum: 25.01.2010
Beiträge: 37
Wohnort: Wien
|
|
ChristianB hat folgendes geschrieben: |
Die Vokabeln, die die kritischen Präpositionen tragen, werden durch 'tuer' ersetzt, womit alles normal funktioniert. |
Daran hatte ich gar nicht gedacht, genial wie immer. ^^ |
|
|
|
 |
|