$caila.inflect
Преобразует слова и словосочетания в нужную грамматическую форму.
$caila.inflect
поддержан для русского и украинского языков.Синтаксис
Принимаемые аргументы
Метод принимает 2 обязательных аргумента.
Аргумент | Описание | Тип |
---|---|---|
text | Слово или словосочетание, которое необходимо преобразовать. | Строка |
tags | Массив тегов для нужной грамматической формы. | Массив строк |
Если к одному и тому же слову нужно применить несколько тегов, то они отделяются друг от друга запятой.
Возвращаемое значение
Метод возвращает слова и словосочетания в требуемой грамматической форме.
Пример вызова
- ECMAScript 5
- ECMAScript 6
$caila.inflect("культурная столица", ["loct"]); // => "культурной столице"
$caila.inflect("создать бота", ["femn, past"]); // => "создала бота"
В среде ECMAScript 6 метод является асинхронным:
await $caila.inflect("культурная столица", ["loct"]); // => "культурной столице"
await $caila.inflect("создать бота", ["femn, past"]); // => "создала бота"
Грамматические теги
Метод $caila.inflect
использует библиотеку pymorphy2.
В качестве грамматических тегов в pymorphy2 используются теги, принятые в словаре OpenCorpora.
Падеж
Тег | Значение | Вопрос | Пример |
---|---|---|---|
nomn | Именительный падеж | Кто? Что? | Чат-бот ответит клиенту. |
gent | Родительный падеж | Кого? Чего? | Количество уникальных пользователей. |
datv | Дательный падеж | Кому? Чему? | Напишите чат-боту. |
accs | Винительный падеж | Кого? Что? | Перевести на оператора. |
ablt | Творительный падеж | Кем? Чем? | Идентификатор появится под названием канала. |
loct | Предложный падеж | О ком? О чем? | Просмотреть данные о полученном файле. |
voct | Звательный падеж | Саш, купи пакет SMS. | |
gen2 | Частичный падеж | Чего? | Ложка сахару (gent — ложка сахара). |
acc2 | Превратительный падеж | Во что? Кем или чем стал? | Записался в солдаты. |
loc2 | Местный падеж | Где? В чем? | Я у него в долгу (loct — напоминать о долге). |
Число
Тег | Значение | Пример |
---|---|---|
sing | Единственное число | Дополнительный пакет. |
plur | Множественное число | Дополнительные пакеты. |
Род
Тег | Значение | Пример |
---|---|---|
masc | Мужской род | Упал. |
femn | Женский род | Упала. |
neut | Средний род | Упало. |
Лицо
Тег | Значение | Пример |
---|---|---|
1per | 1 лицо | Делаю. |
2per | 2 лицо | Делаешь. |
3per | 3 лицо | Делает. |
Время
Тег | Значение | Пример |
---|---|---|
pres | Настоящее время | Создаю. |
past | Прошедшее время | Создал. |
futr | Будущее время | Создаст. |
Версии словаря
В словаре OpenCorpora могут встречаться ошибки преобразования слов.
Если результат $caila.inflect
не соответствует ожидаемому, вы можете использовать метод $caila.inflectWithDictVersion
.
Метод $caila.inflectWithDictVersion
также использует библиотеку pymorphy2, но он позволяет выбрать другую версию словаря.
Метод принимает 3 обязательных аргумента.
Аргумент | Описание | Тип |
---|---|---|
text | Слово или словосочетание, которое необходимо преобразовать. | Строка |
tags | Массив тегов для нужной грамматической формы. | Массив строк |
version | Версия словаря: v1 — версия, которая используется для метода $caila.inflect . v2 — новая версия, в которой исправлены некоторые ошибки. | Строка |
Пример
Методы $caila.inflectWithDictVersion
с версией словаря v1
и $caila.inflect
возвращают одинаковый результат.
- ECMAScript 5
- ECMAScript 6
$caila.inflect("лучший", ["gent"]); // => "наихорошего"
$caila.inflectWithDictVersion("лучший", ["gent"], "v1"); // => "наихорошего"
$caila.inflectWithDictVersion("лучший", ["gent"], "v2"); // => "лучшего"
await $caila.inflect("лучший", ["gent"]); // => "наихорошего"
await $caila.inflectWithDictVersion("лучший", ["gent"], "v1"); // => "наихорошего"
await $caila.inflectWithDictVersion("лучший", ["gent"], "v2"); // => "лучшего"
Использование в сценарии
- ECMAScript 5
- ECMAScript 6
state: Start
q!: $regex</start>
a: Здравствуйте, я помогу вам оформить доставку. Подскажите, вы из какого города?
state: City
intent: /city
script:
var city = capitalize($caila.inflect($parseTree._city, ["gent"]));
$reactions.answer("Так и записал, вы из " + city);
# ...
state: Start
q!: $regex</start>
a: Здравствуйте, я помогу вам оформить доставку. Подскажите, вы из какого города?
state: City
intent: /city
scriptEs6:
var city = capitalize(await $caila.inflect($parseTree._city, ["gent"]));
$reactions.answer("Так и записал, вы из " + city);
# ...