Веб-сервис «Морфер» 3.0
Веб-сервис предназначен для склонения по падежам слов и словосочетаний на русском, украинском и казахском языках.
Он бесплатный (с ограничениями), а для больших объемов есть платный доступ.
Веб-сервис реализует следующие функции:
На казахском языке:
Также на этой странице:
Если у вас почему-либо недоступен ws3.morpher.ru,
попробуйте зеркало ws3.morpher.me.
Пример вызова функции склонения через HTTP GET:
https://ws3.morpher.ru/russian/declension?s=Соединенное%20королевство
В ответ получим:
XSD ответа
В случае json запроса:
s – строка для склонения – должна быть в кодировке UTF-8 и перед вставкой в URL должна быть закодирована
при помощи URL Encoding.
Если у слова нет какой-либо формы, то соответствующий тег будет пустой, например:
теля,
мзда.
Если у слова нет множественного числа или оно уже во множественном, то тег <множественное>
будет отсутствовать:
сутки,
ножницы.
Множественное число не выдается также для фамилий, имен и отчеств.
Украинский вариант функции склонения ukrainian/declension:
https://ws3.morpher.ru/ukrainian/declension?s=Крутько%20Катерина%20Володимирiвна
XSD ответа
Украинская версия лучше всего справляется с именами, фамилиями и отчествами. Работа над другими типами словосочетаний ведется.
Множественное число пока не строится.
Тег <род>
(в украинском варианте <рід>
) содержит автоматически определенный род.
Возможные значения тега:
<род> |
<рід> |
Мужской |
Чоловічий |
Женский |
Жіночий |
Средний |
(пока не поддерживается) |
Тег <род>
доступен только на платных тарифах.
Если входное словосочетание стоит во множественном числе, то тег будет пустым: <род/>
.
Есть слова, которые могут склоняться по-разному, например:
- фамилия Резник склоняется у мужчин и не склоняется у женщин;
- Ростов в творительном падеже будет Ростовым, если это фамилия, и Ростовом, если это город;
- тестер в винительном падеже будет тестера, если это человек, и тестер, если имеется в виду прибор.
Для повышения качества склонения вы можете сообщить веб-сервису дополнительную информацию через флаги:
Основная статья: Снятие неоднозначности дополнительными признаками
Таблица поддерживаемых флагов для 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Пушкин
Имя, отчество и фамилия могут фигурировать во входной строке в любом порядке. Если какой-либо из этих компонентов отсутствует,
соответствующий тег будет пустой (как <О/>
в примере выше).
Функция russian/declension может возвращать следующие ошибки
(см. также Обработка ошибок):
Код |
Статус |
Значение |
Пример |
4 |
495 |
Склонение числительных в declension не поддерживается. Используйте метод spell. |
?s=три |
5 |
496 |
Не найдено русских слов. |
?s=waffle |
6 |
400 |
Не указан обязательный параметр: s. |
?s= |
12 |
494 |
Указаны неправильные флаги. |
?s=кошка&flags=invalid |
Функция ukrainian/declension может возвращать следующие ошибки:
Код |
Статус |
Значение |
Пример |
5 |
496 |
Не найдено украинских слов. |
?s=waffle |
6 |
400 |
Не указан обязательный параметр: s. |
?s= |
12 |
494 |
Указаны неправильные флаги. |
?s=кішка&flags=invalid |
Функция russian/spell (ukrainian/spell) решает две родственные задачи:
получение прописи числа (тысяча сто двадцать пять)
и согласование единицы измерения с предшествующим числом (1 попугай, 2 попугая, 5 попугаев):
https://ws3.morpher.ru/russian/spell?n=235&unit=рубль
(ukrainian/spell)
Комбинируя соответствующие падежные формы n и unit, можно получить вывод «суммы прописью» на любой вкус:
- 235 рублей
- Двести тридцать пять рублей
- 235 (двести тридцать пять) рублей и т.п.
Комбинировать имеет смысл только соответствующие падежные формы n и unit – именительный с именительным, родительный с родительным и т.д.
Например, для получения фразы "в размере N рублей (долларов, евро...)", берем родительный падеж (<Р>
): в размере + двухсот тридцати пяти + рублей.
См. также примеры в описании функции Пропись из Morpher.dll для .NET, которая лежит в основе этого веб-сервиса.
Функция russian/spell может возвращать следующие ошибки:
Код |
Статус |
Значение |
Пример |
5 |
496 |
Не найдено русских слов. |
?n=10&unit=rub |
Функции russian/spell и ukrainian/spell могут возвращать следующие ошибки:
Код |
Статус |
Значение |
Пример |
6 |
400 |
Не указан обязательный параметр: unit. |
?n=100&unit=+++ |
Функция russian/spell-ordinal похожа на функцию russian/spell, но возвращает пропись числа в форме порядкового числительного:
https://ws3.morpher.ru/russian/spell-ordinal?n=5&unit=колесо
XSD ответа такой же, как и для функции russian/spell.
Функция russian/spell-ordinal может возвращать следующие ошибки:
Функция russian/spell-date склоняет по падежам дату, заданную в формате ГГГГ-ММ-ДД:
https://ws3.morpher.ru/russian/spell-date?date=2019-06-29
XSD ответа
Функция russian/spell-date может возвращать следующие ошибки:
Код |
Статус |
Значение |
Пример |
6 |
400 |
Не указан обязательный параметр: date. |
?date=+++ |
8 |
499 |
Дата указана в некорректном формате. |
?date=01-01-2020 |
Функция russian/genders склоняет данное ей прилагательное, преобразуя его из мужского рода в женский, средний и во множественное число:
https://ws3.morpher.ru/russian/genders?s=уважаемый
XSD ответа
Требования к входному прилагательному:
- Оно должно быть в мужском роде, в единственном числе.
- Оно должно быть полным, т.е. "полный", а не "полон".
- Оно должно быть одним словом. Внутри слова допустимы дефис и апостроф:
рабоче-крестьянский, Кот-д'Ивуарский.
Вокруг слова допустимы пробелы, кавычки и другие знаки.
Если хотя бы одно из этих требований не выполняется,
то функция возвращает строку ERROR
во всех трех тегах - feminine, neuter, plural.
Данная функция может быть использована для построения таких фраз как:
- Уважаемый Игорь Иванович
- Уважаемая Анастасия Петровна
- в лице директора Петрова А.В., действующего на основании...
- в лице директора Петровой А.В., действующей на основании...
где род прилагательного (уважаемый) или причастия (действующий) связан с полом названного лица.
Пол можно определить с помощью функции определения рода (пола).
Функция russian/genders может возвращать следующие ошибки:
Код |
Статус |
Значение |
Пример |
6 |
400 |
Не указан обязательный параметр: s. |
?s=+++ |
Функция adjectivize
образует прилагательные от названий городов и стран:
Москва – московский,
Ростов – ростовский,
Швеция – шведский,
Греция – грецкий греческий.
Пример вызова функции:
https://ws3.morpher.ru/russian/adjectivize?s=Мытищи
XSD ответа
Функция возвращает массив строк. Что они означают, описано здесь.
Функция russian/adjectivize может возвращать следующие ошибки:
Код |
Статус |
Значение |
Пример |
6 |
400 |
Не указан обязательный параметр: s. |
?s=+++ |
POST-запрос russian/addstressmarks
расставляет ударения в текстах на русском языке:
Три деви́цы под окно́м
Пря́ли по́здно вечерко́м.
Ударение отмечается символом с кодом U+0301, который вставляется сразу после ударной гласной.
Односложные слова не получают знака ударения, за исключением случаев, когда предлог или частица
несет на себе ударение: за́ руку, не́ за что.
Варианты прочтения разделяются вертикальной чертой, например, предложение "Белки питаются белками"
превратится в "Бе́лки|Белки́ пита́ются бе́лками|белка́ми".
Текст посылается в теле запроса с заголовком Content-Type: text/plain; charset=utf-8
Результат возвращается в виде XML:
или JSON:
Код |
Статус |
Значение |
6 |
400 |
Текст должен передаваться в теле запроса.
|
Тарификация этой функции имеет особенности.
https://ws3.morpher.ru/qazaq/declension?s=бас%20маманы
Функция qazaq/declension может возвращать следующие коды ошибок:
Код |
Статус |
Значение |
Пример |
6 |
400 |
Не указан обязательный параметр: s. |
?s=+++ |
5 |
496 |
Не найдено казахских слов. |
?s=waffle |
Пример запроса:
https://ws3.morpher.ru/qazaq/spell?n=111&useOne=false
Пример ответа:
Параметр useOne указывает, следует ли выдавать слово бір (один) в начале,
если речь идет об одной сотне, одной тысяче и т.д.
По умолчанию true:
https://ws3.morpher.ru/qazaq/spell?n=111
Функция преобразует количественные числительные (бір — один) в порядковые (бірінші — первый).
Пример запроса:
https://ws3.morpher.ru/qazaq/ordinal?cardinal=бір
Пример ответа:
Пример запроса:
https://ws3.morpher.ru/qazaq/spell-date?date=2011-11-11
Пример ответа:
Пример запроса:
https://ws3.morpher.ru/qazaq/spell-day-month?day=8&month=3
Пример ответа:
Веб-сервис позволяет получить ответ в формате XML или JSON. Указать формат ответа можно:
По умолчанию возвращается XML.
В случае ошибки веб-сервис возвращает код ошибки и текстовое сообщение.
Пример запроса и ответа:
https://ws3.morpher.ru/russian/declension?s=waffle
XSD ответа
Следующие ошибки может вернуть любая функция сервиса "Морфер":
Код |
Статус |
Значение |
1 |
402 |
Превышен лимит на количество запросов в сутки. Перейдите на следующий тарифный план. |
3 |
403 |
IP заблокирован. |
9 |
498 |
Данный токен не найден. |
10 |
497 |
Неверный формат токена. |
Кроме того, отдельные функции могут возвращать специфичные для них ошибки.
В программу склонения вложены годы программирования и несколько многотысячных словарей.
Однако одних только географических названий существуют миллионы, не говоря о личных именах, названиях фирм, торговых марок и других именах собственных.
Далеко не все слова и словосочетания подчиняются общим закономерностям и учет нюансов склонения различных наименований – задача весьма трудоемкая.
Просто просмотреть один миллион слов и при необходимости исправить ошибки склонения (в среднем, скажем, по одной минуте на слово) займет более 10 лет работы одного человека (8-часовой рабочий день, 5 рабочих дней в неделю).
К счастью, мы живем в эру интернета и можем решить эту задачу сообща. Никто не призывает вас исправлять ошибки по восемь часов в день.
Но если вы встретили ошибку в склонении, вы можете легко ее исправить на странице исправления ошибок.
Более того, веб-сервис сразу же начнет выдавать новое склонение, но только для вас.
Остальные пользователи увидят ваше исправление, как только его проверит модератор.
Для этого вы должны быть зарегистрированным пользователем. Это бесплатно.
Страница «Работа над ошибками»
Веб-сервис поддерживает исправление склонения по требованию пользователя.
Для этого имеются 3 метода:
Функция |
Метод |
Значение |
/russian/userdict
/ukrainian/userdict
|
[GET] |
Получить список всех добавленных исправлений |
/russian/userdict
/ukrainian/userdict |
[POST] |
Добавить или изменить исправление |
/russian/userdict
/ukrainian/userdict |
[DELETE] |
Удалить исправление |
Все функции пользовательского словаря требуют указания токена
и при его отсутствии возвращают ошибку с кодом 25 и статусом 400 или ошибку с кодом 9 и статусом 498, если указанный токен не найден.
Исправления видны только пользователю с указанным токеном.
Для добавления или изменения исправления нужно отправить POST запрос на /russian/userdict
(/ukrainian/userdict для украинского языка соответственно).
Тело запроса должно быть представлено в формате
application/x-www-form-urlencoded,
который используется по умолчанию для POST-запросов.
Например, если мы хотим изменить дательный падеж для слова "Кошка",
то тело запроса будет иметь вид:
Для русского языка:
И=Кошка&Д=Пантере
Для украинского языка:
Н=Кiшка&Д=Пантерi
Для добавления исправления обязательно нужно указывать именительный падеж и хотя бы еще одну падежную форму.
Названия параметров (russian/userdict)
Параметр |
Падеж |
И |
Именительный |
Р |
Родительный |
Д |
Дательный |
В |
Винительный |
Т |
Творительный |
П |
Предложный с предлогом О/ОБ/ОБО или без |
М |
Местный без предлога |
М_И |
Именительный (множественное число) |
М_Р |
Родительный (множественное число) |
М_Д |
Дательный (множественное число) |
М_В |
Винительный (множественное число) |
М_Т |
Творительный (множественное число) |
М_П |
Предложный (множественное число) с предлогом О/ОБ/ОБО или без |
М_М |
Местный (множественное число) без предлога |
Названия параметров (ukrainian/userdict)
Параметр |
Падеж |
Н |
Називний |
Р |
Родовий |
Д |
Давальний |
З |
Знахiдний |
О |
Орудний |
М |
Мiсцевий |
К |
Кличний |
Повторный вызов метода с уже существующим исправлением добавит или изменит текущее исправление.
Если мы захотим к нашему исправлению "Кошка" добавить еще родительный падеж, нам достаточно будет передать "И=Кошка&Р=Пантеры".
В итоге останется старое исправление на дательный падеж и добавится новое на родительный.
Если мы вызовем метод еще раз с дательным или родительным падежом, мы изменим текущее исправление для этих падежей.
Метод POST может возвращать следующие ошибки:
Код |
Статус |
Значение |
6 |
400 |
Не указан обязательный параметр: И. |
6 |
400 |
Нужно указать хотя бы одну косвенную форму. |
Для того чтобы получить список всех исправлений, нужно послать GET запрос на
/russian/userdict
или
/ukrainian/userdict, указав токен.
Пример ответа:
XSD схема ответа на russian/userdict
: Russian.xsd
XSD схема ответа на ukrainian/userdict
: Ukrainian.xsd
Для того чтобы удалить исправление, достаточно передать DELETE запрос вида:
/russian/userdict?s="Строка в именительном падеже"
Например, чтобы удалить все исправления для слова "Кошка", нужно передать:
/russian/userdict?s=Кошка
Для украинского языка:
/ukrainian/userdict?s=Кiшка
Метод DELETE может возвращать следующие ошибки:
Код |
Статус |
Значение |
6 |
400 |
Не указан обязательный параметр: s. |
Бесплатное использование веб-сервиса имеет следующие ограничения:
- Отсутствуют теги
<П_о>
, <где>
, <куда>
, <откуда>
и <род>.
- Максимум 100 запросов в сутки.
Лимит на запросы восстанавливается в 00:00 UTC.
Функция get-queries-left возвращает остаток запросов на данный момент.
Если вам нужно склонение больших объемов, зарегистрируйтесь и оплатите подходящий вам тарифный план:
Примечание 1: при оплате любого тарифа снимаются ограничения на тэги.
Примечание 2: тарификация функции russian/addstressmarks
осуществляется по следующему принципу:
каждые 20 символов исходного текста эквивалентны 1 запросу. Если в теле вызова функции russian/addstressmarks указан текст,
длиной до 20 символов, то такой вызов функции russian/addstressmarks считается эквивалентным 1 запросу к веб-сервису.
Здесь под символом текста подразумеваются не только буквы русского алфавита, но также любые цифры, знаки препинания, пробелы, прочие знаки и буквы других алфавитов.
При этом следует иметь в виду, что один перенос текста на новую строку может являться двумя символами, если он передан в Windows-стиле, т.е. как пара символов CR LF (см. статью в Википедии на эту тему).
Чтобы стать платным пользователем, вам нужно:
Зачем нужна регистрация? Даже если вы пользуетесь веб-сервисом бесплатно, вам все равно рекомендуется зарегистрироваться, потому что:
- Зарегистрированные пользователи имеют возможность исправлять ошибки склонения.
- Регистрация поможет вам избежать неожиданной блокировки сервиса.
Дело в том, что при отсутствии в запросе токена веб-сервис считает всех пользователей с одним внешним IP одним пользователем,
что может привести к скорому исчерпанию лимита на количество запросов в сутки.
Этой проблемы можно избежать, просто зарегистрировавшись и добавив в запрос ваш токен.
Чтобы индентифицировать себя как зарегистрированного пользователя, необходимо передать веб-сервису токен,
который вы можете получить в личном кабинете. Есть два способа это сделать:
-
Поддержка веб-сервиса «Морфер.ру» встроена в Платформу 1С.
Для ее активации достаточно поставить галочку в настройках:
видео.
-
В некоторых случаях вам может потребоваться написать код на
языке 1С для вызова функций веб-сервиса.
Как это сделать, описано в
этой статье
на infostart.ru.
- Другие варианты
Получать новости о веб-сервисе склонения можно через наш Телеграм-канал.
(Раньше работала Google-группа.)