Склонение представлений объектов в зуп 3.1

Содержание:

Платный доступ

Если вам нужно склонение больших объемов, зарегистрируйтесь и оплатите подходящий вам тарифный план:

Как приобрести платный доступ: цены, условия, инструкции

Примечание 1: при оплате любого тарифа снимаются .

Примечание 2: тарификация осуществляется по следующему принципу:
каждые 100 символов исходного текста эквивалентны 1 запросу. Если в теле вызова функции russian/addstressmarks указан текст,
длина которого менее 100 символов, то такой вызов функции russian/addstressmarks считается эквивалентным 1 запросу к веб-сервису.
Здесь под символом текста подразумеваются не только буквы русского алфавита, но также любые цифры, знаки препинания, пробелы, прочие знаки и буквы других алфавитов.
При этом следует иметь в виду, что один перенос текста на новую строку может являться двумя символами, если он передан в Windows-стиле, т.е. как пара символов CR LF (см. статью в Википедии на эту тему).

Чтобы стать платным пользователем, вам нужно:

  • Зарегистрироваться.
  • Войти в раздел Управление подпиской и оплатить доступ по одному из вышеперечисленных тарифов.
  • Сгенерировать токен.
  • Добавить к запросу к веб-сервису ваш токен (как это сделать, см. ).

Склонение прилагательных по родам

string ИзменитьРод (string прилагательное, РодЧисло родЧисло);
    

Функция принимает на вход полное прилагательное в форме именительного падежа мужского рода, а также род и число, в которые его необходимо поставить.
Вот пример функции, которая согласует прилагательное с существительным:

string Согласовать (string прилагательное, string существительное)
{
    return склонятель.ИзменитьРод (прилагательное, 
           склонятель.Проанализировать (существительное).РодЧисло) + " " + существительное;
}

Для прилагательного острый и существительных нож, бритва, копье, ножницы
функция выдаст соответственно:

  • острый нож
  • острая бритва
  • острое копье
  • острые ножницы

Функция возвращает null, если:

  • входная строка равна null;
  • входная строка не может быть распознана как одно полное прилагательное или причастие
    в форме мужского рода именительного падежа единственного числа.

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

Снятие неоднозначности дополнительными признаками

Русский язык богат всевозможными двусмысленностями, которые затрудняют задачу склонения.

Например, слово банки может склоняться как банок или банков – смотря что имелось в виду.
Имя Карен может склоняться или не склоняться в зависимости от того, принадлежит оно мужчине,
или женщине.
Для разрешения подобного рода неоднозначностей предусмотрена возможность указания так называемых дополнительных признаков.
Вот как может измениться результат склонения в зависимости от указанного признака:

Исходная строка Падеж Доп. признак Результат склонения
Карен дательный Мужской Карену
Женский Карен
Любовь дательный ФИО Любови
нарицательное Любви
Ростов творительный ФИО Ростовым
топоним Ростовом

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

  • Август и
    август
  • Любовь и
    любовь

Как видно из примеров, в сомнительных случаях программа ориентируется на заглавные буквы.
Но что делать, если, например, пользователи вашего сайта любят вводить свои имена и ники
маленькими буквами? Для этого есть возможность указать программе, что
входная строка содержит ФИО или псевдоним, а не что-то другое. Таким образом неоднозначность будет устранена.

Купить модуль morpher для PHP

«Бизнес» «Компания» «Корпорация»
Срок лицензии Не ограничен 5 лет Не ограничен
Поддержка,
гарантия 
и обновления 
1 год 5 лет в течение всего срока лицензии
Помощь со сборкой под вашу платформу  Под одну платформу Под одну платформу Под три платформы
Заключение договора, пересылка по почте Да Да
Цена 19 900 р.разово 45 000 р.разово 29 000 р.в год
Заказать Заказать

Примечания:

  1. Поддержка включает в себя консультации по использованию модуля по телефону и электронной почте.
    Наши контакты.
  2. Гарантия работоспособности и отсутствия дефектов. Если вы обнаружите в модуле дефекты, такие как зависание,
    аварийное завершение работы или несоответствие документации, мы обязуемся устранить эти дефекты.
    Неправильное склонение или определение рода не признается дефектом.
  3. Обновления. При выходе новой версии вы сможете скачать ее бесплатно по той же самой ссылке (ссылка будет выслана вам в письме).
  4. Модуль под Linux-версию PHP поставляется в виде исходных кодов на C++ и для сборки требует
    настроенного и работающего набора инструментов компилятора gcc версии 4.7 и выше.
    По нашему опыту примерно 20% пользователей требуется помощь с настройкой gcc.
    Помощь обычно предоставляется через ssh-соединение к вашему терминалу.
    Заказать сборку под (еще) одну платформу можно у нас за 3000 р.

Процесс покупки лицензии «Бизнес» займет всего несколько минут.

Использование библиотеки

Весь API библиотеки Morpher.Russian.Speller.dll можно схематично представить следующим кодом:

namespace Morpher.Russian
{
    public class DateSpeller
    {
        public DateSpeller(OrdinalSpeller ordinalSpeller);

        public string SpellDate (
            DateTime date, 
            Падеж падеж = Падеж.Именительный,
            bool useOne = false);
    }

    public class OrdinalSpeller
    {
        public OrdinalSpeller(Склонятель склонятель);

        public string SpellOrdinal (
            long number,
            bool useOne = false);

        public OrdinalResult AgreeOrdinal (
            string ordinal,
            string unit,
            Падеж падеж = Падеж.Именительный);
    }
}

Функция прописи даты

public string SpellDate (
    DateTime date,
    Падеж падеж = Падеж.Именительный,
    bool useOne = false);

Параметры:

  1. date – дата для прописи. Значение времени в этом параметре будет проигнорировано.
  2. падеж – падеж, в который необходимо поставить дату.
  3. useOne – писать ли «одна» перед словом «тысяча»:
    тысяча девятьсот пятого года или
    одна тысяча девятьсот пятого года.

Функция возвращает дату прописью, например
первое января две тысячи первого года.

Пример использования

var склонятель = new Склонятель("%YOUR KEY%");
var ordinalSpeller = new OrdinalSpeller(склонятель);
var dateSpeller = new DateSpeller(ordinalSpeller);

// «Сегодня двадцать второе июля две тысячи девятнадцатого года»
Console.WriteLine ("Сегодня {0}", 
    dateSpeller.SpellDate(DateTime.Now));

// «01.05.2018 в творительном падеже: первым мая две тысячи восемнадцатого года»
Console.WriteLine ("01.05.2018 в творительном падеже: {0}", 
    dateSpeller.SpellDate(new DateTime(2018, 5, 1), Падеж.Творительный));

Функция прописи порядковых числительных

public string SpellOrdinal (long number, bool useOne = false);

Параметры:

  1. number – число для прописи.
  2. useOne – добавлять ли слово «один»: (одна) тысяча первый, (одно)миллионный и т.п.

Функция возвращает порядковое числительное прописью в мужском роде (которое потом можно просклонять в нужный род методом AgreeOrdinal).

Пример использования

// «миллиард двести тридцать четыре миллиона пятьсот шестьдесят семь тысяч восемьсот девяностый»
Console.WriteLine (ordinalSpeller.SpellOrdinal (1234567890));

// «один миллиард двести тридцать четыре миллиона пятьсот шестьдесят семь тысяч восемьсот девяностый»
Console.WriteLine (ordinalSpeller.SpellOrdinal (1234567890, useOne: true));

Функция склонения порядковых числительных по падежам и родам

public OrdinalResult AgreeOrdinal (string ordinal, string unit, Падеж падеж = Падеж.Именительный);

Параметры:

  1. ordinal – порядковое числительное в мужском роде, например, пятый.
  2. unit – единица измерения, с которой нужно согласовать числительное, например, колесо.
  3. падеж – падеж, в который необходимо поставить числительное и единицу измерения (пятое колесо, пятого колеса, пятому колесу…).

Функция возвращает исходные порядковое числительное и единицу измерения в указанном падеже в виде структуры OrdinalResult:

public struct OrdinalResult
{
    public string Ordinal; // порядковое числительное
    public string Unit;    // единица измерения
}

Числительное, кроме склонения по падежам, согласуется с единицей измерения по роду, числу и одушевленности:

Числительное Единица измерения Падеж Результат
пятый нога Именительный (кто? что?) пятая нога
пятый колесо Именительный (кто? что?) пятое колесо
пятый сутки Именительный (кто? что?) пятые сутки
первый блин Винительный (кого? что?) первый блин
первый парень Винительный (кого? что?) первого парня

Пример использования

OrdinalResult r = ordinalSpeller.AgreeOrdinal ("первый", "свидание");
Console.WriteLine ("{0} {1}", r.Ordinal, r.Unit); // «первое свидание» 

Технические характеристики

Модуль имеет версии для Linux и Windows. Мак пока не поддерживается.

Поддерживаемые версии PHP: 5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4.

Работа расширения была успешно протестирована в следующих дистрибутивах Linux:

  • Debian 7 (Wheezy), Debian 8 (Jessie), Debian 9 (Stretch);
  • Ubuntu 14 (Trusty), Ubuntu 16 (Xenial), Ubuntu 18 (Bionic);
  • CentOS 7.

Модуль также может успешно использоваться в FreeBSD актуальных версий.

Работа модуля была проверена на веб-серверах Apache и lighttpd.

Модуль не требует для своей работы подключения к Интернету и не передает никакие данные в Интернет.

Ограничения

  • При попытке просклонять принципиально несклоняемое слово (например, глагол)
    программа не выдает ошибку, а пытается просклонять его как сможет: например,
    глагол давать программа может просклонять подобно существительному кровать.
  • Не реализовано склонение числительных (три кота), однако есть функция преобразования числа,
    заданного цифрами, в пропись и склонения его вместе с единицей измерения,
    что позволяет при заданном количестве (3) и единице измерения (кот) получить словосочетание
    три кота, трёх котов, трём котам и т.д. во всех падежах.
  • Для ФИО формы множественного числа не выдаются.
  • Не всегда правильно склоняются словосочетания с наречиями
    (в будущем планируется устранить это ограничение).
  • Могут неправильно склоняться словосочетания с причастными оборотами: жаренная на масле картошка.
    Такие обороты практически не встречаются в названиях товаров, городов, должностей, т.е. в том материале,
    для склонения которого обычно используется Морфер.
  • Для слов из разряда singularia tantum
    программа строит несуществующее множественное число:
    молоко,
    еда.
  • Сочетания «нарицательное + собственное» лучше склонять раздельно, например:
    программист Петров, город Калининград.

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

Дата Версия  
16.06.2020 1.4.1
  • Исправлено склонение ряда женских имен Ближнего Востока:
    Алмаз, Анушик, Алтнат и др.
  • Исправлено склонение фамилий на -КО и других.
  • Теперь не склоняются слова в кавычках: Сторожевой корабль «Сметливый».
  • Исправлена ошибка в функции ,
    возникавшая при прописи числа 500 триллионов.
  • Добавлено 65 новых слов.
02.03.2020 1.4.0 Добавлена функция и поддержка пользовательского словаря.
Добавлена функция прописи чисел в виде порядковых числительных и функция прописи дат .
Добавлена поддержка флагов склонений в функциях и .
Добавлена поддержка версий PHP 7.3 — 7.4.
Исправлено склонение словосочетаний «Вр. и. о. начальника», «врио начальника» и подобных.
Обновлены словари исключений для русского и украинского языка.
16.09.2019 1.3.0 Добавлено более 150 новых слов.
Функция теперь учитывает инициалы и выдает их в виде частей ФИО.
Теперь правильно склоняется «Заместитель Председателя Правления».
Исправлена обработка некоторых собственных имен, содержащих букву ё.
Для популярных дистрибутивов Linux модуль теперь поставляется в собранном виде (morpher.so).
Исправлена сборка модуля для FreeBSD 11.
10.09.2018 1.2.12 Добавлено 63 новых слова. Слово «Армавир» теперь по умолчанию склоняется как название города, а не как мужское имя.
10.05.2018 1.2.11 Исправлено ошибочное склонение наречий отдельно, слегка, почти, совершенно. Исправлено склонение узбекской денежной единицы тийин.
15.01.2018 1.2.10 Пополнение словаря (60 слов).
Автоматическая сборка под Windows для PHP 5.2-7.2.
Исправлена ошибка чаек — чайком (было чаьйком) и подобные (буек, Бабуек).
15.09.2017 1.2.9 Исправлена сборка на GCC 4.7.X.
29.06.2017 1.2.8 Исправлено склонение с сокращением: ООО «Рога и Копыта».
7.06.2017 1.2.7 Добавлена функция .
17.01.2017 1.2.4 В функции исправлена ошибка «ноль годов».
Добавлены копейки к белорусскому рублю в связи с его деноминацией.
Старый (до июня 2016 г.) белорусский рубль имеет обозначение BYR, новый — BYN.
Пропись BYR не содержит копеек, а BYN содержит.
13.01.2017 1.2.3 Исправлено склонение некоторых слов с дефисом, например: Нью-Йорк, Лос-Анджелес.
Ранее неправильно выдавался винительный падеж: Нью-Йорка, Лос-Анджелеса
вместо правильных Нью-Йорк, Лос-Анджелес.
9.09.2016 1.2.2 Внутреннее имя модуля morpher.so изменено с на . «Неправильное» имя никак не сказывалось на работоспособности модуля,
просто приводило к путанице, т.к. в выводе команды модуль фигурировал как . Теперь выдается .
7.09.2016 1.2.1 Исправлена ошибка компиляции, проявлявшаяся на некоторых версиях gcc. Ошибка была внесена в предыдущей версии.
2.09.2016 1.2.0 Добавлены функции склонения и определения рода для украинского языка.
30.08.2016 1.1.0
  • Добавлена функция прописи чисел и денежных сумм.
  • Исправлены ошибки, внесенные в предыдущей версии:

    • для параметра «падеж», равного , выдавалась форма без предлога, как для ;
    • для параметра «падеж», равного , выдавалась форма родительного падежа, как для .
07.08.2016 1.0.10 Добавлена функция перевода из единственного числа во множественное.
25.04.2016 1.0.9 Поддержка PHP 7.
24.04.2016 1.0.8 Улучшена совмесимость с ОС CentOS.
9.11.2014 1.0.4 Процедура установки изменена таким образом, что модуль теперь настраивается на вашу версию PHP во время установки.
В предыдущих версиях под каждую версию PHP (5.3, 5.4, 5.5…) поставлялась отдельная версия модуля.
20.06.2014 1.0.3 Исправлен дефект, при котором функции и
могли выдавать
при корректных входных данных, если в веб-сервере установлена нестандартная локаль.
Теперь работа этих функций не зависит от выбранной локали.
10.06.2014 1.0.2 Исправлен дефект, при котором функция могла выдавать
при корректных входных данных, при этом поведение функции могло меняться от запуска к запуску.
29.05.2014 1.0.1 Функция переименована в . Добавлена функция .

Пользовательский словарь (russian/userdict, ukrainian/userdict)

Веб-сервис поддерживает исправление склонения по требованию пользователя.
Для этого имеются 3 метода:

Функция Метод Значение
/russian/userdict/ukrainian/userdict Получить список всех добавленных исправлений
/russian/userdict/ukrainian/userdict Добавить или изменить исправление
/russian/userdict/ukrainian/userdict Удалить исправление

Все функции пользовательского словаря требуют
и при его отсутствии возвращают ошибку с кодом 25 и статусом 400 или ошибку с кодом 9 и статусом 498, если указанный токен не найден.
Исправления видны только пользователю с указанным токеном.

Добавить или изменить исправление

Для добавления или изменения исправления нужно отправить POST запрос на /russian/userdict
(/ukrainian/userdict для украинского языка соответственно).
Тело запроса должно быть представлено в формате
,
который используется по умолчанию для POST-запросов.
Например, если мы хотим изменить дательный падеж для слова «Кошка»,
то тело запроса будет иметь вид:

И=Кошка&Д=Пантере
Н=Кiшка&Д=Пантерi

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

Названия параметров (russian/userdict)

Параметр Падеж
И Именительный
Р Родительный
Д Дательный
В Винительный
Т Творительный
П Предложный с предлогом О/ОБ/ОБО или без
М Местный без предлога
М_И Именительный (множественное число)
М_Р Родительный (множественное число)
М_Д Дательный (множественное число)
М_В Винительный (множественное число)
М_Т Творительный (множественное число)
М_П Предложный (множественное число) с предлогом О/ОБ/ОБО или без
М_М Местный (множественное число) без предлога

Названия параметров (ukrainian/userdict)

Параметр Падеж
Н Називний
Р Родовий
Д Давальний
З Знахiдний
О Орудний
М Мiсцевий
К Кличний

Повторный вызов метода с уже существующим исправлением добавит или изменит текущее исправление.
Если мы захотим к нашему исправлению «Кошка» добавить еще родительный падеж, нам достаточно будет передать «И=Кошка&Р=Пантеры».
В итоге останется старое исправление на дательный падеж и добавится новое на родительный.
Если мы вызовем метод еще раз с дательным или родительным падежом, мы изменим текущее исправление для этих падежей.

Метод POST может возвращать следующие ошибки:

Код Статус Значение
6 400 Не указан обязательный параметр: И.
6 400 Нужно указать хотя бы одну косвенную форму.

Получить список исправлений

/russian/userdict/ukrainian/userdict

Пример ответа:

<?xml version="1.0" encoding="utf-8"?>
<dictionary>
    <Entry>
        <singular>
            <И>Кошка</И>
            <Р>Пантеры</Р>
            <Д>Пантере</Д>
        </singular>
    </Entry>
<dictionary>

XSD схема ответа на russian/userdict: Russian.xsd

XSD схема ответа на ukrainian/userdict: Ukrainian.xsd

Удаление исправления

Для того чтобы удалить исправление, достаточно передать DELETE запрос вида:

Например, чтобы удалить все исправления для слова «Кошка», нужно передать:

Для украинского языка:

Метод DELETE может возвращать следующие ошибки:

Код Статус Значение
6 400 Не указан обязательный параметр: s.

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

Дата Версия Описание
26.07.2019 1.4.11.0 Исправлено склонение слов чаек — чайком и подобных (буек, Бабуек);  наречий отдельно, слегка, почти, совершенно; узбекской денежной единицы тийин; названия города Армавир; словосочетания «Заместитель Председателя Правления». Пополнение словаря.
19.12.2017 1.4.10.0 Пополнение словаря.
17.01.2017 1.4.8.0 В функции Пропись исправлена ошибка «ноль годов».
Добавлены копейки к белорусскому рублю в связи с его деноминацией.
Старый (до июня 2016 г.) белорусский рубль имеет обозначение BYR, новый — BYN.
Пропись BYR не содержит копеек, а BYN содержит.
16.01.2017 1.4.7.0 Пополнение словаря. В частности, исправлено склонение слова роялти.
15.01.2017 1.4.6.0 Исправлено склонение некоторых слов с дефисом, например: Нью-Йорк, Лос-Анджелес.
Ранее неправильно выдавался винительный падеж: Нью-Йорка, Лос-Анджелеса
вместо правильных Нью-Йорк, Лос-Анджелес.
26.05.2016 1.4.5.0 Исправлена ошибка в склонении отчества Олеговна.
19.04.2015 1.4.4.0 Исправлена ошибка в функции Пропись: вместо неправильного «5 годов» теперь выдается правильное «5 лет».
Ошибка касалась только единицы измерения «год» (это слово – исключение).
17.03.2015 1.4.3.0 Исправлена ошибка в функции Пропись. Ошибка проявлялась для сумм с числом копеек 0x. В результате выдавалось x0 копеек вместо 0x.
21.08.2014 1.4.1.0 Пополнение словарей. Исправлено склонение фамилии Ведмідь на украинском.
12.08.2014 1.4.0.0 Добавлена функция Множественное, позволяющая получить форму именительного падежа множественного числа слова или словосочетания.
07.01.2014 1.3.6.0 Добавлена функция ПредложныйО, возвращающая форму предложного падежа с предлогом О/ОБ/ОБО.
11.12.2013 1.3.5.0 Небольшое пополнение словаря (русского и украинского).

10.12.2013 ‏‎ 1.3.4.0 В украинский алгоритм добавлен учет «апострофов» вида Дерев”яна и Дерев»яна.
11.11.2013 ‏‎ 1.3.3.0 При указании более двух цифр после запятой в денежной сумме теперь выдается .
11.10.2013 ‏‎ 1.3.2.0 Исправлена ошибка, вызывавшая сбой Excel при склонении фразы «Складной массажный стол Vision Apollo I».
30.09.2013 ‏‎ 1.3.1.0 Добавлена возможность указания денежных единиц в сокращенном виде: руб, долл, грн, тнг.
25.09.2013 ‏‎ 1.3.0.0 Добавлена функция прописи денежных сумм и чисел на русском языке.
10.09.2013 ‏‎ 1.2.4.0 Уточнены некоторые формулировки в мастере функций. Нейтрализована известная ошибка в Excel,
в результате которой некоторые сообщения в мастере функций выводились не полностью
(Argument Description String Truncation in the Function Wizard).
5.09.2013 ‏‎ 1.2.3.0 Исправлена ошибка в названии категории функции Рід.
29.01.2013 ‏‎ 1.2.2.0 Исправлены ошибки в склонении, указанные пользователями.
Добавлены правила для учета несклоняемых украинских фамилий на -ИХ (Грицьких).
28.01.2013 ‏‎ 1.2.1.0 Исправлены ошибки в склонении, указанные пользователями.
Учет двух видов апострофов в украинских словах, например,

Мар’янович и Мар’янович.

‎03.01.2013 ‏‎ 1.2.0.0 Добавлена функция определения рода (пола) для русского и украинского языков.
‎25.11.‎2012 ‏‎ 1.1.0.0 Добавлены функции склонения ФИО на украинском языке.
‎20.12.‎2011 ‏‎ 1.0.0.2 Добавлена возможность склонения данных из нескольких ячеек.
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *