На тестовых данных выглядит очень многообещающе и даже чудесно.
Исходное предложение:
Хазяин беспакоится за чистату басейна.
Результат частеречной разметки и лемматизации в новой версии парсера, которую я сейчас обучаю на новом корпусе:
Хазяин беспакоится за чистату басейна.
Хазяин
0
хозяин
СУЩЕСТВИТЕЛЬНОЕ
ПАДЕЖ:ИМ|ЧИСЛО:ЕД|РОД:МУЖ|ПЕРЕЧИСЛИМОСТЬ:ДА|ОДУШ:ОДУШ|ПАДЕЖВАЛ:РОД
беспакоится
1
беспокоиться
ГЛАГОЛ
НАКЛОНЕНИЕ:ИЗЪЯВ|ВРЕМЯ:НАСТОЯЩЕЕ|ЛИЦО:3|ЧИСЛО:ЕД|ПЕРЕХОДНОСТЬ:НЕПЕРЕХОДНЫЙ|ВИД:НЕСОВЕРШ|ВОЗВРАТНОСТЬ:0|МОДАЛЬНЫЙ:0
за
2
за
ПРЕДЛОГ
ПАДЕЖ:ВИН|ПАДЕЖ:ТВОР
чистату
3
чистота
СУЩЕСТВИТЕЛЬНОЕ
ПАДЕЖ:ВИН|ЧИСЛО:ЕД|РОД:ЖЕН|ОДУШ:НЕОДУШ|ПЕРЕЧИСЛИМОСТЬ:НЕТ|ПАДЕЖВАЛ:РОД
басейна
4
бассейн
СУЩЕСТВИТЕЛЬНОЕ
ПАДЕЖ:РОД|ЧИСЛО:ЕД|РОД:МУЖ|ОДУШ:НЕОДУШ|ПЕРЕЧИСЛИМОСТЬ:ДА|ПАДЕЖВАЛ:РОД
.
5
.
ПУНКТУАТОР
Таким образом, движок смог скорректировать все опечатки в этом предложении!
Остается вопрос со слиянием и дроблением слов, то есть с ошибками типа "вобщем". Из общих соображений, задача должна решиться с помощью обычной language model, которая сможет присвоить вероятность цепочке слов при наличии множества oov. Из множества альтернатив я пока выбрал два варианта для экспериментальной реализации:
1. старая и очень добрая
Kneser-Ney language model2. многообещающий класс RNN language model типа
тынц или
тынц