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

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

Библиотека Morpher предназначена для склонения по падежам слов и словосочетаний на русском языке.

Склонение слов и словосочетаний

        
            #include <stdio.h>
            
            #include "..\russian\Declension.h"
            
            using namespace Morpher::Russian;
            
            int main ()
            {
            	// Загрузка словарей в память:
            	Declension declension;
            
                // Анализ словосочетания:
            	std::unique_ptr <Parse> parse = declension.parse ("Пушкин А.С.");
            
                std::wstring nominative = parse->nominative();         // именительный 
            	std::wstring genetive = parse->genitive();             // родительный
            	std::wstring dative = parse->dative();                 // дательный
            	std::wstring accusative = parse->accusative();         // винительный
            	std::wstring instrumental = parse->instrumental();     // творительный
            	std::wstring prepositional = parse->prepositional();   // предложный
            	std::wstring prepositionalO = parse->prepositionalO(); // предложный с предлогом
            }
        
    

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

        
            #include <stdio.h>
            
            #include "..\russian\Declension.h"
            
            using namespace Morpher::Russian;
            
            int main ()
            {
            	// Загрузка словарей в память:
            	Declension declension;
            
                // Анализ словосочетания:
            	std::unique_ptr <Parse> parse = declension.parse ("Пушкин А.С.", Attribute_Fio);
            
                // Построение формы дательного падежа:
                std::wstring = parse->dative();
            }
        
    

Всего доступно 5 признаков, перечисление представлено следующим кодом

        
            #include <stdio.h>
            
            enum Attributes // C#: Признак
            {
            	Attribute_Masc = 1,    // Мужской род
            	Attribute_Fem = 2,     // Женский
            	Attribute_Fio = 4,     // ФИО
            	Attribute_Naric = 8,   // Нарицательное
            	Attribute_Toponym = 16 // Топоним
            };
        
    

Получение множественного числа

Формы множественного числа можно получить через функцию plural. Если входное словосочетание уже во множественном, или не имеет множественного или является именем человека, то функция plural возвращает nullptr.

        
            #include <stdio.h>
            
            #include "..\russian\Declension.h"
            
            using namespace Morpher::Russian;
            
            int main ()
            {
            	// Загрузка словарей в память:
            	Declension declension;
            
                // Анализ словосочетания:
            	std::unique_ptr <Parse> parse = declension.parse ("Собака");
            
                // Построение формы дательного падежа, множественной формы:
                std::wstring = parse->plural->dative();
            }
        
    

Обращаем ваше внимание, выполнять delete для указателя из метода plural не нужно, delete будет вызван при разрушении объекта parse.

Разделение ФИО на составляющие

Если был передан признак ФИО, или алгоритм определил входную строку как ФИО, то можно получить отдельно имя, отчество, и фамилию.

        
            #include <stdio.h>
            
            #include "..\russian\Declension.h"
            
            using namespace Morpher::Russian;
            
            int main ()
            {
                // Загрузка словарей в память:
                Declension declension;
            
                // Анализ словосочетания:
                std::unique_ptr <Parse> parse = declension.parse ("Пушкин Александр Сергеевич", Attribute_Fio);
            
                // Получение частей ФИО
                std::wstring name       = parse->fio()->GetName();       // Имя
                std::wstring surname    = parse->fio()->GetSurname();    // Фамилия
                std::wstring patronymic = parse->fio()->GetPatronymic(); // Отчество
            }
        
    
В случае, если передана только часть ФИО (ФИ, ИО), то часть строк будет пустая, но не nullptr.

Приобретение библиотеки

Библиотека имеет варианты для Windows и Linux, x86 и x64, для Unicode и однобайтных кодировок, для динамической и статической линковки:

  Windows Linux
Unicode Windows-1251 Unicode KOI8-R
static x86 Заказать Заказать Заказать Заказать
x64 Заказать Заказать Заказать Заказать
dynamic x86 Заказать Заказать Заказать Заказать
x64 Заказать Заказать Заказать Заказать

 

Библиотеки

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