IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Obj 'Hinweistafel zu X' wird nicht verstanden
AntwortenNeues ThemaNeue Umfrage

Obj 'Hinweistafel zu X' wird nicht verstanden

Geschrieben um 14:28 am 18.01.2012 | Zitat | Editieren | Löschen
Schnippie
Mitglied
Baby Gumby
Beiträge: 6

Hallo nochmal,

ich habe da ein Problemchen mit dem Parser, der nicht so ganz verstehen will...

Ich habe ein Museum, in denen Austellungsstücke und Hinweistafeln zu jenen Objekten stehen. Da in einem Raum mehrere Tafeln stehen, habe ich ausführlich definiert, welche Tafel sich auf welches Objekt bezieht.

So z.B.



Name   'Hinweistafel zur Rüstung' f

Vor      'Hinweis' 'Rüstungs' 'Info' 'Informations'

Subst   'Tafel' f 'Schild' n 'Text' m  'Hinweistafel zur Rüstung' f

Text   'Blablabla'

Ort      Museum

Attr   immobil```

Wenn ich jetzt eingebe "Lese Hinweistafel zur Rüstung" bekomme ich nur die Antwort "Ich kenne 'zur' nicht".

Gibts da irgend nen Trick damit der Parser versteht was ich will? Wenn ich eingebe "Lese Rüstungstafel" ist alles kein Problem...

Hoffe mir kann jemand helfen :-)
Geschrieben um 15:29 am 18.01.2012 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Die Vokabeln für Objekte dürfen keine Leerzeichen enthalten. (Im Gegensatz zu den Verben, wo man 'mach auf' definieren kann.) Die Definition 'Hinweistafel zur Rüstung' erkennt TAG daher nicht. (Und wenn, wäre es eh keine gute Lösung: Man könnte dann ja nicht "Schild zur Rüstung" sagen.)

Wenn TAG Objekte untersucht, hat es ein sehr starres Schema: es können bis zu zwei Adjektive, danach ein oder mehrere Substantive angegeben werden. (Mehrere Substantive sind sinnvoll bei Objekten wie "ein Glas Milch".)

Du könntest Dir das zunutze machen und mit Synonymen arbeiten.


    Synonym 'zur Rüstung' '.Rüstung'

    Synonym 'zu Rüstung' '.Rüstung'

    Synonym 'über Rüstung' '.Rüstung'

   

    Synonym 'zum Zepter' '.Zepter'

    Synonym 'zu Zepter' '.Zepter'

    Obj     Schild_zur_Rüstung

    Name    'Hinweistafel zur Rüstung' f

    Vor     'Hinweis' 'Rüstungs' 'Info' 'Informations'

    Subst   'Tafel' f   'Schild' n   'Text' m   '.Rüstung' f

    Text    '"Diese byzantinische Prunkrüstung ..."'

    Ort      Museum

    Attr    immobil

    Obj     Schild_zum_Zepter

    Name    'Hinweistafel zum Zepter' f

    Vor     'Hinweis' 'Zepter' 'Info' 'Informations'

    Subst   'Tafel' f   'Schild' n   'Text' m   '.Zepter' f

    Text    '"Das Zepter Ferdinand des Einäugigen  ..."'

    Ort      Museum

    Attr    immobil

Die Synonyme werden nach der Eingabe ersetzt. In diesem Fall werden die nchgestellten Beschreibungen zum Pseudo-Wort '.Rüstung' oder '.Zepter' eingedampft. Pseudo-Wort deshalb, weil es einen Punkt enthält und damit vom Spieler nicht direkt eingegeben werden kann. (Der Punkt würde als eigenes Wort betrachtet.)

So ganz koscher ist das aber nicht: Du müsstest vermutlich recht viele Synonyme eingeben, um auch Synonyme für die Rüstung zuzulassen. Bei Fehlermeldungen und bei Nachfragen hakelt es gewiss. Und der parser hat schon selbst Synonyme für die Zusammenziehungen von Präpositionen und Artikeln ('zur', 'aufs', 'beim' usw.)

Eine weitere Möglichkeit ist, eine eigene Parserroutine anzugeben, was aber wegen der unflexiblen Syntax von TAG auch kein Spaß ist:


    Aktion ObjParser

    Ausf

        | Schild?

        lokal Aux

        LeseArt m Aux

       

        wenn (Wort = 'Tafel' 'Schild' 'Text') dann

            NächstesWort

            wenn (Wort = 'zu' 'zum' 'zur') dann

                NächstesWort

                LeseArt m Aux

                wenn (Wort = 'Rüstung') sei aObj Schild_zur_Rüstung

                wenn (Wort = 'Zepter') sei aObj Schild_zum_Zepter

                wenn /(aObj = 0) NächstesWort

            Ende

        Ende

    EndeAusf

Hier wird eine Kette wie (Artikel) "Tafel" "zu" (Artikel) "Rüstung" von Hand analysiert . Diese Routine muss aObj setzen, wenn ein Objekt gefunden wurde. Das wird in Kapitel 15 im Handbuch beschrieben.

Probier das mal aus. Leider habe ich die Beispiele oben auf die Schnelle nicht ausprobieren können.

Geschrieben um 14:27 am 21.01.2012 | Zitat | Editieren | Löschen
Schnippie
Mitglied
Baby Gumby
Beiträge: 6

Hallo Martin,

herzlichen Dank für deine Hilfe.

Ich habs mit den Synonymen gelöst, nicht unbedingt die schönste Lösung, aber es deckt die meisten Möglichkeiten ab :-)

Beste Grüße,

Schnippie

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