Yo algo sé del tema, me dedico a investigar en procesamiento del lenguaje natural
Antes que nada, es importante aclarar (esto ya lo expliqué alguna vez en este foro hace años, he estado un rato buscando el enlace pero no lo encuentro, así que soltaré el rollo otra vez

) que el procesamiento del lenguaje natural está muy lejos de ser la panacea aventurera, porque al contrario de lo que pueda parecer superficialmente, el mayor cuello de botella al que se enfrenta el programador de aventuras no es entender el texto que teclea el jugador. Es el modelo de mundo.
En realidad, entender el tipo de lenguaje que un jugador puede utilizar para comunicarse con una aventura (que no es lenguaje natural arbitrario, sino muy restringido: siempre se trata de órdenes, lo cual ya es una restricción muy fuerte, y además suelen ser referidas a objetos y conceptos que tengan sentido en el modelo de mundo) es fácil. Estoy bastante seguro de que se podría entrenar sin mucha dificultad una herramienta que diese precisiones muy cercanas al 100% para ese tipo de entrada. El problema es que no vale para gran cosa.
Por ejemplo, imagínate una aventura donde el jugador pueda comerse una hamburguesa. Un parser existente que utilice un análisis mínimamente robusto (si algo sí que puede aprender el mundo aventurero del procesamiento del lenguaje natural es que el parsing estricto no vale para gran cosa y es un callejón sin salida, eso es bien sabido desde hace más de treinta años) podrá reconocer que en órdenes como "comer hamburguesa", "comer la hamburguesa", "come rápidamente la hamburguesa" y "come la maldita hamburguesa", lo que quiere hacer el jugador es comerse la hamburguesa. Palabras como "rápidamente" o "maldita" las va a ignorar, porque no se ajustan a los sencillos patrones que tiene.
Ahora, imaginemos que mejoramos la aventura añadiendo una herramienta de procesamiento del lenguaje natural. Esto nos permitiría saber que "comer" es el verbo y la "hamburguesa" es su objeto directo (cosa que más o menos ya suponíamos); pero a mayores nos va a identificar la sintaxis del resto de la oración. Por ejemplo, nos va a permitir saber que "rápidamente" es un adverbio que modifica a "comer", y que "maldita" es un sustantivo que modifica a "hamburguesa".
Pues bien, ¿para qué nos vale saber eso? Pues en realidad... probablemente, para nada. Porque a no ser que hayamos programado en nuestro modelo de mundo maneras diferentes de comer la hamburguesa (rápidamente, lentamente, parcialmente, con fruición, con desgana, etc.); en realidad nos va a dar igual que el jugador haya puesto "come rápidamente la hamburguesa" que "come la hamburguesa" a secas. Si sólo tenemos un comportamiento programado para comernos la hamburguesa, da bastante igual el adverbio o adjetivo que el jugador use. Estamos reconociendo muchas entradas diferentes, pero como no tenemos muchas salidas diferentes, no lo aprovechamos.
Sería un ejemplo de "matar moscas a cañonazos", sobreingeniería, o atacar algo que no es el cuello de botella. El cuello de botella de las aventuras no es la entrada, es el modelo de mundo. Entender la entrada del jugador no es tan difícil, tener previsto un comportamiento diferenciado para cualquier entrada que se le pueda ocurrir al jugador, sí que lo es.
Con esto tampoco quiero desanimar y decir que el procesamiento del lenguaje natural en las aventuras no sirva para nada. Puede servir para muchas cosas, por ejemplo para generar textos (pongamos en situaciones como combates) y no depender de textos preescritos siempre iguales, para detectar de forma más fiable verbos y así saber si una orden es nueva o continúa la anterior (esto AGE lo hace con listas de verbos, pero hay formas mejores de hacerlo), o para crear un PNJ que mantenga un diálogo más o menos coherente con el jugador (ya que la entrada a los PNJs sí es lenguaje natural prácticamente libre). Y supongo que muchas más cosas que no se me ocurren. Por último, también puede servir para crear aventuras que utilicen bien cosas como adverbios, locuciones, etc... pero sólo si el autor realmente quiere darse el trabajo de programar distintas variantes de las acciones según el adverbio/adjetivo/etc. que se use.
Simplemente digo que es un error pensar, como se piensa a veces, que el problema de las aventuras está en "el parser" y que si les enchufamos un analizador sintáctico probabilístico, automáticamente podremos tener aventuras donde podamos escribir cosas como "cómete tres cuartas partes de la hamburguesa, para a continuación coger la cuarta parte restante, métertela en el zapato izquierdo, y salir del restaurante a la pata coja". Poder, podremos escribirlas, y el analizador sintáctico podrá extraer significado de la oración, pero salvo que hayamos implementado un modelo detallado de división de objetos y de modos de movimiento incluyendo pata coja, la diferencia para el jugador va a ser nula. Y en mi experiencia, en la mayoría de los casos pasa eso: las limitaciones de las aventuras están en en modelo de mundo, porque es muy difícil programar un mundo que tenga un nivel de detalle "realista", y no en procesar la entrada.
Dicho esto, si queréis experimentar con procesamiento del lenguaje natural, a pequeña escala como es el caso de las aventuras, no es necesario pagarle a Microsoft. Hay herramientas gratis, libres y muy buenas.
Stanford CoreNLP (Universidad de Stanford):
https://stanfordnlp.github.io/CoreNLP/ - en Java, podéis probar parte de la funcionalidad online en
http://corenlp.run/NLTK (Natural Language Toolkit):
https://www.nltk.org/ - en Python
Apache OpenNLP
https://opennlp.apache.org/ - en Java
Hay muchas más, pero estas tres son las más conocidas, todas libres, muy completas, y al menos la de Stanford trae modelos preentrenados para español de un montón de cosas. Las otras dos no estoy seguro de si traen modelos preentrenados para español, pero siempre se pueden entrenar, el NLTK por ejemplo tiene un libro que te va enseñando cómo hacerlo.