Coder Social home page Coder Social logo

cyriller's Introduction

Cyriller - бесплатная программа склонения по падежам

Кириллер, это полностью открытый проект на c#, который является бесплатной альтернативой Морферу. На данные момент программа умеет:

  • Склонять личные имена, фамилии, отчества без использования словара.
  • Склонять все существительные русского языка, включая имена с использованием словаря.
  • Склонять существительные, которых нет в словаре по ближайшему совпадению.
  • Склонять прилагательные русского языка с использованием словаря.
  • Склонять прилагательные, которых нет в словаре по ближайшему совпадению.
  • Писать числа прописью во всех падежах.
  • Писать деньги прописью, в рублях, долларах, евро, юанях.
  • Писать числа прописью вместе с единицей измерения.

Как пользоваться

Существительное

Склонение существительных выполняется при помощи класса CyrNounCollection. При создании коллекции, весь словарь существительных загружается в память, поэтому не рекомендуется создавать много коллекций, лучше использовать один экземпляр для всех операций.

// Создаем коллекцию всех существительных.
CyrNounCollection collection = new CyrNounCollection();

// Получаем существительное из коллекции используя точное совпадение.
CyrNoun strict = collection.Get("компьютер", GetConditionsEnum.Strict);

// Склоняем существительное в единственном числе.
CyrResult singular = strict.Decline();

// Склоняем существительное в множественном числе.
CyrResult plural = strict.DeclinePlural();

// Получаем существительное из коллекции включая похожие слова.
// Найдет "ёж".
CyrNoun similar = collection.Get("еж", GetConditionsEnum.Similar);

// Склоняем существительное в единственном числе.
singular = noun.Decline();

// Склоняем существительное в множественном числе.
plural = noun.DeclinePlural();

Прилагательное

Склонение прилагательных выполняется при помощи класса CyrAdjectiveCollection. При создании коллекции, весь словарь прилагательных загружается в память, поэтому не рекомендуется создавать много коллекций, лучше использовать один экземпляр для всех операций.

// Создаем коллекцию всех прилагательных.
CyrAdjectiveCollection collection = new CyrAdjectiveCollection();

// Получаем прилагательное в мужском роде из коллекции используя точное совпадение.
CyrAdjective adjective = collection.Get("быстрый", GetConditionsEnum.Strict, GendersEnum.Masculine);

// Склоняем прилагательное в единственном числе для одушевленных предметов.
CyrResult singular = adjective.Decline(AnimatesEnum.Animated);

// Склоняем прилагательное в множественном числе для неодушевленных предметов.
CyrResult plural = adjective.DeclinePlural(AnimatesEnum.Inanimated);

Фраза

При помощи класса CyrPhrase можно склонять словосочетания из существительных и прилагательных.

// Создаем коллекцию всех существительных.
CyrNounCollection nouns = new CyrNounCollection();

// Создаем коллекцию всех прилагательных.
CyrAdjectiveCollection adjectives = new CyrAdjectiveCollection();

// Создаем фразу с использование созданных коллекций.
CyrPhrase phrase = new CyrPhrase(nouns, adjectives);

// Склоняем словосочетание "быстрый компьютер" в единственном числе используя точное совпадение при поиске слов.
CyrResult singular = phrase.Decline("быстрый компьютер", GetConditionsEnum.Strict);

Число

Класс CyrNumber, отвечающий за склонение чисел стоит немного особняком и не нуждается в коллекциях. Тем не менее, CyrNumber может склонять не просто числа, а количество чего-то. Это что-то может выражаться при помощи CyrNoun, которые в свою очередь можно получить из CyrNounCollection.

// Создаем генератор случайных чисел.
Random rand = new Random();

// Создаем склонятор чисел.
CyrNumber number = new CyrNumber();

{
    // Склоняем случайное число.
    CyrResult result = number.Decline(rand.Next(0, 100));
}

{
    // Склоняем случайное количество рублей.
    // Так же можно использовать классы `CyrNumber.EurCurrency`, `CyrNumber.UsdCurrency` и `CyrNumber.YuanCurrency`.
    // Либо создать свой класс унаследовав его от `CyrNumber.Currency`.
    CyrNumber.Currency currency = new CyrNumber.RurCurrency();
    CyrResult result = number.Decline(rand.Next(0, 100), currency);
}

{
    // Создаем коллекцию всех существительных.
    CyrNounCollection nouns = new CyrNounCollection();

    // Получаем существительное из коллекции используя точное совпадение.
    CyrNoun noun = nouns.Get("компьютер", GetConditionsEnum.Strict);

    // Упаковываем существительное для склонения количества.
    CyrNumber.Item item = new CyrNumber.Item(noun);

    // Склоняем случайное количество компьютеров.
    CyrResult result = number.Decline(rand.Next(0, 100), item);
}

// Выбираем правильное склонение существительного в зависимости от количества.
string name = number.Case(rand.Next(0, 100), "компьютер", "компьютера", "компьютеров");

Результат склонения

Класс CyrResult используется для хранения результатов склонения и содержит всевозможные свойства и методы для удобства доступа.

Список наиболее часто используемых свойств:

Название Синоним Тип Описание
Nominative Именительный string Именительный, Кто? Что? (есть)
Genitive Родительный string Родительный, Кого? Чего? (нет)
Dative Дательный string Дательный, Кому? Чему? (дам)
Accusative Винительный string Винительный, Кого? Что? (вижу)
Instrumental Творительный string Творительный, Кем? Чем? (горжусь)
Prepositional Предложный string Предложный, О ком? О чем? (думаю)

Список наиболее часто используемых методов:

Название Параметры Возвращает Описание
Get Cyriller.Model.CasesEnum Case string Возвращает результат склонения в указанном падеже.
ToList List<string> Возвращает результат склонения по всем падежам в виде списка.
ToArray string[] Возвращает результат склонения по всем падежам в виде массива.
ToDictionary Dictionary<CasesEnum, string> Возвращает результат склонения по всем падежам в виде словаря.

Исключения

Коллекции CyrNounCollection и CyrAdjectiveCollection выбрасывают CyrWordNotFoundException исключение если слово не найдено.

Демо

Cyriller можно протестировать онлайн - http://cyriller.2try.ws/.

NuGet пакет

https://www.nuget.org/packages/Miyconst.Cyriller

cyriller's People

Contributors

heuels avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.