morpher.ru +380 (66) 265 9019
nowhere@morpher.ru
 
 
Мій Морфер

Вебсервіс «Морфер» 3.0

Вебсервіс призначений для відмінювання слів і словосполучень українською та казахською мовами. Він безкоштовний (з обмеженнями), а для великих обсягів є платний доступ.

Вебсервіс реалізує такі функції:

Для української мови:

Для казахської мови:

Також на цій сторінці:

Якщо з якоїсь причини для вас недоступний ws3.morpher.ua, спробуйте дзеркало ws3.morpher.me.

Відмінювання за відмінками українською мовою

Ендпойнт ukrainian/declension призначений для відмінювання ПІБ українською:

GET https://ws3.morpher.ua/ukrainian/declension?s=Крутько%20Катерина%20Володимирiвна

У відповіді отримуємо XML:

        
            <GetXmlUkrResult>
                <Р>Крутько Катерини Володимирівни</Р>
                <Д>Крутько Катерині Володимирівні</Д>
                <З>Крутько Катерину Володимирівну</З>
                <О>Крутько Катериною Володимирівною</О>
                <М>Крутько Катерині Володимирівні</М>
                <К>Крутько Катерино Володимирівно</К>
                <рід>Жіночий</рід> <!-- [Тег <рід>](#rid) -->
            </GetXmlUkrResult>
        
    
XSD відповіді

Або JSON (вибір формату відповіді):

        
            {
                "Р": "Крутько Катерини Володимирівни",
                "Д": "Крутько Катерині Володимирівні",
                "З": "Крутько Катерину Володимирівну",
                "О": "Крутько Катериною Володимирівною",
                "М": "Крутько Катерині Володимирівні",
                "К": "Крутько Катерино Володимирівно",
                "рід": "Жіночий"
            }
        
    

Множина не будується.

Тег <рід> містить автоматично визначений рід. Можливі значення тега:

  • Чоловічий
  • Жіночий

Середній рід поки що не підтримується.

Прапорці для розв’язання неоднозначностей

Є слова, які можуть відмінюватися по‑різному, наприклад, прізвище Мельник відмінюється у чоловіків і не відмінюється у жінок.

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

Запит Результат у родовому відмінку
https://ws3.morpher.ua/ukrainian/declension?s=Мельник%20А.Н.&flags=masculine Мельника А.Н.
https://ws3.morpher.ua/ukrainian/declension?s=Мельник%20А.Н.&flags=feminine Мельник А.Н.

Таблиця підтримуваних прапорців для ukrainian/declension:

Прапорець Опис
feminine Жіночий рід
masculine Чоловічий рід

Функція ukrainian/declension може повертати такі помилки:

Код Статус Значення Приклад
5 496 Не знайдено українських слів. ?s=waffle
6 400 Не вказано обов’язковий параметр: s. ?s=
12 494 Вказано неправильні прапорці. ?s=кішка&flags=invalid

Запис чисел словами та узгодження з числом (ukrainian/spell)

Функція (ukrainian/spell) розв’язує дві споріднені задачі: отримання запису числа словами (тисяча сто двадцять п’ять) та узгодження одиниці виміру з попереднім числом (1 папуга, 2 папуги, 5 папуг):

https://ws3.morpher.ua/ukrainian/spell?n=235&unit=рубль
        
            <PropisUkrResult>
              <n>
                <Н>двісті тридцять п'ять</Н>
                <Р>двохсот тридцяти п'яти</Р>
                <Д>двомстам тридцяти п'яти</Д>
                <З>двісті тридцять п'ять</З>
                <О>двомастами тридцятьма п'ятьма</О>
                <М>двохстах тридцяти п'яти</М>
                <К>двісті тридцять п'ять</К>
              </n>
              <unit>
                <Н>рублів</Н>
                <Р>рублів</Р>
                <Д>рублям</Д>
                <З>рублів</З>
                <О>рублями</О>
                <М>рублях</М>
                <К>рублів</К>
              </unit>
            </PropisUkrResult>
        
    
XSD відповіді

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

  • 235 рублів
  • Двісті тридцять п'ять рублів
  • 235 (двісті тридцять п'ять) рублів и т.п.

Комбінувати має сенс лише відповідні відмінкові форми n і unit – називний з називним, родовий з родовим тощо. Наприклад, щоб отримати фразу «у розмірі N рублів (доларів, євро...)», беремо родовий відмінок (<Р>): у розмірі + двохсот тридцяти п’яти + рублів.

Функція ukrainian/spell може повертати такі помилки:

Код Статус Значення Приклад
6 400 Не вказано обов’язковий параметр: unit. ?n=100&unit=+++

Склонение по падежам, числам и лицам на казахском языке

https://ws3.morpher.ua/qazaq/declension?s=бас%20маманы
        
<declension xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <A>бас маман</A>
    <І>бас маманның</І>
    <Б>бас маманға</Б>
    <Т>бас маманды</Т>
    <Ш>бас маманнан</Ш>
    <Ж>бас маманда</Ж>
    <К>бас маманмен</К>
    <менің>
        <A>бас маманым</A>
        <І>бас маманымның</І>
        <Б>бас маманыма</Б>
        <Т>бас маманымды</Т>
        <Ш>бас маманымнан</Ш>
        <Ж>бас маманымда</Ж>
        <К>бас маманыммен</К>
    </менің>
    <сенің>
        <A>бас маманың</A>
        <І>бас маманыңның</І>
        <Б>бас маманыңа</Б>
        <Т>бас маманыңды</Т>
        <Ш>бас маманыңнан</Ш>
        <Ж>бас маманыңда</Ж>
        <К>бас маманыңмен</К>
    </сенің>
    <сіздің>
        <A>бас маманыңыз</A>
        <І>бас маманыңыздың</І>
        <Б>бас маманыңызға</Б>
        <Т>бас маманыңызды</Т>
        <Ш>бас маманыңыздан</Ш>
        <Ж>бас маманыңызда</Ж>
        <К>бас маманыңызбен</К>
    </сіздің>
    <оның>
        <A>бас маманы</A>
        <І>бас маманының</І>
        <Б>бас маманына</Б>
        <Т>бас маманын</Т>
        <Ш>бас маманынан</Ш>
        <Ж>бас маманында</Ж>
        <К>бас маманымен</К>
    </оның>
    <біздің>
        <A>бас маманымыз</A>
        <І>бас маманымыздың</І>
        <Б>бас маманымызға</Б>
        <Т>бас маманымызды</Т>
        <Ш>бас маманымыздан</Ш>
        <Ж>бас маманымызда</Ж>
        <К>бас маманымызбен</К>
    </біздің>
    <сендердің>
        <A>бас мамандарың</A>
        <І>бас мамандарыңның</І>
        <Б>бас мамандарыңа</Б>
        <Т>бас мамандарыңды</Т>
        <Ш>бас мамандарыңнан</Ш>
        <Ж>бас мамандарыңда</Ж>
        <К>бас мамандарыңмен</К>
    </сендердің>
    <сіздердің>
        <A>бас мамандарыңыз</A>
        <І>бас мамандарыңыздың</І>
        <Б>бас мамандарыңызға</Б>
        <Т>бас мамандарыңызды</Т>
        <Ш>бас мамандарыңыздан</Ш>
        <Ж>бас мамандарыңызда</Ж>
        <К>бас мамандарыңызбен</К>
    </сіздердің>
    <олардың>
        <A>бас мамандары</A>
        <І>бас мамандарының</І>
        <Б>бас мамандарына</Б>
        <Т>бас мамандарын</Т>
        <Ш>бас мамандарынан</Ш>
        <Ж>бас мамандарында</Ж>
        <К>бас мамандарымен</К>
    </олардың>
    <көпше>
        <A>бас мамандар</A>
        <І>бас мамандардың</І>
        <Б>бас мамандарға</Б>
        <Т>бас мамандарды</Т>
        <Ш>бас мамандардан</Ш>
        <Ж>бас мамандарда</Ж>
        <К>бас мамандармен</К>
        <менің>
            <A>бас мамандарым</A>
            <І>бас мамандарымның</І>
            <Б>бас мамандарыма</Б>
            <Т>бас мамандарымды</Т>
            <Ш>бас мамандарымнан</Ш>
            <Ж>бас мамандарымда</Ж>
            <К>бас мамандарыммен</К>
        </менің>
        <сенің>
            <A>бас мамандарың</A>
            <І>бас мамандарыңның</І>
            <Б>бас мамандарыңа</Б>
            <Т>бас мамандарыңды</Т>
            <Ш>бас мамандарыңнан</Ш>
            <Ж>бас мамандарыңда</Ж>
            <К>бас мамандарыңмен</К>
        </сенің>
        <сіздің>
            <A>бас мамандарыңыз</A>
            <І>бас мамандарыңыздың</І>
            <Б>бас мамандарыңызға</Б>
            <Т>бас мамандарыңызды</Т>
            <Ш>бас мамандарыңыздан</Ш>
            <Ж>бас мамандарыңызда</Ж>
            <К>бас мамандарыңызбен</К>
        </сіздің>
        <оның>
            <A>бас мамандары</A>
            <І>бас мамандарының</І>
            <Б>бас мамандарына</Б>
            <Т>бас мамандарын</Т>
            <Ш>бас мамандарынан</Ш>
            <Ж>бас мамандарында</Ж>
            <К>бас мамандарымен</К>
        </оның>
        <біздің>
            <A>бас мамандарымыз</A>
            <І>бас мамандарымыздың</І>
            <Б>бас мамандарымызға</Б>
            <Т>бас мамандарымызды</Т>
            <Ш>бас мамандарымыздан</Ш>
            <Ж>бас мамандарымызда</Ж>
            <К>бас мамандарымызбен</К>
        </біздің>
        <сендердің>
            <A>бас мамандарың</A>
            <І>бас мамандарыңның</І>
            <Б>бас мамандарыңа</Б>
            <Т>бас мамандарыңды</Т>
            <Ш>бас мамандарыңнан</Ш>
            <Ж>бас мамандарыңда</Ж>
            <К>бас мамандарыңмен</К>
        </сендердің>
        <сіздердің>
            <A>бас мамандарыңыз</A>
            <І>бас мамандарыңыздың</І>
            <Б>бас мамандарыңызға</Б>
            <Т>бас мамандарыңызды</Т>
            <Ш>бас мамандарыңыздан</Ш>
            <Ж>бас мамандарыңызда</Ж>
            <К>бас мамандарыңызбен</К>
        </сіздердің>
        <олардың>
            <A>бас мамандары</A>
            <І>бас мамандарының</І>
            <Б>бас мамандарына</Б>
            <Т>бас мамандарын</Т>
            <Ш>бас мамандарынан</Ш>
            <Ж>бас мамандарында</Ж>
            <К>бас мамандарымен</К>
        </олардың>
    </көпше>
</declension>
        
    

Функція qazaq/declension може повертати такі коди помилок:

Код Статус Значення Приклад
6 400 Не вказано обов’язковий параметр: s. ?s=+++
5 496 Не знайдено казахських слів. ?s=waffle

Запис чисел казахською мовою

Приклад запиту:

https://ws3.morpher.ua/qazaq/spell?n=111&useOne=false

Приклад відповіді:

        
            <string>жүз он бір</string>
        
    

Параметр useOne вказує, чи слід видавати слово бір (один) на початку, якщо йдеться про одну сотню, одну тисячу тощо. За замовчуванням true:

https://ws3.morpher.ua/qazaq/spell?n=111
        
            <string>бір жүз он бір</string>
        
    

Утворення порядкових числівників казахською мовою

Функція перетворює кількісні числівники (бір — один) на порядкові (бірінші — перший).

Приклад запиту:

https://ws3.morpher.ua/qazaq/ordinal?cardinal=бір

Приклад відповіді:

        
            <string>бірінші</string>
        
    

Запис дат казахською мовою

Приклад запиту:

https://ws3.morpher.ua/qazaq/spell-date?date=2011-11-11

Приклад відповіді:

        
            <string>екі мың он бірінші жылғы он бірінші қараша</string>
        
    

Запис числа й місяця казахською мовою

Приклад запиту:

https://ws3.morpher.ua/qazaq/spell-day-month?day=8&month=3

Приклад відповіді:

        
            <string>наурыздың сегізі</string>
        
    

Вибір формату відповіді (XML або JSON)

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

За замовчуванням повертається XML.

Обробка помилок

У разі помилки вебсервіс повертає код помилки та текстове повідомлення. Приклад запиту та відповіді:

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

XSD відповіді

Наступні помилки може повернути будь‑яка функція сервісу «Морфер»:

Код Статус Значення
1 402 Перевищено ліміт на кількість запитів на добу. Перейдіть на наступний тарифний план.
3 403 IP заблоковано.
9 498 Цей токен не знайдено.
10 497 Неправильний формат токена.

Крім того, окремі функції можуть повертати притаманні їм помилки.

Виправлення помилок відмінювання

У програму відмінювання вкладено роки розробки й кілька багатотисячних словників. Втім, лише географічних назв існують мільйони, не кажучи вже про особові імена, назви компаній, торгових марок та інші власні назви. Далеко не всі слова й словосполучення підпорядковуються загальним закономірностям, а врахування нюансів відмінювання різних найменувань — завдання вкрай трудомістке. Просто переглянути один мільйон слів і за потреби виправити помилки відмінювання (у середньому, скажімо, по одній хвилині на слово) займе понад 10 років роботи однієї людини (8‑годинний робочий день, 5 робочих днів на тиждень).

На щастя, ми живемо в епоху інтернету й можемо розв’язати це завдання разом. Ніхто не закликає вас виправляти помилки по вісім годин на день. Але якщо ви зустріли помилку у відмінюванні, ви можете легко її виправити на сторінці виправлення помилок. Ба більше, вебсервіс одразу почне видавати нове відмінювання, але лише для вас. Решта користувачів побачать ваше виправлення, щойно його перевірить модератор. Для цього ви маєте бути зареєстрованим користувачем. Це безкоштовно.

Користувацький словник (russian/userdict, ukrainian/userdict)

Вебсервіс підтримує виправлення відмінювання на вимогу користувача. Для цього є 3 методи:

Функція Метод Значення
/russian/userdict
/ukrainian/userdict
[GET] Отримати список усіх доданих виправлень
/russian/userdict
/ukrainian/userdict
[POST] Додати або змінити виправлення
/russian/userdict
/ukrainian/userdict
[DELETE] Видалити виправлення

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

Додати або змінити виправлення [POST]

Щоб додати або змінити виправлення, потрібно надіслати 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]

Щоб отримати список усіх виправлень, потрібно надіслати 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шка

Метод DELETE може повертати такі помилки:

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

Обмеження безкоштовної версії

Безкоштовне використання вебсервісу має такі обмеження:

  • Максимум 100 запитів на добу.

Ліміт на запити відновлюється о 00:00 UTC. Функція get-queries-left повертає залишок запитів на цей момент.

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

Якщо вам потрібне відмінювання великих обсягів, зареєструйтеся та оплатіть відповідний тарифний план:

Примітка 1: при оплаті будь‑якого тарифу знімаються обмеження на теги.

Примітка 2: тарификація функції russian/addstressmarks здійснюється за таким принципом: кожні 20 символів вихідного тексту еквівалентні 1 запиту. Якщо в тілі виклику функції передано текст довжиною до 20 символів, то такий виклик вважається еквівалентним 1 запиту до вебсервісу. Під символом тексту маються на увазі не лише літери російського алфавіту, а й будь‑які цифри, розділові знаки, пробіли, інші знаки та літери інших алфавітів. При цьому слід мати на увазі, що один перенос тексту на новий рядок може бути двома символами, якщо він переданий у Windows‑стилі, тобто як пара символів CR LF (див. статтю у Вікіпедії на цю тему).

Щоб стати платним користувачем, вам потрібно:

Реєстрація

Навіщо потрібна реєстрація? Навіть якщо ви користуєтеся вебсервісом безкоштовно, вам усе одно рекомендується зареєструватися, тому що:

  • Зареєстровані користувачі мають можливість виправляти помилки відмінювання.
  • Реєстрація допоможе вам уникнути неочікуваного блокування сервісу. Річ у тім, що за відсутності в запиті токена вебсервіс вважає всіх користувачів з однією зовнішньою IP‑адресою одним користувачем, що може призвести до швидкого вичерпання ліміту на кількість запитів на добу. Цієї проблеми можна уникнути, просто зареєструвавшись і додавши в запит ваш токен.

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

Щоб ідентифікувати себе як зареєстрованого користувача, необхідно передати вебсервісу токен, який ви можете отримати в особистому кабінеті. Є два способи це зробити:

  • Додати до рядка запиту параметр token:

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

  • За допомогою базової автентифікації HTTP. Для цього до запиту додається HTTP‑заголовок такого вигляду:
    Authorization: Basic QzZGNEZBQTEtRTczOC00RDk0LTk1RDQtNzFBMEY2QzY4MTNDCg==
    Токен передається у вигляді рядка, закодованого алгоритмом BASE‑64.

Виклик вебсервісу з різних мов програмування

Python

Node.js

PHP

.NET (C#)

Java

  • Офіційний клієнт: GitHub

  • Підтримка вебсервісу «Морфер.ру» вбудована в Платформу 1С. Для її активації достатньо встановити прапорець у налаштуваннях: відео.
  • У деяких випадках вам може знадобитися написати код мовою 1С для виклику функцій вебсервісу. Як це зробити, описано в цій статті на infostart.ru.
  • Інші варіанти

Новини

Отримувати новини про вебсервіс відмінювання можна через наш Telegram‑канал. (Раніше працювала група Google.)



 

Бібліотеки

Програми обробки текстів

© Сергей Слепов, 2003 - 2025.