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

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

Пример вызова через HTTP GET:

http://morpher.ru/WebService.asmx/GetXml?s=Соединенное%20королевство

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

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

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

n – количество единиц, выраженных параметром s; необязательный параметр, см. Пропись чисел и согласование с числом.

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

Определение рода. Тег <род>

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

  • Мужской
  • Женский
  • Средний

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

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

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

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

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

Внимание! Тег <П-в> будет упразднен в марте 2012 года. Его заменил тег <где>, см. ниже.

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

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

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

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

Вариант функции GetXml с параметром n решает две родственные задачи: получение прописи числа (тысяча сто двадцать пять) и согласование единицы измерения с предшествующем числом (1 попугай, 2 попугая, 5 попугаев):

http://morpher.ruWebService.asmx/GetXml?s=рубль&n=235
  • <?xml version="1.0" encoding="utf-8" ?>
  • <xml>
    • <И>рублей</Р>
    • <Р>рублей</Д>
    • <Д>рублям</В>
    • <В>рублей</Т>
    • <Т>рублями</П>
    • <П>рублях</П>
    • <n>
      • <И>двести тридцать пять</И>
      • <Р>двухсот тридцати пяти</Р>
      • <Д>двумстам тридцати пяти</Д>
      • <В>двести тридцать пять</В>
      • <Т>двумястами тридцатью пятью</Т>
      • <П>двухстах тридцати пяти</П>
    • </n>
  • </xml>

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

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

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

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

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

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

http://morpher.ruWebService.asmx/GetXml?s=waffle
  • <?xml version="1.0" encoding="utf-8" ?>
  • <xml>
    • <code>5</code>
    • <message>Не найдено русских слов.</message>
  • </xml>

Полный и актуальный список кодов ошибок:

Код Значение
1 Превышен лимит на общее количество запросов в сутки.
2 Превышен лимит на количество одинаковых запросов в сутки. Реализуйте кеширование.
3 IP заблокирован.
4 Склонение числительных не поддерживается. Укажите число в параметре n.
5 Не найдено русских слов.
6 Не указан обязательный параметр s.
7 Необходимо оплатить услугу.
8 Пользователь с таким ID не зарегистрирован.

Примеры

Пример на C# (Visual Studio 2010): FacebookStory.zip. Этот пример использует веб-сервис Морфер.ру для генерации параллельных вариантов текста на двух языках, русском и английском.

В комментариях к старой версии веб-сервиса есть несколько примеров вызова из PHP, Delphi и . Если вам доведется адаптировать эти примеры для новой версии веб-сервиса, поделитесь кодом с другими в комментариях.

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

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

  • Отсутствуют теги <П-о>, <где>, <куда>, <откуда> и <род>.
  • Максимум 1000 запросов в сутки. Эта число может быть изменено в будущем – следите за сообщениями внизу данной страницы. Функция GetDailyQueryLimit возвращает действующее на данный момент значение.
  • Максимум 100 одинаковых запросов в сутки. Данное ограничение не действует на запросы с параметром s равным "тест".

Относительно ограничений на количество запросов в сутки следует заметить, что неудачные запросы (отклоненные по причине превышения лимита) также учитываются при расчете суточного количества. Поэтому если продолжать посылать запросы после превышения лимита, вы можете так никогда и не получить доступ. Подождите сутки и доступ сам собой восстановится. Коды ошибок: 1 (превышен лимит на общее количество запросов в сутки) и 2 (лимит на количество одинаковых запросов в сутки).

Чтобы снять эти ограничения, зарегистрируйтесь:

Регистрация

Регистрация бесплатна, но за пользование полной версией веб-сервиса взимается небольшая помесячная плата в зависимости от тарифа:



Предпочительный способ оплаты:

или

Email:  *

После нажатия на кнопку «Регистрация» вам будет выслана инструкция как подключиться к веб-сервису в качестве зарегистрированного пользователя и реквизиты для оплаты. Оплатить можно на любое количество месяцев вперед.



Комментарии

unkmas 19.01.2012 06:59 UTC

У вас в описании указан код ошибки 1(превышено число запросов в сутки).
В реальности - код этой ошибки - 0.



Сергей Слепов 20.01.2012 00:20 UTC

В реальности вследствие ошибки в коде коды всех ошибок были нулевые. Сейчас реальность исправлена в соответствии с описанием. :)


Сергей Слепов 21.01.2012 22:59 UTC

Добавлен полный список кодов ошибок. Он берется напрямую из базы и поэтому постоянно актуален.


Сергей Слепов 13.02.2012 02:29 UTC

Изменения в API веб-сервиса:
Добавлены три новых тега: <где>, <куда> и <откуда> для склонения географических названий. Тег <Р-234> окончательно упразднен, как сообщалось ранее. Тег <П-в> помечен на упразднение – его заменил тег <где>.






2003 - 2012 © Сергей Слепов