morpher-ru

Библиотека для склонения слов и словосочетаний с использованием сервиса Морфер (morpher.ru)


License
MIT
Install
npm install morpher-ru@0.1.1

Documentation

morpher-ru

Build Status Coverage Status npm version GitHub license

Библиотека для склонения по падежам слов и словосочетаний на русском языке, использующая веб-сервис "Морфер".

Библиотека позволяет:

  • склонять фамилии, имена и отчества; названия должностей, городов, стран и т.д.;
  • формировать "сумму прописью" в любом падеже;
  • согласовывать единицы измерения с числом;
  • определять пол по имени.

Веб-сервис "Морфер" предусматривает бесплатное (с ограничениями) и платное использование. Подробнее смотрите на сайте проекта.

Установка

npm install morpher-ru --save

Инициализация библиотеки

Для подключение библиотеки необходимо создать объект Morpher. Конструктор может принимать два аргумента: параметры подключения и объект кеширования.

Можно вызвать конструктор без аргументов, в этом случае будут использоваться параметры по умолчанию.

const Morpher = require('morpher-ru');
let morpher = new Morpher();

Параметры подключения

В качестве первого аргумента можно передать объект с параметрами подключения к сервису:

let morpher = new Morpher({
    hosts: ['api.morpher.ru', 'morpher.ru'],
    login: 'USERNAME',
    password: 'PASSWORD',
    timeout: 10000
});
  • hosts (String, Array[String]) — хосты для подключения к сервису (по умолчанию ['api.morpher.ru', 'morpher.ru']).
  • login, password (String) — имя пользователя и пароль для зарегистрированных пользователей.
  • timeout (Int) — таймаут подключения (по умолчанию 10000). Если в качестве хостов определён массив, то при таймауте, будет произведена попытка отправить запрос следующему хосту.

Объект кеширования

У сервиса "Морфер" реализован лимит на количество одинаковых запросов в сутки, при превышении которого будет возвращаться ошибка "Превышен лимит на количество одинаковых запросов в сутки. Реализуйте кеширование".

По умолчанию библиотека использует встроенный объект кеширования типа in-memory, кеширующий запросы в память. Вы можете подключить собственный объект кеширования (например, использующий базу данных), передав его в качестве аргумента конструктора.

API

API библиотеки предоставляет три метода для работы с веб-сервисом "Морфер":

  • declension(text) — для склонения слов и словосочетаний;
  • declensionName(name) — для склонения имён;
  • declensionNumber(number, unit) — для преобразования чисел в прописной вид.

Каждый из этих методов возвращает промис, результатом работы которого будет соответствующий объект: EntityDeclension, EntityName или EntityNumber.

declension

Для склонения слов и словосочетаний используется метод declension(text):

let morpher = new Morpher();

morpher.declension('Программист').then(
    result => {
        console.log(result['именительный']); // Программист
        console.log(result['множественное']['родительный']); // Программистов
    },
    error => console.error(error)
);

result — объект EntityDeclension со следующими свойствами:

  • именительный (i, nominativus, кто, что) — текст в именительном падеже;
  • родительный (r, genitivus, кого, чего) — текст в родительном падеже;
  • дательный (d, dativus, кому, чему) — текст в дательном падеже;
  • винительный (v, accusativus) — текст в винительном падеже;
  • творительный (t, ablativus, кем, чем) — текст в творительном падеже;
  • предложный (p, praepositionalis) — текст в предложном падеже;
  • множественное (multiple) — возвращает объект со свойствами-падежами для текста во множественном числе.

При использовании платного аккаунта на сервисе, определяются дополнительные свойства:

  • po (о, о ком, о чём) — предложный падёж с предлогом о/об/обо;
  • род (gender) — род (masculine, feminine или neuter);
  • где (gde) — в местном падеже (локатив) с предлогом;
  • куда (kuda) — в направительном падеже (аллатив) с предлогом;
  • откуда (otkuda) — в исходном падеже (аблатив) с предлогом.

declensionName

Для склонения имён и определения пола используется метод declensionName(name):

let morpher = new Morpher();

morpher.declensionName('Иван Иванович Петров').then(
    result => {
        console.log(result['именительный']); // Петров Иван Иванович
        console.log(result['имя']['именительный']); // Иван
        console.log(result['пол']); // male (только для платных аккаунтов)
    },
    error => console.error(error)
);

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

  • личное имя;
  • фамилия;
  • отчество.

Например: Иван Васильевич Петров, Владимир Сергеевич, Владимир Петров. В результате, возвращаемом методом, имя будет преведено к виду "Фамилия Имя Отчество" (за исключением пропущенных идентификаторов).

Свойства объекта EntityName:

  • именительный (i, nominativus, кто) — имя в именительном падеже;
  • родительный (r, genitivus, кого) — имя в родительном падеже;
  • дательный (d, dativus, кому) — имя в дательном падеже;
  • винительный (v, accusativus) — имя в винительном падеже;
  • творительный (t, ablativus, кем) — имя в творительном падеже;
  • предложный (p, praepositionalis) — имя в предложном падеже;
  • пол (sex) — пол: male|female (только для платных аккаунтов);
  • имя (firstName, first) — личное имя (если определено);
  • фамилия (lastName, last) — фамилия (если определена);
  • отчество (middleName, middle) — отчество (если определено).

Свойства имя, фамилия и отчество возвращают объекты со свойствами-падежами.

declensionNumber

Метод declensionNumber(number, unit) используется для преобразования числа в прописной вид, а также для согласования единицы измерения с числом:

let morpher = new Morpher();

morpher.declensionNumber(38, 'попугай').then(
    result => {
        console.log(result['именительный']); // тридцать восемь попугаев
        console.log(result['число']['родительный']); // тридцати восьми
        console.log(result['единица измерения']['родительный']); // попугаев
    },
    error => console.error(error)
);

Свойства объекта EntityNumber:

  • именительный (i, nominativus, кто) — число и единица измерения в именительном падеже;
  • родительный (r, genitivus, кого) — число и единица измерения в родительном падеже;
  • дательный (d, dativus, кому) — число и единица измерения в дательном падеже;
  • винительный (v, accusativus) — число и единица измерения в винительном падеже;
  • творительный (t, ablativus, кем) — число и единица измерения в творительном падеже;
  • предложный (p, praepositionalis) — число и единица измерения в предложном падеже;
  • значение (value) — числовое значение типа Integer;
  • число (number) — число прописью;
  • единица измерения (unit) — единица измерения.

Свойства число и единица измерения возвращают объекты со свойствами-падежами.