Incrustar analizador de texto IF en otro juego?

14

¿Existen motores de análisis de texto de ficción interactivos existentes que pueda insertar en otro juego o aplicación?

Estoy buscando usar algo como una biblioteca. Puedo pasarle los objetos y verbos disponibles desde mi propio lado. Analizará las oraciones del usuario y me devolverá algún tipo de estructura / AST que describa lo que solicitó el usuario. Entonces mi propio código puede actuar sobre esa solicitud.

No necesito algo de nivel SIRI. Las oraciones y acciones simples que soportan los juegos IF actuales están bien. Pero no estoy buscando escribir un analizador de texto / oración completo.

Este no es un juego If y no puedo escribirlo completamente en un lenguaje de ficción interactiva como inform 7. Desafortunadamente, parece que no puedo encontrar ningún ejemplo de alguien que use las capacidades de análisis de texto de estos motores sin escribir todo juego en el lenguaje de ese motor.

DragonFax
fuente
Idea interesante. No creo que incrustar una máquina z sea una tarea imposible (lo que significa que podría usar inform para escribir la parte if). la interfaz de usuario, por lo que ya hace (partes) de lo que quieres.
Jari Komppa
Dicho todo esto, es completamente posible que lo que realmente quieres hacer sea más fácil de hacer sin incrustar una máquina virtual IF completa ...
Jari Komppa
Sí, parece que tendré que escribir mi propio analizador.
DragonFax

Respuestas:

4

Esta es una pregunta difícil. Es posible extraer la funcionalidad de análisis de texto de uno de varios motores IF escritos en lenguajes de programación de uso general (es decir, no como Inform). Algunas posibilidades pueden ser Pyf y el motor de tía y mayordomo . Si amplía su búsqueda a lodos, tendrá un orden de magnitud más opciones (aquí hay listas de lodos de código abierto y específicamente de lodos de Python ).

Sin embargo, la parte difícil, y desde tu pregunta, entiendes esto, es resolver el análisis en el contexto del mundo del juego. Esta es la parte difícil y, desafortunadamente, algo como OpenNLP no lo llevará allí. El problema es que estos motores y lodos IF tienen su propia forma de hacerlo y puede ser difícil conciliar con la forma en que está diseñado su modelo mundial.

Afortunadamente, hay muchos recursos para escribir un analizador y un solucionador efectivos. Solo voy a arrojarte algunos enlaces,

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
fuente
Sí, he escrito analizadores para lenguajes de programación. Lo suficiente como para abordar los lenguajes naturales es una bestia diferente.
DragonFax
2
Recuerde, no es solo el análisis del lenguaje natural, es el analizador de modelos mundiales que tomará todo su tiempo :).
georgek
1

¿Sería esto útil para su proyecto? Creo que lo que está pidiendo es PNL e IF es solo un caso de uso específico.

http://opennlp.apache.org/

Bueno, si desea comprobar que se encontró la combinación correcta de un sustantivo y un verbo en la oración y no tanto sobre la estructura, la gramática y otros aspectos:

Sugiero descargar este http://wordnet.princeton.edu/wordnet/

Podría usarlo para verificar básicamente si existe un sinónimo tanto para el verbo como para el sustantivo que está buscando en una oración sin tener que escribir manualmente todos los sinónimos viables para cada palabra.

Si desea ver el código fuente del juego de aventura de texto que se lanzó recientemente, puede encontrar algunos juegos aquí (simplemente presione Ctrl + F) y escriba texto

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

También hay una lista de motores de juegos de Text Adventure aquí:

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

Si necesita algo más, por favor explique.

AturSams
fuente
La PNL adecuada parecía matar en exceso, y también parecía centrarse en cosas del tipo Data Sciencey. Donde quiera identificar si las oraciones en un basurero grande son felices o tristes, o menciona personas versus cosas. Donde, como quería analizar una oración perfectamente, y llegar a "el usuario dice hacer VERBO a NOUN". Incluso si solo analiza algunas formas diferentes.
DragonFax
Agregué algunos enlaces a los motores de juegos de aventura de texto.
AturSams
Gracias, he estado leyendo el libro NLTK (python), que es un buen tutorial sobre los conceptos básicos del uso de la PNL. Pero analizar una sola oración en un "significado" sigue siendo algo no trivial.
DragonFax