I have played with something similar while developing a ship command and navigation simulator. (Eventually to have voice recognition and generation I/O, but currently just text based.) The experience that I'm drawing on is a CAI (Computer Aided Instruction) system that was the rage in the 70's: Plato V.
in reply to NLP - natural language regex-collections?
The problem which they solved was interpretation of free form text into logical relationships of key words. Essentially a thesaurus that worked from many to one. The variety of logical statements that might be recognized were written with the key words. The free text was parsed into key words.
This was amazingly effective. Uncanny for the users. The implementation is simple in Perl, using it text parsing power and hashes. I'll dig around and see what Perl I have for this.
I just started looking at the Lingua:: modules. There is a lot there. It certainly is a good place to start. Anyone have any experience with these modules?