morpher.ru 8 (499) 647 86 54
nowhere@morpher.ru
 
 
Мой Морфер

Веб-сервис склонения по падежам «Морфер» 3.0

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

Веб-сервис может быть использован для автоматизации следующих задач:

Также на этой странице:

Код веб-сервиса открыт и находится на GitHub. Комментарии и форки приветствуются!

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

Пример вызова функции склонения через HTTP GET:

https://ws3.morpher.ru/russian/declension?s=Соединенное%20королевство

В ответ получим:

  • <xml>
    • <Р>Соединенного королевства</Р>
    • <Д>Соединенному королевству</Д>
    • <В>Соединенное королевство</В>
    • <Т>Соединенным королевством</Т>
    • <П>Соединенном королевстве</П>
    • <П-о>о Соединенном королевстве</П-о>
    • <род>Средний</род> Тег <род>
    • <множественное>
      • <И>Соединенные королевства</И>
      • <Р>Соединенных королевств</Р>
      • <Д>Соединенным королевствам</Д>
      • <В>Соединенные королевства</В>
      • <Т>Соединенными королевствами</Т>
      • <П>Соединенных королевствах</П>
      • <П-о>о Соединенных королевствах</П-о>
    • </множественное>
    • <где>в Соединенном королевстве</где> Теги <где>, <куда> и <откуда>
    • <куда>в Соединенное королевство</куда>
    • <откуда>из Соединенного королевства</откуда>
  • </xml>

В случае json запроса:

  • {
    • "Р": "Соединенного королевства",
    • "Д": "Соединенному королевству",
    • "В": "Соединенное королевство",
    • "Т": "Соединенным королевством",
    • "П": "Соединенном королевстве",
    • "П-о": "о Соединенном королевстве",
    • "род": "Средний",
    • "множественное" : {
      • "И": "Соединенные королевства",
      • "Р": "Соединенных королевств",
      • "Д": "Соединенным королевствам",
      • "В": "Соединенные королевства",
      • "Т": "Соединенными королевствами",
      • "П": "Соединенных королевствах",
      • "П-о": "о Соединенных королевствах",
    • },
    • "где": "в Соединенном королевстве",
    • "куда": "в Соединенное королевство",
    • "откуда": "из Соединенного королевства"
  • }

s – строка для склонения – должна быть в кодировке UTF-8 и перед вставкой в URL должна быть закодирована при помощи URL Encoding.

Если у слова нет какой-либо формы, то соответствующий тег будет пустой, например: теля, мзда. Если у слова нет множественного числа или оно уже во множественном, то тег <множественное> будет отсутствовать: сутки, ножницы. Множественное число не выдается также для фамилий, имен и отчеств.

Украинский вариант функции склонения ukrainian/declension:

https://ws3.morpher.ru/ukrainian/declension?s=Крутько%20Катерина%20Володимирiвна
  • <GetXmlUkrResult>
    • <Р>Крутько Катерини Володимирівни</Р>
    • <Д>Крутько Катерині Володимирівні</Д>
    • <З>Крутько Катерину Володимирівну</З>
    • <О>Крутько Катериною Володимирівною</О>
    • <М>Крутько Катерині Володимирівні</М>
    • <К>Крутько Катерино Володимирівно</К>
    • <рід>Жіночий</рід> Тег <рід>
  • </GetXmlUkrResult>

Украинская версия лучше всего справляется с именами, фамилиями и отчествами. Работа над другими типами словосочетаний ведется. Множественное число пока не строится.

Тег <род> (в украинском варианте <рід>) содержит автоматически определенный род. Возможные значения тега:

<род> <рід>
Мужской Чоловічий
Женский Жіночий
Средний (пока не поддерживается)

Тег <род> доступен только на платных тарифах.

Если входное словосочетание стоит во множественном числе, то тег будет пустым: <род/>.

Флаги для повышения качества склонения

Есть слова, которые могут склоняться по-разному, например:

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

Для повышения качества склонения вы можете сообщить веб-сервису дополнительную информацию через флаги:

Запрос Результат в родительном падеже
https://ws3.morpher.ru/russian/declension?s=Любовь%20Соколова&flags=name Любови Соколовой
https://ws3.morpher.ru/russian/declension?s=Любовь%20Соколова&flags=common Любви Соколова

Таблица поддерживаемых флагов для russian/declension:

Флаг Описание
Feminine Женский род
Masculine Мужской род
Animate Одушевлённое
Inanimate Неодушевлённое
Common Нарицательное
Name ФИО

Таблица поддерживаемых флагов для ukrainian/declension:

Флаг Описание
Feminine Женский род
Masculine Мужской род
Neuter Средний род
Plural Множественное число

Несколько флагов можно передать через запятую: https://ws3.morpher.ru/russian/declension?s=Слепов Сергей Николаевич&flags=name,masculine

Предложный падеж

Предложный падеж представлен в трех вариантах:

  • <П> – без предлога
  • <П-о> – с предлогом О/ОБ/ОБО, предлог выбирается автоматически
  • <где> – с предлогом В/ВО/НА: в Москве, во Франции, в Крыму, на Урале.

Рекомендации по выбору варианта предложного падежа

Теги <где>, <куда> и <откуда>

Содержат предложно-падежные формы, отвечающие на соответствующие вопросы. Используются в основном для склонения географических названий, например:

<где> <куда> <откуда>
в Москве в Москву из Москвы
в Израиле в Израиль из Израиля
во Франции во Францию из Франции
на Урале на Урал с Урала

Разделение строки на фамилию, имя и отчество

Если входная строка распознана как ФИО, то функция declension выдает тег <ФИО>, содержащий разбивку строки на фамилию, имя и отчество:

https://ws3.morpher.ru/russian/declension?s=Александр%20Пушкин
  • <xml>
    • <Р>Александра Пушкина</Р>
    • <Д>Александру Пушкину</Д>
    • <В>Александра Пушкина</В>
    • <Т>Александром Пушкиным</Т>
    • <П>Александре Пушкине</П>
    • <ФИО>
      • <Ф>Пушкин</Р>
      • <И>Александр</И>
      • <О/>
    • </ФИО>
  • </xml>

Имя, отчество и фамилия могут фигурировать во входной строке в любом порядке. Если какой-либо из этих компонентов отсутствует, соответствующий тег будет пустой (как <О/> в примере выше).

Пропись чисел и согласование с числом (spell)

Функция russian/spell (ukrainian/spell) решает две родственные задачи: получение прописи числа (тысяча сто двадцать пять) и согласование единицы измерения с предшествующем числом (1 попугай, 2 попугая, 5 попугаев):

https://ws3.morpher.ru/russian/spell?n=235&unit=рубль (ukrainian/spell)
  • <PropisResult>
    • <n>
      • <И>двести тридцать пять</И>
      • <Р>двухсот тридцати пяти</Р>
      • <Д>двумстам тридцати пяти</Д>
      • <В>двести тридцать пять</В>
      • <Т>двумястами тридцатью пятью</Т>
      • <П>двухстах тридцати пяти</П>
    • </n>
    • <unit>
      • <И>рублей</И>
      • <Р>рублей</Р>
      • <Д>рублям</Д>
      • <В>рублей</В>
      • <Т>рублями</Т>
      • <П>рублях</П>
    • </unit>
  • </PropisResult>
  • <PropisUkrResult>
    • <n>
      • <Н>двісті тридцять п'ять</Н>
      • <Р>двохсот тридцяти п'яти</Р>
      • <Д>двомстам тридцяти п'яти</Д>
      • <З>двісті тридцять п'ять</З>
      • <О>двомастами тридцятьма п'ятьма</О>
      • <М>двохстах тридцяти п'яти</М>
      • <К>двісті тридцять п'ять</К>
    • </n>
    • <unit>
      • <Н>рублів</Н>
      • <Р>рублів</Р>
      • <Д>рублям</Д>
      • <З>рублів</З>
      • <О>рублями</О>
      • <М>рублях</М>
      • <К>рублів</К>
    • </unit>
  • </PropisUkrResult>
XSD ответа
XSD ответа

Комбинируя соответствующие падежные формы n и unit, можно получить вывод «суммы прописью» на любой вкус:

  • 235 рублей
  • Двести тридцать пять рублей
  • 235 (двести тридцать пять) рублей и т.п.

Комбинировать имеет смысл только соответствующие падежные формы n и unit – именительный с именительным, родительный с родительным и т.д. Например, для получения фразы "в размере N рублей (долларов, евро...)", берем родительный падеж (<Р>): в размере + двухсот тридцати пяти + рублей.

См. также примеры в описании функции Пропись из Morpher.dll для .NET, которая лежит в основе этого веб-сервиса.

Склонение прилагательных по родам (russian/genders)

Функция russian/genders склоняет данное ей прилагательное, преобразуя его из мужского рода в женский, средний и во множественное число:

http://ws3.morpher.ru/russian/genders?s=уважаемый
  • <AdjectiveGenders>
    • <feminine>уважаемая</feminine>
    • <neuter>уважаемое</neuter>
    • <plural>уважаемые</plural>
  • </AdjectiveGenders>
XSD ответа

Требования к входному прилагательному:

  • Оно должно быть в мужском роде, в единственном числе.
  • Оно должно быть полным, т.е. "полный", а не "полон".
  • Оно должно быть одним словом.

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

  • Уважаемый Игорь Иванович
  • Уважаемая Анастасия Петровна
  • в лице директора Петрова А.В., действующего на основании...
  • в лице директора Петровой А.В., действующей на основании...

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

Функция образования прилагательных russian/adjectivize

Функция adjectivize образует прилагательные от названий городов и стран: Москва – московский, Ростов – ростовский, Швеция – шведский, Греция – грецкий греческий.

Пример вызова функции: http://ws3.morpher.ru/russian/adjectivize?s=Мытищи

XSD ответа

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

Расстановка ударений в текстах

Функция russian/addstressmarks расставляет ударения в текстах на русском языке:

Три деви́цы под окно́м
Пря́ли по́здно вечерко́м.

Ударение отмечается символом с кодом U+0301, который вставляется сразу после ударной гласной. Односложные слова не получают знака ударения, за исключением случаев, когда предлог или частица несет на себе ударение: за́ руку, не́ за что. Варианты прочтения разделяются вертикальной чертой, например, предложение "Белки питаются белками" превратится в "Бе́лки|Белки́ пита́ются бе́лками|белка́ми".

Текст посылается в теле запроса с заголовком Content-Type: text/plain; charset=utf-8

Результат возвращается в виде XML:

<?xml version="1.0" encoding="utf-8"?>
<string>Бале́т Петра́ Чайко́вского "Щелку́нчик"<string>

или JSON:

"Бале́т Петра́ Чайко́вского \"Щелку́нчик\""

Выбор формата ответа (XML или JSON)

Веб-сервис позволяет получить ответ в формате XML или JSON. Указать формат ответа можно:

По умолчанию возвращается XML.

Обработка ошибок

В случае ошибки веб-сервис возвращает код ошибки и текстовое сообщение. Пример запроса и ответа:

https://ws3.morpher.ru/russian/declension?s=waffle [XSD]
  • <error>
    • <code>5</code>
    • <message>Не найдено русских слов.</message>
  • </error>

Cписок кодов ошибок:

Код HTTP код Значение
1 402 Превышен лимит на количество запросов в сутки. Перейдите на следующий тарифный план.
3 403 IP заблокирован.
4 495 Склонение числительных в declension не поддерживается. Используйте метод spell.
5 496 Не найдено русских слов.
6 400 Не указан обязательный параметр s.
7 402 Необходимо оплатить услугу.
9 498 Данный token не найден.
10 497 Неверный формат токена.
11 500 Ошибка сервера.
12 494 Указаны неправильные флаги.

Исправление ошибок склонения

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

К счастью, мы живем в эру интернета и можем решить эту задачу сообща. Никто не призывает вас исправлять ошибки по восемь часов в день. Но если вы встретили ошибку в склонении, вы можете легко ее исправить на странице исправления ошибок. Более того, веб-сервис сразу же начнет выдавать новое склонение, но только для вас. Остальные пользователи увидят ваше исправление, как только его проверит модератор. Для этого вы должны быть зарегистрированным пользователем. Это бесплатно.

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

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

Функция Тип (метод) Значение
/russian/userdict
/ukrainian/userdict
[GET] Получить список всех добавленных исправлений
/russian/userdict
/ukrainian/userdict
[POST] Добавить или изменить исправление
/russian/userdict
/ukrainian/userdict
[DELETE] Удалить исправление

Все функции имеют один адрес, но отличаются типом запроса.

Все функции требуют указания токена одним из способов. Исправления видны только пользователю с указанным токеном.

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

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

Для русского языка:
И=Кошка&Д=Пантере
Для украинского языка:
Н=Кiшка&Д=Пантерi

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

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

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

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

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

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

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

Для того чтобы получить список всех исправлений, нужно послать GET запрос на /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 запрос вида:

/russian/userdict?s="Строка в именительном падеже"

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

/russian/userdict?s=Кошка

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

/ukrainian/userdict?s=Кiшка

Ограничения бесплатной версии

Бесплатное использование веб-сервиса имеет следующие ограничения:

  • Отсутствуют теги <П-о>, <где>, <куда>, <откуда> и <род>.
  • Максимум 1000 запросов в сутки.

Лимит на запросы восстанавливается в 00:00 UTC. Функция get_queries_left_for_today возвращает остаток запросов на данный момент.

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

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

  • Тариф «Бейсик» – снимаются только ограничения на теги, до 1000 запросов в сутки, 450 руб/мес.
  • Тариф «Профессионал» – снимаются ограничения на теги, до 10 000 запросов в сутки, 750 руб/мес.
  • Тариф «Анлимитед» – без ограничений, 1500 руб/мес.

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

Регистрация

Зачем нужна регистрация? Даже если вы пользуетесь веб-сервисом бесплатно, вам все равно рекомендуется зарегистрироваться, потому что:

  • Зарегистрированные пользователи имеют возможность исправлять ошибки склонения.
  • Регистрация поможет вам избежать неожиданной блокировки сервиса. Дело в том, что при отсутствии в запросе токена веб-сервис считает всех пользователей с одним внешним IP одним пользователем, что может привести к скорому исчерпанию лимита на количество запросов в сутки. Этой проблемы можно избежать, просто зарегистрировавшись и добавив в запрос ваш токен.

Передача веб-сервису токена

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

  • Добавить к строке запроса параметр token:

    http://ws3.morpher.ru/russian/declension?s=Мальдивы&token=C6F4FAA1-E738-4D94-95D4-71A0F6C6813C

  • При помощи базовой аутентификации HTTP. Для этого к запросу добавляется HTTP-заголовок вида:
    Authorization: Basic QzZGNEZBQTEtRTczOC00RDk0LTk1RDQtNzFBMEY2QzY4MTNDCg==
    Токен передается в виде строки закодированной алгоритмом BASE-64.

Новости

Получать новости о веб-сервисе склонения можно через эту группу.



 

Библиотеки

Заметили опечатку? Выделите слово мышкой и нажмите Ctrl-Enter. Система Orphus

© Сергей Слепов, 2003 - 2017. Перепечатка материалов сайта только с разрешения автора.