Incorporare il parser di testo IF in un altro gioco?


14

Esistono motori di analisi del testo di fiction interattivi esistenti che posso incorporare in un altro gioco o applicazione?

Sto cercando di usare qualcosa come una biblioteca. Posso passargli gli oggetti e i verbi disponibili dalla mia parte. Analizzerà le frasi dell'utente e mi restituirà una sorta di struttura / AST che descrive ciò che l'utente ha richiesto. Quindi il mio codice può quindi agire su quella richiesta.

Non ho bisogno di qualcosa di livello SIRI. Le semplici frasi e azioni supportate dagli attuali giochi IF vanno bene. Ma non sto cercando di scrivere un intero parser testo / frase da solo.

Questo non è un gioco If e non riesco a scriverlo interamente in un linguaggio di narrativa interattiva come informa 7. Sfortunatamente, non riesco a trovare alcun esempio di qualcuno che utilizza le funzionalità di analisi del testo di questi motori senza scrivere l'intero gioco nella lingua di quel motore.


Idea interessante. Non penso che incorporare una z-machine sarebbe un compito impossibile (il che significa che potresti usare inform per scrivere l'if-part) - altrimenti, la porta di windows di qualche z-machine ha fatto girare la z-machine in un thread separato da l'interfaccia utente, quindi fa già (parti) ciò che vuoi.
Jari Komppa,

Detto questo, è del tutto possibile che ciò che si vuole effettivamente fare sia più facile da fare senza incorporare un'intera macchina virtuale IF ..
Jari Komppa,

sì, sembra che dovrò scrivere il mio parser.
DragonFax,

Risposte:


4

Questa è una domanda difficile. È possibile estrarre la funzionalità di analisi del testo da uno dei numerosi motori IF scritti in linguaggi di programmazione generici (ovvero non simili a Inform). Alcune possibilità potrebbero essere Pyf e il motore di zia e maggiordomo . Se estendi la tua ricerca ai fanghi avrai un ordine di grandezza più scelte (qui ci sono elenchi di fanghi open source e fanghi Python in particolare).

Tuttavia la parte difficile, e dalla tua domanda lo capisci, sta risolvendo l'analisi nel contesto del mondo di gioco. Questa è la parte difficile, e qualcosa come OpenNLP non ti porterà purtroppo lì. Il problema è che questi motori e fanghi IF hanno ciascuno il proprio modo di farlo e potrebbe essere difficile riconciliarsi con il modo in cui è stato progettato il modello del mondo.

Fortunatamente ci sono molte risorse per scrivere un parser e un resolver efficaci. Ho intenzione di lanciarti alcuni link,

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


Sì, ho scritto parser per i linguaggi di programmazione. Basta sapere come affrontare le lingue naturali è una bestia diversa.
DragonFax,

2
Ricorda, non è solo l'analisi del linguaggio naturale, è l'analizzatore di modelli del mondo che ti prenderà tutto il tempo :).
georgek,

1

Sarebbe utile al tuo progetto? Credo che ciò che stai chiedendo sia la PNL e IF è solo un caso d'uso specifico.

http://opennlp.apache.org/

Bene, se desideri verificare che nella frase sia stata trovata la corretta combinazione di un sostantivo e un verbo e non tanto di struttura, grammatica e altri aspetti:

Suggerisco di scaricare questo http://wordnet.princeton.edu/wordnet/

Potresti usarlo per verificare sostanzialmente l'esistenza di un sinonimo sia per il verbo che per il sostantivo che stai cercando in una frase senza dover digitare manualmente tutti i sinonimi validi per ogni parola.

Se desideri vedere il codice sorgente del gioco di avventura di testo che è stato recentemente rilasciato, potresti trovare alcuni giochi qui (premi Ctrl + F) e digitare il testo

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

C'è anche un elenco di motori di gioco Text Adventure qui:

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

Se hai bisogno di qualcosa di più, ti preghiamo di elaborare.


La corretta PNL sembrava eccessiva e sembrava concentrarsi anche su elementi di tipo Data Sciencey. Dove vuoi identificare se una frase in una discarica di grandi dimensioni è felice o triste, o menziona persone o cose. Dove-come volevo analizzare perfettamente una frase e arrivare a "l'utente sta dicendo do VERB a NOUN". Anche se analizza solo alcune forme diverse.
DragonFax,

Ho aggiunto alcuni link ai motori di gioco di avventura di testo.
AturSams,

Grazie, ho letto il libro NLTK (python), che è un buon tutorial sulle basi dell'utilizzo della PNL. Ma analizzare una singola frase in un "significato" è ancora una cosa non banale.
DragonFax,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.