Портировал код вероятностного алгоритма с C# на C++ и вывел через API (
http://www.solarix.ru/for_developers/api/lemmatizator-api.shtml). Кое-чем пришлось пожертвовать в ущерб общей точности лемматизации, но в целом получилось пока неплохо. Например, если на странице онлайн-демонстрашки
http://178.64.252.139:8080/Lemmatization.aspx ввести фразу "мы ели суп, а вдоль аллеи стояли раскидистые ели", то получится вот такая красотень:
Первое "если" распознано как глагол, второе - как существительное. Сам по себе лемматизатор о частях речи, конечно, не знает, но обученная модель видит эти отличия и нормализует слова правильно.
В будущем по мере роста объема эталонного корпуса буду пересчитывать модель и обновлять лемматизатор. Посмотрим, насколько устойчиво будет качество.