Веб-сервис склонения по падежам «Морфер» 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 и 1С.
Если вам доведется адаптировать эти примеры для новой версии веб-сервиса, поделитесь кодом с другими в
комментариях.
Ограничения бесплатной версии
Бесплатное использование веб-сервиса имеет следующие ограничения:
- Отсутствуют теги <П-о>, <где>, <куда>, <откуда> и <род>.
- Максимум 1000 запросов в сутки. Эта число может быть изменено в будущем – следите за сообщениями внизу данной страницы.
Функция GetDailyQueryLimit возвращает действующее на данный момент значение.
- Максимум 100 одинаковых запросов в сутки. Данное ограничение не действует на запросы с параметром s равным "тест".
Относительно ограничений на количество запросов в сутки следует заметить, что неудачные запросы (отклоненные по причине превышения лимита)
также учитываются при расчете суточного количества. Поэтому если продолжать посылать запросы после превышения лимита,
вы можете так никогда и не получить доступ. Подождите сутки и доступ сам собой восстановится.
Коды ошибок: 1 (превышен лимит на общее количество запросов в сутки)
и 2 (лимит на количество одинаковых запросов в сутки).
Чтобы снять эти ограничения, зарегистрируйтесь:
Регистрация
Комментарии
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> окончательно упразднен, как сообщалось ранее. Тег <П-в> помечен на упразднение – его заменил тег <где>.
|