IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Verbproblem: "denk an"
AntwortenNeues ThemaNeue Umfrage

Verbproblem: "denk an"

Geschrieben um 16:50 am 10.04.2012 | Zitat | Editieren | Löschen
Mario Donick
Mitglied
Bachelor Gumby
Beiträge: 57

Hallo,

nach langer Zeit mal wieder eine Frage:



Table of Weltwissen

Topic          Gedanke

"Frau[f]"      "Sie war sehr hübsch."

Understand "denk an [text]" and "erinner [text]" as remembering.

Carry out remembering: say "Nichts.". Remembering is an action applying to one topic.

Instead of remembering a topic listed in the Table of Weltwissen, say "[Gedanke entry][paragraph break]".```

Das benutzen von "erinnere die Frau" funktioniert, aber nicht "denk an die Frau".

Was muss ich tun, damit "denk an" funktioniert?
Geschrieben um 18:39 am 10.04.2012 | Zitat | Editieren | Löschen
stadtgorilla
Mitglied
Retired Gumby
Beiträge: 671

liegt wahrscheinlich daran, dass die Aktionen "thinking" schon in inform7 und "thinking about it" in GerX implementiert sind. Schau mal im Actions-Index nach. Die dort aufgeführten Kommandos musst du dann mit "understand the command xxx as something new" abgreifen. Hoffe, das hilft weiter, gefährliches Halbwissen...

Geschrieben um 21:04 am 10.04.2012 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Stimmt, der stadtgorilla hat's richtig erkannt!

So geht's in meinem Testspiel:

blue

Was mich wundert ist, dass es sogar mit dem "[f]" funktioniert, das ja eigentlich nur für Objekte gedacht ist. Sogar mit Endungen klappt es: "denk an frauen" wird ebenso verstanden wie "denk an frauer" oder "denk an fraus". Wo das "[f]" bei der ganzen Sache wohl bleibt ... ?

EDIT: Das Topic wird als Consult-Grammar-Routine abgebildet, in der 'frau' und "[f]" getrennt behandelt werden. Das femininum-Token bleibt dabei allerdings ohne Effekt auf die weiblichen Pronomen, da es kein Objekt gibt, auf das sie verweisen könnten. Aber auch mit einem Objekt "Frau" im Spiel scheint es keine Probleme mit der Referenzierung der Pronomen zu geben, sodass das Genus-Token in einem Topic wohl ohne Probleme (aber auch ohne funktionalen Nutzen) verwendet werden kann. Wie schön ...

Geschrieben um 14:55 am 11.04.2012 | Zitat | Editieren | Löschen
Mario Donick
Mitglied
Bachelor Gumby
Beiträge: 57

Vielen Dank!

Wie unterscheidet Inform denn zwischen denk, denk nach und denk an? Reicht es, das so zu definieren wie in deinem Beispiel, oder muss ich, damit denk und denk nach normal funktionieren, noch irgendwas machen?

Das mit dem [f] hab ich einfach nur ausprobiert, damit ich den Artikel benutzen kann. Als ich statt "frau[f]" nur "die Frau" geschrieben hatte, ging das nicht.

Geschrieben um 15:19 am 11.04.2012 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Mario:

Wie unterscheidet Inform denn zwischen denk, denk nach und denk an? Reicht es, das so zu definieren wie in deinem Beispiel, oder muss ich, damit denk und denk nach normal funktionieren, noch irgendwas machen?

Die Definition von "denk" und "denk nach" im Beispiel ist die Originaldefinition. Die muss man aber, nachdem man "denk" per "understand as something new" gelöscht hat, wieder anlegen. In German.i7x lauten die Definitionen für "denk":



Understand "denk ueber [text] nach" as thinking about.

Understand "denk nach ueber [text]" as thinking about.

Understand "denk an [text]" as thinking about.```

Leider kann man Satzmuster noch nicht selektiv löschen, sondern kloppt immer gleich sämtliche Satzmuster für ein Verb weg, wenn man das Verb löscht, oder in Inform-Sprache ausgedrückt, es als etwas Neues (als etwas komplett Neues) verstanden haben will. Deshalb muss man die Satzmuster, die man erhalten will, wieder entsprechend dem Original neu anlegen.

**Mario:**
> Das mit dem [f] hab ich einfach nur ausprobiert, damit ich den Artikel benutzen kann. Als ich statt "frau[f]" nur "die Frau" geschrieben hatte, ging das nicht.

Artikel in Vokabeldefinitionen sind grundsätzlich zu vermeiden. Die Artikel der Spielereingabe werden seit geraumer Zeit auch in (genauer: vor) Topics als Deskriptoren überlesen (ignoriert), deshalb brauchen sie nicht mit zu definiert werden. Weniger Definition (keine Artikel, keine Endungen, also all der ganze Kram, den der Parser ignoriert oder abschneidet) führt in GerX grundsätzlich zu mehr Verständnis des Parsers. Es gibt natürlich Ausnahmen, aber sonst wäre es ja auch öde.

Das "[f]" kannst du in einem Topic weglassen, da es dort keine Funktion hat. Allerdings stört es offenbar auch nicht. (Was gut ist, denn vielleicht kann man die Consult-Grammar noch mal zweckentfremden.)
Geschrieben um 21:05 am 11.04.2012 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

ChristianB:

Leider kann man Satzmuster noch nicht selektiv löschen, sondern kloppt immer gleich sämtliche Satzmuster für ein Verb weg ...

Vielleicht ist es in diesem Fall eh besser, wenn man keine neue Aktion einführt, sondern einfach die nimmt, die GerX schon mitbringt und sie um die Erinnerungs-Verben erweitert:

003399

ChristianB:

Sogar mit Endungen klappt es: "denk an frauen" wird ebenso verstanden wie "denk an frauer" oder "denk an fraus".

Das ist klar: Bevor der Parser die Eingabe sieht, werden schon alle Endungen abgeschnitten. Die alte Lib hat das je nach Kontext gemacht, aber deform schneidet bei allen Wörtern so lange "e/n" oder "em/en/es/er" ab, bis das Wort im Wörterbuch vorhanden ist, was natürlich beim händischen Parsen Probleme machen kann.

Dass das Gender-Token auch in Topics funktioniert, ist natürlich schön durchgängig.

Geschrieben um 22:50 am 11.04.2012 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Martin:

Das ist klar: Bevor der Parser die Eingabe sieht, werden schon alle Endungen abgeschnitten.

Mir war bis jetzt nicht klar, dass es für Topics mit den Consult-Grammar-Routinen so etwas wie eine parse_name gibt, mit der Topics als ganze Satzmuster und Verkettungen ("hans/grete/haensel/gretel") gebaut werden können. Ich bin zunächst fälschlich davon ausgegangen, dass I7 das Topic "Frau[f]" ganz stur nach I6 als 'frau[f]' übersetzt. Dann hätte "Frau" nach dem Abschneiden der Endungen nicht mehr geparst werden können. Das war der Grund für meine Verwunderung.

So eine komplexe Grammatik für Topics gab's doch in I6 noch nicht, oder?

Geschrieben um 07:51 am 12.04.2012 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

ChristianB:

So eine komplexe Grammatik für Topics gab's doch in I6 noch nicht, oder?

Nee. In Inform 6 lässt der Parser den Autor die Arbeit bei [topic]-Tokens machen. Er stellt nur die Indizes consult_from und consult_words zur Verfügung, die der Autor dann selbst beim Abfangen der jeweiligen Aktion interpretieren muss. Für Standard-Aktionen wie ##Ask, ##Tell oder ##Answer wird auch noch noun oder second mit dem ersten Wort des Topics belegt, das kein Descriptor ist. Das ist aber sehr krude: Es funktioniert nicht bei selbst definierten Verben, die das [topic]-Token nutzen.

Die Tabelle zu Beginn von Abschnitt 18 im DM4 zeigt das ganze Elend der I6-Topics. Der Code für das Maya-Wörterbuch und für den Priester in den Abschnitten 16 und 17 zeigt, wie man die Topics in I6 mit einer riesigen switch-Anweisung umsetzt.

Ich denke, es wird auch in I7 so gemacht, dass der Parser erst einmal klaglos alle Wörter als Topic akzeptiert und die Zuordnung erst bei der Ausführung geschieht. Die zusätzliche parse_name war nötig, um die Topic-Spalte in Tabellen allgemeingültig zu implementieren. Der Parser selbst ruft sie nie auf - es ist ja auch keine parse_name, sondern eine consult_grammar, die es in I6 so noch nicht gab.

Geschrieben um 11:02 am 12.04.2012 | Zitat | Editieren | Löschen
Mario Donick
Mitglied
Bachelor Gumby
Beiträge: 57

Martin:

Vielleicht ist es in diesem Fall eh besser, wenn man keine neue Aktion einführt, sondern einfach die nimmt, die GerX schon mitbringt und sie um die Erinnerungs-Verben erweitert:

003399

Aber dann würde doch nur "erinnern" funktionieren, oder nicht?

Mein Ziel:

"denk an ...", "denk über ... nach", "denk nach über ...", "erinnere (dich) an ...", "erinnere ..." --> In Tabelle nachgucken und Text anzeigen.

"denk" --> allgemeinen situationsbezogenen Hinweis ausgeben.

D.h. die erste Form soll über ein konkretes Thema sein, die zweite Form allgemein.

Geschrieben um 11:02 am 12.04.2012 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Martin:

In Inform 6 lässt der Parser den Autor die Arbeit bei [topic]-Tokens machen.

Ja, ich erinnere mich an Switch-Blöcke, die sich über mehrere hundert Zeilen erstrecken, in denen ich second befragt habe. Sehr unübersichtlich und starr.

Martin:

Die zusätzliche parse_name war nötig, um die Topic-Spalte in Tabellen allgemeingültig zu implementieren.

Ich habe immer schon nach einer Möglichkeit gesucht, Vokabeln per Tabelle ins Wörterbuch zu schreiben. Eine Tabelle mit einer Topic-Spalte tut ja genau dies, wenn dazu auch für jede Vokabel eine Consult-Grammar-Routine erstellt wird. Immerhin gelangt das Wort so ins Wörterbuch.

Ich denke da beispielsweise an eine einfache Möglichkeit für den Autor, die bestehenden (Language)Synonyms- und Twins-Tabellen fortzuführen, ohne Einbinden von I6-Code oder das Kommando per "After translating a command into informese" zu verbiegen.

Geschrieben um 11:05 am 12.04.2012 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Mario Donick:

Aber dann würde doch nur "erinnern" funktionieren, oder nicht?

Nur wenn Du per "Understand .... as something new." etwas gelöscht hast. Ansonsten wird eine neue Satzmuster-Definition den schon bestehenden hinzugefügt.

Geschrieben um 11:08 am 12.04.2012 | Zitat | Editieren | Löschen
Mario Donick
Mitglied
Bachelor Gumby
Beiträge: 57

ChristianB:

Mario Donick:

Aber dann würde doch nur "erinnern" funktionieren, oder nicht?

Nur wenn Du per "Understand .... as something new." etwas gelöscht hast. Ansonsten wird eine neue Satzmuster-Definition den schon bestehenden hinzugefügt.

Ach so, das heißt, wenn ich nicht "denk an" als Synonym für "erinnere" (also neues Verb "remembering") nehmen, sondern "erinnere" und "denk an" als Synonyme für (das bestehende?) "thinking about" nehmen würde, würde das auch gehen ... Hab ich das richtig verstanden?

Geschrieben um 11:12 am 12.04.2012 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Du brauchst nur, wie von Martin vorgeschlangen, das Satzmuster mit "erriner" hinzufügen und in der Regel dann die Aktion "thinking about" abfragen.

Welche Kommandos die Aktion triggern, kannst Du im Actions-Index einsehen:

Der Actions-Index:

Typed commands leading to this action

"denk ueber [text] nach"

"denk nach ueber [text]"

"denk an [text]"

"erinner [text]"

"erinner dich an [text]"

Das funktioniert aber nur korrekt mit einer aktuellen GerX-Version, vor Version 3/111222 hieß die Aktion noch "thinking about it", die mit Topics nicht lief. Am besten die derzeitige "Testversion" installieren.

http://ifiction.pageturner.de/inform7/test/German_3-120407--TEST1.zip

Geschrieben um 13:40 am 12.04.2012 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Ich habe noch einmal die Aktion "thinking about" im Actions-Index nachgesehen und genauer gelesen, was wir da so geschrieben haben:

Der Actions-Index:

Thinking about some text (past tense thought about)

This action fires when an actor tries to think of or remember a topic, e.g. DENKE AN DEN LETZTEN URLAUB.

Da haben wir in die Beschreibung ja schon reingeschrieben, dass die Aktion auch fürs Erinnern da sein soll. Aber die entsprechenden Verben haben wir nicht implementiert; kein Wunder, dass Mario sie vermisst.

Ich habe die Satzmuster mit "erinner" für die Aktion "thinking about" jetzt in GerX hineingeschrieben und eine neue Vorabversion hochgeladen:

http://ifiction.pageturner.de/inform7/test/German_3-120412--TEST1.zip

Die neuen Satzmuster sind:



Understand "erinner [text]" as thinking about.```

Das "[dich]" ist etwas flexibler als einfach nur "dich", weil es auch "mich/uns/euch" abgreift, falls jemand >ICH MÖCHTE MICH AN DIE FRAU ERINNERN schreiben möchte.

Mario, mit dieser Version brauchst Du also grundsätzlich gar keine Änderungen an den Satzmustern mehr vornehmen (falls ich noch ein offensichtliches Kommando vergessen habe, bitte ich um einen Hinweis).
Geschrieben um 14:27 am 12.04.2012 | Zitat | Editieren | Löschen
Mario Donick
Mitglied
Bachelor Gumby
Beiträge: 57

Mit der neuen Version muss ich dann schreiben:


Instead of thinking about a topic listed in the Table of Weltwissen, say "[Gedanke entry][paragraph break]".

?

Geschrieben um 14:28 am 12.04.2012 | Zitat | Editieren | Löschen
ChristianB
Mitglied
Retired Gumby
Beiträge: 1062

Das sollte genau so klappen.

Geschrieben um 14:31 am 12.04.2012 | Zitat | Editieren | Löschen
Mario Donick
Mitglied
Bachelor Gumby
Beiträge: 57

ChristianB:

Das sollte genau so klappen.

Super, danke. Ich probier das heute abend aus, und falls es nicht geht, meld ich mich wieder.

Damit wäre dann jedenfalls ein Problem gelöst, mit dem ich mich schon ewig quäle.

Geschrieben um 16:58 am 15.04.2012 | Zitat | Editieren | Löschen
Mario Donick
Mitglied
Bachelor Gumby
Beiträge: 57

So, das funktioniert mit der neuen GerX-Version ganz hervorragend! Nun kann mein Protagonist sowohl "denken" als auch "nachdenken über".

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz