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