Программы этого типа меня всегда интересовали, но сделать так ничего не случилось...
Толчком для меня послужила игра LARRY, которая управляла персонажем с помощью вводимых фраз типа "иди налево", "возьми бинокль" и т.д.
Справлялась эта игра со своей задачей весьма неплохо и даже поддерживала диалог с долей юмора...
Типа - "я не буду брать стойку бара - она нам нафиг не нужна"...

Мы с другом потратили уйму времени в попытках загнать игру в логический тупик, но либо она неуклюже выбиралась, либо персонаж погибал...
Кончилось всё декомпиляцией игры Сорсером, в попытке посмотреть алгоритм и способ реакции на нецензурную лексику - а игра и с этим лихо справлялась!

Но с кодом я не разобрался и всё было заброшено...
Второй раз я взялся за такую проблему целенаправленно и потрошил похожую культовую игру "Хоббит". Благо она была в кодах Z80, и я счёл, что это будет легче... Но тут была иная проблема - всё очень сжато и упаковано из-за малых объёмов памяти... Некоторые вещи мне удались и с игрой я почудил (о чём писАл здесь в курилке), но до алгоритмов диалога тоже не добался...
В очередной раз эта тема зацепила меня сейчас, когда я столкнулся в сети с интересной разработкой "Болтун". Автор разработки интересуется проблемами Искусственного Разума:
http://www.boltun.pisem.net/indexo.htm#top
но этот сайт порой недоступен...

На другом сайте этого же автора
http://boltunstyle.narod.ru/index.htm
большее внимание уделено самой программе "Болтун"
http://boltunstyle.narod.ru/br2/about.htm
а также различным обучаемым SmartBotа-м.Болтун - это 32-битная консольная программа, написанная на С++ и имитирующая общение с Искусственным Интеллектом.
http://boltunstyle.narod.ru/index.htm
Кстати говоря, похожего бота "тренирует" одна моя знакомая-математик, и похоже, весьма успешно...

http://lio2004.narod.ru/inf.htm
Что мне в этой связи интересно: много лет спустя, я, конечно, понимаю, что в таких программах идёт разбор строки, анализ её и выбор логики ответа. Но это - в общем...
Интересно, как реализуется "обучаемость" программы и реакция на вводные, которых нет в словаре...
Возможно, кто-либо сталкивался с подобными задачами на более простом уровне - поделитесь опытом?