2021-06-05 03:57:53 +00:00
---
2022-08-26 17:37:11 +00:00
slug: /ru/sql-reference/functions/nlp-functions
2022-04-09 13:29:05 +00:00
sidebar_position: 67
sidebar_label: NLP
2021-06-05 03:57:53 +00:00
---
2021-12-30 03:19:37 +00:00
# [экспериментально] Функции для работы с естественным языком {#nlp-functions}
2021-08-02 12:32:45 +00:00
2022-04-09 13:29:05 +00:00
:::danger "Предупреждение"
2021-12-30 03:19:37 +00:00
Сейчас использование функций для работы с естественным языком является экспериментальной возможностью. Чтобы использовать данные функции, включите настройку `allow_experimental_nlp_functions = 1` .
2022-08-22 14:37:31 +00:00
:::
2021-06-05 03:57:53 +00:00
## 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
2021-10-19 22:38:34 +00:00
SELECT arrayMap(x -> stem('en', x), ['I', 'think', 'it', 'is', 'a', 'blessing', 'in', 'disguise']) as res;
2021-06-05 03:57:53 +00:00
```
Result:
``` text
┌─res────────────────────────────────────────────────┐
│ ['I','think','it','is','a','bless','in','disguis'] │
└────────────────────────────────────────────────────┘
```
## lemmatize {#lemmatize}
2021-08-02 12:32:45 +00:00
Данная функция проводит лемматизацию для заданного слова. Для работы лемматизатора необходимы словари, которые можно найти [здесь ](https://github.com/vpodpecan/lemmagen3/tree/master/src/lemmagen3/models ).
2021-06-05 03:57:53 +00:00
**Синтаксис**
``` 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
< lemmatizers >
< lemmatizer >
< lang > en< / lang >
< path > en.bin< / path >
< / lemmatizer >
< / lemmatizers >
```
## synonyms {#synonyms}
2021-08-02 12:32:45 +00:00
Находит синонимы к заданному слову. Представлены два типа расширений словарей: `plain` и `wordnet` .
2021-12-30 03:19:37 +00:00
Для работы расширения типа `plain` необходимо указать путь до простого текстового файла, где каждая строка соответствует одному набору синонимов. Слова в данной строке должны быть разделены с помощью пробела или знака табуляции.
2021-08-02 12:32:45 +00:00
Для работы расширения типа `plain` необходимо указать путь до WordNet тезауруса. Тезаурус должен содержать WordNet sense index.
2021-06-05 03:57:53 +00:00
**Синтаксис**
``` 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
< synonyms_extensions >
< extension >
< name > en< / name >
< type > plain< / type >
< path > en.txt< / path >
< / extension >
< extension >
< name > en< / name >
< type > wordnet< / type >
< path > en/< / path >
< / extension >
< / synonyms_extensions >
2022-08-22 14:37:31 +00:00
```