Может немного не в тему, но есть перл-мудуль Chatbot :: Eliza - моделирует работу психотерапевта (воспринимает строку, преобразует ее преобразует ее в соответствии с набором правил и выдает в форме ответа). На практике не использовал, прочитал в книге "Разработка сетевых программ на Perl" (Линкольн Д. Штайн)
Когда я в школе еще учился, один парень написал прогу которая диалог с пользователем вела. Он просто хранил список вопросов и список ответов к ним. При получении вопроса по определенному алгоритму находил подходящий вопрос в свой базе, и выдавал ответ. Если подходящего вопроса в базе не было, программа просто выводила, что не может ответить на вопрос пользователя и просила ввести ответ