Кириллер - развитие проекта

Не прошло и двух месяцев, как я закончил вторую версию Кириллера.

Кириллер - бесплатная c# программа для склонения существительных, прилагательных по падежам и написания чисел прописью

Когда я начинал работу над проектом, я надеялся загнать русский язык в рамки, то есть, выявить правила склонения в зависимости от окончания слова. Очень быстро обнаружив, что исключений из правил больше, чем самих правил, я решил сделать справочник, который будет давать хоть какое-то представление о слове. В справочнике содержалось существительное в именительном падеже, его род, одушевленность и тип слова (имя, фамилия, название города или подобное).

Таким образом мне удалось сделать склонение существительных имея слово в именительном падеже, его род и одушевленность. Но для реализации потребовалось очень много времени и кода. Кроме этого, еще предстояло делать множественное число и прилагательные.

Поэтому я решил пойти по пути автора вот этой библиотеки: LingvoNET - Библиотека для склонения и спряжения слов русского языка. В какой-то момент, я даже хотел забросить проект, поскольку LingvoNET делает, все что нужно. Но LingvoNET нельзя использовать в коммерческих целях, а исходный код скрыт.

Новая версия содержит не только справочник существительных, а еще справочник правил склонения. Значения в справочнике выглядят где-то так:

ра2,ру2,,ром2,ре2,ра2,ров2,рам2,ра2,рами2,рах2
са2,су2,са2,сом2,се2,сы2,сов2,сам2,сов2,сами2,сах2
ы1,е1,у1,ой1,е1,ёзы3,ёз3,м,ёзы3,ми,х

Не трудно догадаться, что это значит. Правила склонения по падежам разделены запятыми, каждое правило содержит окончание и число. Число обозначает, сколько символов с конца надо отрезать, перед добавлением окончания. Таким образом, в справочник слов еще добавился номер правила склонения.

Кроме этого, я так же сделал поиск похожего слова по окончанию, если слово не найдено в словаре. На данный момент поиск работает "просто и сердито", – для каждого слова из словаря высчитывается кол-во совпадающих букв с конца. Затем выбирается самое короткое слово из тех, у кого больше всего совпадений.

Данный подход позволил мне за короткое время добавить склонение существительных в множественном числе и склонение прилагательных. А также сделать написание чисел прописью вместе с единицей измерения.

Написание чисел прописью не требует каких-то словарей. Поэтому в ближайшее будущее планирую выпустить JavaScript версию.

Исходный код, dll, базу данных и примеры можно скачать с сайта: http://cyriller.2go.ws/Download.

Буду рад, любым замечаниям и предложениям.

Автор , дата
Views: 1732 Comments: 4
Dmitriy on 13 October 2015 11:35 says

Здравствуйте! Наткнулся на Ваш проект в поисках склонений должностей.

Интересует именно склонение должностей, нашел класс CyrPhrase, но он с должностями себя плохо ведет.

Вопросы.

У Вас реализовано склонение должностей? Или надо склонять в этом случае по словам?

Const on 13 October 2015 12:02 says

Dmitriy, добрый день!

Класс CyrPhrase имеет два режима склонения: "Строгое совпадение слов" и "Частичное совпадение".

Режим склонения указывается вторым параметром. Пример можно посмотреть тут: https://github.com/miyconst/Cyriller/blob/master/Cyriller.Web/Controllers/DeclineController.cs#L117.

Это же применимо и к классу CyrNounCollection, который можно использовать в данном случае.

В большинстве случаев у должности склоняются только те слова, которые представлены в именительном падеже. К примеру Генеральный директор управляющей палаты, тут будут склоняться только генеральный и директор.

Следовательно, вам нужно сделать функцию, которая будет разрезать должность на слова и склонять только те, что есть в словаре.

Пишите на почту, если возникнут трудности.

Александр on 14 May 2016 20:50 says

Если нужно, могу прислать свою версию кода "Число прописью". Понимает любое число. Вплоть до зиллиона. Также понимает десятичные дроби. Код короткий и понятный.

Const on 14 May 2016 20:58 says

Александр, добрый день. Конечно интересно, выложите на GitHub и опубликуйте ссылку.