> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по функциям обработки естественного языка (NLP)

# Функции обработки естественного языка (NLP)

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Не поддерживается в ClickHouse Cloud
        </div>;
};

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Экспериментальная возможность. <u><a href="/docs/beta-and-experimental-features#experimental-features">Подробнее.</a></u>
        </div>;
};

<div id="natural-language-processing-nlp-functions">
  # Функции для обработки естественного языка (NLP)
</div>

{/*AUTOGENERATED_START*/}

<div id="detectCharset">
  ## detectCharset
</div>

Добавленный в: v22.2.0

Определяет кодировку входной строки, если она закодирована не в UTF-8.

<Warning>
  Эта функция экспериментальная и в будущих релизах может измениться непредсказуемым образом, в том числе с нарушением обратной совместимости.
  Установите `allow_experimental_nlp_functions = 1`, чтобы включить её.
</Warning>

**Синтаксис**

```sql theme={null}
detectCharset(s)
```

**Аргументы**

* `s` — Текст для анализа. [`String`](/ru/reference/data-types/string)

**Возвращаемое значение**

Возвращает строку с кодом обнаруженной кодировки символов [`String`](/ru/reference/data-types/string)

**Примеры**

**Базовое использование**

```sql title=Query theme={null}
SELECT detectCharset('Ich bleibe für ein paar Tage.')
```

```response title=Response theme={null}
WINDOWS-1252
```

<div id="detectLanguage">
  ## detectLanguage
</div>

Добавленный в: v22.2.0

Определяет язык входной строки в кодировке UTF-8.
Для определения функция использует [библиотеку CLD2](https://github.com/CLD2Owners/cld2) и возвращает двухбуквенный код языка по ISO.

Чем длиннее входная строка, тем точнее определяется язык.

<Warning>
  Эта функция является экспериментальной и в будущих релизах может изменяться непредсказуемым образом, в том числе с нарушением обратной совместимости.
  Установите `allow_experimental_nlp_functions = 1`, чтобы включить её.
</Warning>

**Синтаксис**

```sql theme={null}
detectLanguage(s)
```

**Аргументы**

* `text_to_be_analyzed` — Текст для анализа. [`String`](/ru/reference/data-types/string)

**Возвращаемое значение**

Возвращает двухбуквенный ISO-код определённого языка. Другие возможные результаты: `un` = неизвестно, язык определить не удалось; `other` = у определённого языка нет двухбуквенного кода. [`String`](/ru/reference/data-types/string)

**Примеры**

**Текст со смешением языков**

```sql title=Query theme={null}
SELECT detectLanguage('Je pense que je ne parviendrai jamais à parler français comme un natif. Where there\'s a will, there\'s a way.')
```

```response title=Response theme={null}
fr
```

<div id="detectLanguageMixed">
  ## detectLanguageMixed
</div>

Добавленный в: v22.2.0

Подобно функции [`detectLanguage`](#detectLanguage), `detectLanguageMixed` возвращает `Map` с двухбуквенными кодами языков, которым сопоставлена процентная доля соответствующего языка в тексте.

<Warning>
  Эта функция является экспериментальной и в будущих релизах может измениться непредсказуемым и обратно несовместимым образом.
  Чтобы включить её, установите `allow_experimental_nlp_functions = 1`.
</Warning>

**Синтаксис**

```sql theme={null}
detectLanguageMixed(s)
```

**Аргументы**

* `s` — Текст для анализа [`String`](/ru/reference/data-types/string)

**Возвращаемое значение**

Возвращает Map, где ключи — двухбуквенные ISO-коды, а соответствующие значения — доля текста, определённого как данный язык [`Map(String, Float32)`](/ru/reference/data-types/map)

**Примеры**

**Смешанные языки**

```sql title=Query theme={null}
SELECT detectLanguageMixed('二兎を追う者は一兎をも得ず二兎を追う者は一兎をも得ず A vaincre sans peril, on triomphe sans gloire.')
```

```response title=Response theme={null}
{'ja':0.62,'fr':0.36}
```

<div id="detectLanguageUnknown">
  ## detectLanguageUnknown
</div>

Добавленный в: v22.2.0

Подобно функции [`detectLanguage`](#detectLanguage), функция detectLanguageUnknown работает со строками, закодированными не в UTF-8.
Используйте эту версию, если ваша кодировка — UTF-16 или UTF-32.

<Warning>
  Эта функция экспериментальная и в будущих релизах может изменяться непредсказуемым образом, в том числе с нарушением обратной совместимости.
  Чтобы включить её, установите `allow_experimental_nlp_functions = 1`.
</Warning>

**Синтаксис**

```sql theme={null}
detectLanguageUnknown('s')
```

**Аргументы**

* `s` — Текст для анализа. [`String`](/ru/reference/data-types/string)

**Возвращаемое значение**

Возвращает двухбуквенный ISO-код определённого языка. Другие возможные результаты: `un` = неизвестно, язык определить не удалось; `other` = у определённого языка нет двухбуквенного кода. [`String`](/ru/reference/data-types/string)

**Примеры**

**Базовое использование**

```sql title=Query theme={null}
SELECT detectLanguageUnknown('Ich bleibe für ein paar Tage.')
```

```response title=Response theme={null}
de
```

<div id="detectTonality">
  ## detectTonality
</div>

Добавленный в: v22.2.0

Определяет тональность переданных текстовых данных.

<Info>
  **Ограничение**

  Текущая версия этой функции ограничена тем, что использует встроенный словарь эмоциональной окраски и работает только с русским языком.
</Info>

<Warning>
  Эта функция является экспериментальной и в будущих версиях может измениться непредсказуемым образом с нарушением обратной совместимости.
  Установите `allow_experimental_nlp_functions = 1`, чтобы включить её.
</Warning>

**Синтаксис**

```sql theme={null}
detectTonality(s)
```

**Аргументы**

* `s` — Текст для анализа. [`String`](/ru/reference/data-types/string)

**Возвращаемое значение**

Возвращает среднее значение тональности слов в тексте [`Float32`](/ru/reference/data-types/float)

**Примеры**

**Анализ тональности текста на русском языке**

```sql title=Query theme={null}
SELECT
    detectTonality('Шарик - хороший пёс'),
    detectTonality('Шарик - пёс'),
    detectTonality('Шарик - плохой пёс')
```

```response title=Response theme={null}
0.44445, 0, -0.3
```

<div id="lemmatize">
  ## lemmatize
</div>

Добавленный в: v21.9.0

Выполняет лемматизацию указанного слова.
Для работы этой функции требуются словари, которые можно получить на [github](https://github.com/vpodpecan/lemmagen3/tree/master/src/lemmagen3/models).
Подробнее о загрузке словаря из локального файла см. на странице ["Определение словарей"](/ru/reference/statements/create/dictionary/sources/local-file).

<Warning>
  Эта функция является экспериментальной и в будущих релизах может измениться непредсказуемым и обратно несовместимым образом.
  Установите `allow_experimental_nlp_functions = 1`, чтобы включить её.
</Warning>

**Синтаксис**

```sql theme={null}
lemmatize(lang, word)
```

**Аргументы**

* `lang` — Язык, правила которого будут применяться. [`String`](/ru/reference/data-types/string)
* `word` — Слово в нижнем регистре, которое нужно лемматизировать. [`String`](/ru/reference/data-types/string)

**Возвращаемое значение**

Лемматизированная форма слова [`String`](/ru/reference/data-types/string)

**Примеры**

**Лемматизация английских слов**

```sql title=Query theme={null}
SELECT lemmatize('en', 'wolves')
```

```response title=Response theme={null}
wolf
```

<div id="stem">
  ## stem
</div>

Добавленный в: v21.9.0

Выполняет стемминг слова или массива слов с помощью алгоритмов Snowball.
Каждая входная строка должна состоять из одного слова в нижнем регистре — строки, содержащие пробельные символы, вызывают исключение.
Передача символов в верхнем регистре приводит к неопределённым результатам.
Для скалярных входных данных (включая FixedString) возвращает String, а для входных массивов — Array(String).
Поддерживаются варианты Nullable и LowCardinality для типов String и FixedString.

**Синтаксис**

```sql theme={null}
stem(word, language)
```

**Аргументы**

* `word` — Одно слово в нижнем регистре (или массив слов) для стемминга. Должно быть в нижнем регистре — символы в верхнем регистре приводят к неопределённому результату. Принимает String, FixedString, Array(String), Array(FixedString), Array(Nullable(String)) или Array(Nullable(FixedString)). [`String`](/ru/reference/data-types/string) или [`FixedString`](/ru/reference/data-types/fixedstring) или [`Array(String)`](/ru/reference/data-types/array) или [`Array(FixedString)`](/ru/reference/data-types/array)
* `language` — Язык, для которого будут применяться правила стемминга. Используйте двухбуквенный код ISO 639-1 (например, 'en', 'de', 'fr'), см. [https://en.wikipedia.org/wiki/List\&#95;of\&#95;ISO\&#95;639\&#95;language\&#95;codes](https://en.wikipedia.org/wiki/List\&#95;of\&#95;ISO\&#95;639\&#95;language\&#95;codes). [`String`](/ru/reference/data-types/string)

**Возвращаемое значение**

Форма основы слова (String) или массив основ слов (Array(String)). [`String`](/ru/reference/data-types/string) или [`Array(String)`](/ru/reference/data-types/array)

**Примеры**

**Стемминг одного слова**

```sql title=Query theme={null}
SELECT stem('blessing', 'en') AS res
```

```response title=Response theme={null}
bless
```

**Стемминг для массива слов**

```sql title=Query theme={null}
SELECT stem(['blessing', 'disguise'], 'en') AS res
```

```response title=Response theme={null}
['bless','disguis']
```

**Стемминг для FixedString**

```sql title=Query theme={null}
SELECT stem(toFixedString('blessing', 10), 'en') AS res
```

```response title=Response theme={null}
bless
```

**Стемминг слова типа Nullable**

```sql title=Query theme={null}
SELECT stem(toNullable('blessing'), 'en') AS res
```

```response title=Response theme={null}
bless
```

<div id="synonyms">
  ## synonyms
</div>

Добавленный в: v21.9.0

Находит синонимы заданного слова.

Есть два типа расширений синонимов:

* `plain`
* `wordnet`

Для типа расширения `plain` необходимо указать путь к обычному текстовому файлу, где каждая строка соответствует определённому набору синонимов.
Слова в строке должны быть разделены пробелами или символами табуляции.

Для типа расширения `wordnet` необходимо указать путь к каталогу, содержащему тезаурус WordNet.
Тезаурус должен содержать индекс смыслов WordNet.

<Warning>
  Эта функция экспериментальная и в будущих версиях может измениться непредсказуемым образом, в том числе с нарушением обратной совместимости.
  Чтобы включить её, установите `allow_experimental_nlp_functions = 1`.
</Warning>

**Синтаксис**

```sql theme={null}
synonyms(ext_name, word)
```

**Аргументы**

* `ext_name` — Имя расширения, в котором будет выполняться поиск. [`String`](/ru/reference/data-types/string)
* `word` — Слово, для которого будет выполняться поиск в расширении. [`String`](/ru/reference/data-types/string)

**Возвращаемое значение**

Возвращает массив синонимов для указанного слова. [`Array(String)`](/ru/reference/data-types/array)

**Примеры**

**Поиск синонимов**

```sql title=Query theme={null}
SELECT synonyms('list', 'important')
```

```response title=Response theme={null}
['important','big','critical','crucial']
```
