Расскажу, чем всё закончилось.
Действительно, я прекратил изобретение велосипедов и посмотрел в сторону AIML.
Нашёлся нормальный движок, который умеет это язык разметки обрабатывать. Пришлось чуток допилить, чтобы движок умел ещё и учиться.
Исходники здесь:
https://github.com/may-cat/Program-O
Вопросы сюда:
maicatus@gmail.com