--- toc_priority: 67 toc_title: NLP --- # [экспериментально] Функции для работы с ествественным языком {#nlp-functions} !!! warning "Предупреждение" Сейчас использование функций для работы с ествественным языком является экспериментальной возможностью. Чтобы использовать данные функции, включите настройку `allow_experimental_nlp_functions = 1`. ## stem {#stem} Данная функция проводит стемминг заданного слова. **Синтаксис** ``` sql stem('language', word) ``` **Аргументы** - `language` — Язык, правила которого будут применены для стемминга. Допускается только нижний регистр. [String](../../sql-reference/data-types/string.md#string). - `word` — Слово подлежащее стеммингу. Допускается только нижний регистр. [String](../../sql-reference/data-types/string.md#string). **Examples** Query: ``` sql SELECT SELECT arrayMap(x -> stem('en', x), ['I', 'think', 'it', 'is', 'a', 'blessing', 'in', 'disguise']) as res; ``` Result: ``` text ┌─res────────────────────────────────────────────────┐ │ ['I','think','it','is','a','bless','in','disguis'] │ └────────────────────────────────────────────────────┘ ``` ## lemmatize {#lemmatize} Данная функция проводит лемматизацию для заданного слова. Для работы лемматизатора необходимы словари, которые можно найти [здесь](https://github.com/vpodpecan/lemmagen3/tree/master/src/lemmagen3/models). **Синтаксис** ``` sql lemmatize('language', word) ``` **Аргументы** - `language` — Язык, правила которого будут применены для лемматизации. [String](../../sql-reference/data-types/string.md#string). - `word` — Слово, подлежащее лемматизации. Допускается только нижний регистр. [String](../../sql-reference/data-types/string.md#string). **Примеры** Запрос: ``` sql SELECT lemmatize('en', 'wolves'); ``` Результат: ``` text ┌─lemmatize("wolves")─┐ │ "wolf" │ └─────────────────────┘ ``` Конфигурация: ``` xml en en.bin ``` ## synonyms {#synonyms} Находит синонимы к заданному слову. Представлены два типа расширений словарей: `plain` и `wordnet`. Для работы расширения типа `plain` необходимо указать путь до простого текстового файла, где каждая строка соотвествует одному набору синонимов. Слова в данной строке должны быть разделены с помощью пробела или знака табуляции. Для работы расширения типа `plain` необходимо указать путь до WordNet тезауруса. Тезаурус должен содержать WordNet sense index. **Синтаксис** ``` sql synonyms('extension_name', word) ``` **Аргументы** - `extension_name` — Название расширения, в котором будет проводиться поиск. [String](../../sql-reference/data-types/string.md#string). - `word` — Слово, которое будет искаться в расширении. [String](../../sql-reference/data-types/string.md#string). **Примеры** Запрос: ``` sql SELECT synonyms('list', 'important'); ``` Результат: ``` text ┌─synonyms('list', 'important')────────────┐ │ ['important','big','critical','crucial'] │ └──────────────────────────────────────────┘ ``` Конфигурация: ``` xml en plain en.txt en wordnet en/ ```