morpher.ru +7 (925) 336 9960
nowhere@morpher.ru
 
 
Мой Морфер

Библиотека склонения на украинском языке

Купить

Библиотека Morpher.Ukrainian.dll выполняет автоматическое склонение ФИО на украинcком языке. На входе программы — форма именительного падежа (називний вiдмiнок), на выходе — формы всех падежей в единственном числе (демо). Множественное число пока не строится.

Склонение по падежам и определение рода

        
            using Morpher.Ukrainian;
            
            void Main()
            {
                Console.OutputEncoding = Encoding.UTF8;
                var declension = new Declension();
                INounPhrase nounPhrase = declension.Parse("Крутько Катерина Володимирiвна");
                Console.WriteLine(nounPhrase.Dative);   // Крутько Катерині Володимирівні
                Console.WriteLine(nounPhrase.GenderAndNumber); // Feminine
            }
        
    

В данном случае строится форма единственного числа дательного падежа (nounPhrase.Dative). Интерфейс INounPhrase содержит следующие свойства:

        
            interface INounPhrase
            {
                string          Nominative;      // Називний
                string          Genetive;        // Родовий
                string          Dative;          // Давальний
                string          Accusative;      // Знахiдний
                string          Instrumental;    // Орудний
                string          Locative;        // Мiсцевий
                string          Vocative;        // Кличний
                GenderAndNumber GenderAndNumber; // Род и число
            }
        
    

Свойство GenderAndNumber возвращает автоматически распознанные род и число словосочетания:

        
            enum GenderAndNumber
            {
                Masculine, // мужской род
                Feminine,  // женский род
                Neuter,    // средний род
                Plural     // множественное число
            }
        
    

Передача рода и числа в функцию склонения

В некоторых случаях, когда род невозможно определить по имени, бывает полезно указать программе желаемый род. Передача рода и числа необязательна, но может помочь программе просклонять словосочетание правильно. Это делается так:

        
            var declensionArgs = new DeclensionArgs()
            {
                GenderAndNumber = GenderAndNumber.Feminine
            };
            INounPhrase nounPhrase = declension.Parse("Черновалюк Женя", declensionArgs);
            Console.WriteLine(nounPhrase.Dative);   // Черновалюк Жені, если женский
                                                    // Черновалюку Жені, если мужской
        
    

Пользовательский словарь

По аналогии с пользовательским словарем для русского языка, украинский пользовательский словарь служит для коррекции склонения отдельных словосочетаний. Чтобы подключить словарь к библиотеке, нужно передать его в конструктор класса Declension:

        
            var declension = new Declension(new StreamReader ("MyDict.xml"));   
        
    

IUserDictionary

Имеется также конструктор, принимающий пользовательский словарь в виде интерфейса IUserDictionary:

        
            public interface IUserDictionary
            {
                Entry Lookup (string nominativeSingular);
            }
        
    

Формат словаря

Все рекомендации по составлению русского словаря также применимы и для украинского, но структура немного отличается:
        
            <?xml version="1.0" encoding="utf-8"?>
            <dictionary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:noNamespaceSchemaLocation="Ukrainian.xsd">
              <entry gender="masculine">    
                  <Н>помідор</Н>
                  <Р>помідора</Р>
                  <Д>помідору</Д>
                  <З>помідор</З>
                  <О>помідором</О>
                  <М>помідорі</М>
                  <К>помідоре</К>
              </entry>
              <entry>    
                  <Н>капуста</Н>
                  <Д>капусті</Д>
                  <З>капусту</З>
              </entry>
            </dictionary>
        
    
Файл схемы Ukrainian.xsd

Пропись чисел

        
            var numberSpeller = new NumberSpeller();
            INumeralPhrase numeralPhrase = numberSpeller.spell(10, "рубль");
            Console.WriteLine($"У розмiрi {numeralPhrase.Numeral.Genitive} 
                                          {numeralPhrase.Unit.Genitive}");

        
    

В результате выполнения получим “У розмiрi десяти рублів”.

Технические характеристики библиотеки

  • Поддерживаемые платформы: .NET 4.0+, .NET Standard 2.0+.
  • Архитектура процессора: AnyCPU.
  • Библиотека не имеет интерфейса пользователя и не требует прав доступа к диску или сети.
  • Все классы неизменяемы и потокобезопасны.

История изменений

Дата Версия  
04.02.2020 1.2.0 Поддержка .NET Standard 2.0.
20.09.2019 1.1.1 Переход на .NET. Избавление от зависимости от MSVC++ Redistributable. Уменьшение размера сборки.
18.05.2018 1.1.0 Добавлена возможность исправления склонения отдельных словосочетаний с помощью пользовательского словаря. Реализовано склонение названий месяцев и дней недели. В Nuget-пакет добавлен файл с XML-комментариями.
04.03.2018 1.0.1083 Первый релиз.
Купить

 

Библиотеки

© Сергей Слепов, 2003 - 2024.