shevchenko.js

JavaScript бібліотека з відкритим кодом для відмінювання українських антропонімів

ДемонстраціяПриклад використання

Демонстрація відмінювання українських прізвищ, імен по батькові

Автоматичне визначення граматичного роду відбувається за ім'ям по батькові.
Знайшли помилку?
Граматичний відмінокПрізвищеІм'яПо батькові
Називний (хто?)ШевченкоТарасГригорович
Родовий (кого?)ШевченкаТарасаГригоровича
Давальний (кому?)ШевченкуТарасуГригоровичу
Знахідний (кого?)ШевченкаТарасаГригоровича
Орудний (ким?)ШевченкомТарасомГригоровичем
Місцевий (при кому?)ШевченковіТарасовіГригоровичу
КличнийШевченкуТарасеГригоровичу

Принцип роботи

Бібліотека містить понад вісімдесят граматичних правил для відмінювання прізвищ, імен по батькові. Належне правило обирається за граматичним відмінком, родом, закінченням слова, частиною мови, сферою застосування та пріоритетом.

При відмінюванні жіночих прізвищ із закінченнями на -а, -я та чоловічих прізвищ із закінченнями на -ой, -ій, -ий, -их для класифікації прізвищ іменникового та прикметникового походження використовується модель машинного навчання, навчена на більш як сорока тисячах прізвищ. Тому прізвища іменникового та прикметникового походжень відмінюються як іменники та прикметники відповідно: Диня (називний) → Дині (родовий), Синя (називний) → Синьої (родовий), Рий (називний) → Рия (родовий), Бурий (називний) → Бурого (родовий).

При відмінюванні відбуваються зміни голосних та приголосних звуків згідно з правилами української мови: Сивокінь (називний) → Сивоконя (родовий), Гичка (називний) → Гичці (давальний).

Складні імена та прізвища, утворені поєднанням двох самостійних частин відмінюються за правилами відмінювання кожної складової частини: Анна-Марія (називний) → Анни-Марії (родовий), Нечуй-Левицький (називний) → Нечуя-Левицького (родовий). Але коли перша частина прізвища — односкладове слово, то відмінюється, як правило, лише друга частина: Драй-Хмара (називний) → Драй-Хмари (родовий).

Встановлення
npm
npm install --save shevchenko
Node.js
const shevchenko = require("shevchenko");
Браузер
<‍script type="text/javascript" src="https://unpkg.com/shevchenko"><‍/script>
Приклад використання
const shevchenko = require('shevchenko');

async function main() {
  const input = {
    gender: 'masculine',
    givenName: 'Тарас',
    patronymicName: 'Григорович',
    familyName: 'Шевченко'
  };

  const output = await shevchenko.inVocative(input);

  console.log(output); // { givenName: "Тарасе", patronymicName: "Григоровичу", familyName: "Шевченку" }
}

main().catch((error) => console.error(error));