Нормальные формы: что писать после ~
Представим, что в вашего бота время от времени приходят вопросы о возврате товара. И решаете вы покрыть этот вопрос нехитрым паттерном.
q: * (~вернуть/~возвращать) *
Но сколько ни бейтесь, запрос возвращать
— попадает в паттерн, а вернуть
— нет! Может, дело в том, какую лемму мы указали после тильды(~
)?
Леммой в лингвистике называют начальную, словарную форму слова. Лемматизатор — инструмент, приводящий слова из запроса к их начальной форме. По умолчанию в проекте выставляется лемматизатор mystem, также можно поменять его на udpipe через настройки классификатора. Наш пример как раз с udpipe.
Чтобы посмотреть на свой запрос глазами лемматизатора, мы используем метод $caila.markup("вернуть")
. Логируем ответ и видим: "lemma": "вераться"
🥴
Гугл говорит, что это слово имеет значение “прятаться”. Интересно, конечно, но что делать-то?
Во-первых, лемматизаторов у нас несколько. Можно поменять на другой.
Во-вторых, никто не мешает поместить ~вераться
в тот же паттерн и отлавливать вернуть
через него.
Ещё несколько забавных примеров лемматизации для вас:
- снимок → снимка (спец., устар. мягкая резинка для удаления излишних карандашных линий или пятен)
- курс → курса (древнелатышская историческая область, населённая куршами)
- самаре → самар
- перми → пер
- и моё любимое: уничтожать → уничтогнуть 🥴🥴🥴
А есть один прям даже не забавный, а разбивающий сердечко пример, в этот раз от mystem:
- полчаса, получасом, получасе → получасы
- получаса, получасу → получас
Но всё же mystem как будто ближе по своим интерпретациям к современному русскому языку.
Изучите документацию JAICP |
Читать! |
|