IF-Textparser in ein anderes Spiel einbinden?

14

Gibt es interaktive Textanalyse-Engines, die ich in ein anderes Spiel oder eine andere Anwendung einbetten kann?

Ich möchte etwas als Bibliothek benutzen. Ich kann ihm die verfügbaren Objekte und Verben von meiner eigenen Seite übergeben. Es analysiert die Sätze des Benutzers und gibt mir eine Art Struktur / AST zurück, die beschreibt, wonach der Benutzer gefragt hat. Dann kann mein eigener Code auf diese Anfrage reagieren.

Ich brauche kein SIRI-Level. Die einfachen Sätze und Aktionen, die aktuelle IF-Spiele unterstützen, sind in Ordnung. Aber ich möchte selbst keinen ganzen Text- / Satz-Parser schreiben.

Dies ist kein If-Spiel und ich kann es nicht vollständig in einer interaktiven Fiktionssprache wie inform 7 schreiben. Leider kann ich anscheinend keine Beispiele für jemanden finden, der die Textanalysefunktionen dieser Engines verwendet, ohne das gesamte zu schreiben Spiel in der Sprache dieser Engine.

DragonFax
quelle
Interessante Idee. Ich denke nicht, dass das Einbetten einer Z-Maschine eine unmögliche Aufgabe wäre (was bedeutet, dass Sie inform verwenden könnten, um den If-Teil zu schreiben) die Benutzeroberfläche, also macht sie schon ein bisschen (Teile) von dem, was Sie wollen.
Jari Komppa
Alles, was gesagt wird, ist es durchaus möglich, dass das, was Sie tatsächlich tun möchten, einfacher zu tun ist, ohne eine ganze virtuelle IF-Maschine
einzubetten
Ja, es sieht so aus, als müsste ich meinen eigenen Parser schreiben.
DragonFax

Antworten:

4

Das ist eine knifflige Frage. Es ist möglich, die Funktion zum Parsen von Text aus einer Reihe von IF-Modulen zu extrahieren, die in allgemeinen Programmiersprachen (also nicht so etwas wie Inform) geschrieben sind. Einige Möglichkeiten könnten Pyf und der Motor von Tante und Butler sein . Wenn Sie Ihre Suche auf Schlämme ausweiten, haben Sie eine Größenordnung mehr Auswahlmöglichkeiten (hier sind Listen von Open-Source-Schlämmen und speziell von Python-Schlämmen ).

Wie auch immer, der schwierige Teil, und aus Ihrer Frage, die Sie verstehen, besteht darin, die Analyse im Kontext der Spielwelt aufzulösen. Dies ist der schwierige Teil, und so etwas wie OpenNLP bringt Sie leider nicht dorthin. Das Problem ist, dass diese ZF-Motoren und Schlämme jeweils ihre eigene Vorgehensweise haben und es schwierig sein kann, sich mit dem Design Ihres Weltmodells abzustimmen.

Glücklicherweise gibt es viele Ressourcen, um einen effektiven Parser und Resolver zu schreiben. Ich werde nur ein paar Links auf dich werfen,

http://www.mudbytes.net/topic-1838

http://www.mudbytes.net/topic-2962

http://www.mudbytes.net/topic-2038

http://www.mud.co.uk/richard/commpars.htm

http://groups.google.com/group/rec.arts.int-fiction/msg/f545963efb72ec7b?dmode=source

http://www.intfiction.org/forum/viewtopic.php?f=38&t=4205#p30260

http://www.tads.org/t3doc/doc/libref/source/parser.t.html

http://www.tads.org/t2doc/doc/prsseq.htm

http://www.dnd.utwente.nl/~krimud/Docs/NMAdmin/Parser/

https://groups.google.com/forum/?fromgroups#!searchin/rec.arts.int-fiction/writing $ 20a $ 20parser / rec.arts.int-fiction / VpsWZdWRnlA / 2mf5y25xk7MJ

https://groups.google.com/forum/?fromgroups#!searchin/rec.arts.int-fiction/writing $ 20a $ 20parser / rec.arts.int-fiction / EfxdLAc5Tmo / Fn5CEQvZCGsJ

http://ifwiki.org/index.php/Past_raif_topics:_Development:_part_2#Parsing

https://groups.google.com/forum/?fromgroups#!topic/rec.arts.int-fiction/HJPrqQ8l9u0

http://www.kotancode.com/2012/02/15/scalamud-scala-java-nlp/

https://groups.google.com/forum/?fromgroups#!topic/rec.arts.int-fiction/to4Ut4r_qCs

http://effbot.org/zone/simple-top-down-parsing.htm

http://www.skotos.net/articles/dawnof09.shtml

http://www.skotos.net/articles/dawnof22.shtml

http://discworld.starturtle.net/lpc/playing/documentation.c?path=/concepts/parser

http://disinterest.org/resource/MUD-Dev/1999q2/010160.html

Georgek
quelle
Ja, ich habe Parser für Programmiersprachen geschrieben. Genug, um zu wissen, wie man mit natürlichen Sprachen umgeht, ist ein anderes Biest.
DragonFax
2
Denken Sie daran, es ist nicht nur die natürliche Sprachanalyse, es ist der World Model Analyzer, der Ihre ganze Zeit in Anspruch nimmt :).
Georgek
1

Wäre dies für Ihr Projekt nützlich? Ich glaube, Sie fordern NLP und IF ist nur ein konkreter Anwendungsfall.

http://opennlp.apache.org/

Nun, wenn Sie überprüfen möchten, ob im Satz die richtige Kombination aus einem Substantiv und einem Verb gefunden wurde und nicht so sehr mit Struktur, Grammatik und anderen Aspekten:

Ich schlage vor, diese http://wordnet.princeton.edu/wordnet/ herunterzuladen

Sie können damit im Grunde prüfen, ob ein Synonym für das gesuchte Verb und das gesuchte Substantiv in einem Satz vorhanden ist, ohne alle verfügbaren Synonyme für jedes Wort manuell eingeben zu müssen.

Wenn Sie den kürzlich veröffentlichten Quellcode eines Text-Abenteuerspiels sehen möchten, finden Sie hier einige Spiele (drücken Sie einfach Strg + F) und geben Sie Text ein

http://en.wikipedia.org/wiki/List_of_open-source_video_games

Hier finden Sie auch eine Liste der Text Adventure-Spiele-Engines:

http://en.wikipedia.org/wiki/Category:Text_adventure_game_engines

Wenn Sie etwas mehr benötigen, erläutern Sie dies bitte.

wolfdawn
quelle
Richtiges NLP schien zu viel zu töten, und es schien sich auch auf Data Sciencey zu konzentrieren. Wo möchten Sie feststellen, ob ein Satz in einem großen Dump glücklich oder traurig ist oder ob Menschen gegen Dinge erwähnt werden? Wobei ich einen Satz perfekt parsen wollte und zu "der Benutzer sagt VERB zu NOUN" komme. Auch wenn es nur ein paar verschiedene Formen analysiert.
DragonFax
Ich habe einige Links zu Text Adventure Game Engines hinzugefügt.
Wolfdawn
Vielen Dank, ich habe das NLTK-Buch (Python) gelesen, das eine gute Einführung in die Grundlagen der NLP-Nutzung bietet. Das Parsen eines einzelnen Satzes in eine "Bedeutung" ist jedoch immer noch eine nicht triviale Sache.
DragonFax