Знаете, всё сложно с машинным обучением. Точность никогда не достигает
100% -- а часто даже и 95%. Rule-based системы в NLP пока что ещё
побеждают (хоть и отрыв от нейросетей уже небольшой).
Кроме того, 40 тысяч примеров -- это ужасно мало для машинного
обучения. 40 тысяч примеров -- это даже не 40 тысяч правил, это скорее
400 правил.
Маленькая модель будет неточной, большая -- переобучится, но тоже
будет неточной.
Можете попробовать сделать так: понабрать в текстах десятки миллионов
словосочетаний, просклонять вашим алгоритмом, а потом уже натравить на
это какую-нибудь нейросеть. Ошибки всё равно будут, конечно.
Мне кажется, можно попытаться научиться делать errors backpropagation
для системы, основанной на правилах -- т.е. когда, с помощью обратной
связи, ошибки изменяют существующие правила или дополняют их.
По сути, вы накапливаете для каждого правила статистику, когда оно
работает, а когда не работает, и как часто это происходит.
Но всё это по-прежнему требует огромного количества ручного труда.