Для решения вашей задачи необходимо изучить алгоритм Байеса (
bazhenov.me/blog/2012/06/11/naive-bayes) и использовать библиотеку pymorphy2 для выделения нормальной формы слов. Все реализуется за пару дней на phyton. Работает с точностью до 90%, в тех случаях которые вы описали.
P/S/ У нас работает для автоматической классификации запросов от пользователей :) Классификатор достаточно ветвистый. Мы не использовали готовые библиотеки для алгоритма -хотелось поиграться самими. В качестве БД используется sqllite.