Вот, например,
описание языка шаблонов, использованного в чат-боте Suzette, лауреате
премии Лёбнера 2010 г.
Суть в том, что по мере парсинга фраз изменяется состояние чат-бота - он на лету создаёт набор переменных, занося в них данные. После чего состояние этих переменных в дальнейшем анализируется. Также шаблоны организованы в древовидную структуру. Т.е. после выбора темы для разговора дальнейшая обработка ввода происходит уже лишь в некотором подмножестве шаблонов.