Intégrer l'analyseur de texte IF dans un autre jeu?

14

Existe-t-il des moteurs d'analyse de texte de fiction interactifs que je peux intégrer dans un autre jeu ou application?

Je cherche à utiliser quelque chose comme bibliothèque. Je peux lui passer les objets et les verbes disponibles de mon côté. Il analysera les phrases de l'utilisateur et me rendra une sorte de structure / AST décrivant ce que l'utilisateur a demandé. Ensuite, mon propre code peut alors donner suite à cette demande.

Je n'ai pas besoin de quelque chose de niveau SIRI. Les phrases et actions simples que les jeux IF actuels prennent en charge sont correctes. Mais je ne cherche pas à écrire un analyseur de texte / phrase entier moi-même.

Ce n'est pas un jeu If et je ne peux pas l'écrire entièrement dans un langage de fiction interactif comme Inform 7. Malheureusement, je ne trouve aucun exemple de personne utilisant les capacités d'analyse de texte de ces moteurs sans écrire l'intégralité jeu dans le langage de ce moteur.

DragonFax
la source
Idée intéressante. Je ne pense pas que l'intégration d'une z-machine serait une tâche impossible (ce qui signifie que vous pouvez utiliser inform pour écrire la partie if) - afair, le port Windows de certaines z-machine avait la z-machine exécutée dans un thread distinct de l'interface utilisateur, donc il fait déjà un peu (parties) de ce que vous voulez.
Jari Komppa
Cela dit, il est tout à fait possible que ce que vous voulez réellement faire soit plus facile à faire sans incorporer une machine virtuelle IF entière ..
Jari Komppa
Ouais, on dirait que je vais devoir écrire mon propre analyseur.
DragonFax

Réponses:

4

C'est une question délicate. Il est possible d'extraire la fonctionnalité d'analyse de texte d'un des nombreux moteurs IF écrits dans des langages de programmation à usage général (c'est-à-dire pas quelque chose comme Inform). Certaines possibilités pourraient être Pyf , et le moteur de la tante et du majordome . Si vous étendez votre recherche aux boues, vous aurez un ordre de grandeur plus de choix (voici les listes des boues open source et des boues Python en particulier).

Cependant, la partie délicate, et d'après votre question, vous comprenez cela, est de résoudre l'analyse dans le contexte du monde du jeu. C'est la partie difficile, et quelque chose comme OpenNLP ne vous y arrivera malheureusement pas. Le problème est que ces moteurs IF et ces boues ont chacun leur propre façon de le faire et il peut être difficile de se réconcilier avec la façon dont vous avez conçu votre modèle mondial.

Heureusement, il existe de nombreuses ressources pour écrire un analyseur et un résolveur efficaces. Je vais juste vous jeter des liens,

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
la source
Oui, j'ai écrit des analyseurs pour les langages de programmation. Assez pour savoir s'attaquer aux langues naturelles est une bête différente.
DragonFax
2
Rappelez-vous, ce n'est pas seulement l'analyse du langage naturel, c'est l'analyseur de modèle mondial qui vous prendra tout votre temps :).
georgek
1

Serait-ce utile à votre projet? Je crois que ce que vous demandez est la PNL et IF n'est qu'un cas d'utilisation spécifique.

http://opennlp.apache.org/

Eh bien, si vous souhaitez vérifier que la combinaison correcte d'un nom et d'un verbe a été trouvée dans la phrase et pas tant sur la structure, la grammaire et d'autres aspects:

Je suggère de télécharger ce http://wordnet.princeton.edu/wordnet/

Vous pouvez l'utiliser pour vérifier s'il existe un synonyme pour le verbe et le nom que vous recherchez dans une phrase sans avoir à saisir manuellement tous les synonymes viables pour chaque mot.

Si vous souhaitez voir le code source du jeu d'aventure texte qui a été récemment publié, vous pouvez trouver des jeux ici (appuyez simplement sur Ctrl + F) et tapez du texte

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

Il existe également une liste de moteurs de jeu Text Adventure ici:

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

Si vous avez besoin de quelque chose de plus, veuillez préciser.

AturSams
la source
La bonne PNL semblait trop efficace, et semblait également se concentrer sur les trucs de type Data Sciencey. Où vous voulez identifier si une phrase dans un grand dépotoir est heureuse ou triste, ou mentionne les gens par rapport aux choses. Où-comme je voulais analyser une phrase parfaitement, et arriver à "l'utilisateur dit de faire VERBE à NOM". Même s'il n'analyse que quelques formes différentes.
DragonFax
J'ai ajouté quelques liens vers les moteurs de jeux d'aventure textuels.
AturSams
Merci, j'ai lu le livre NLTK (python), qui est un bon tutoriel sur les bases de l'utilisation de la PNL. Mais l'analyse d'une seule phrase dans un «sens» n'est pas une chose triviale.
DragonFax