Перейти к основному содержанию
Перейти к основному содержанию

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

Experimental feature. Learn more.
Not supported in ClickHouse Cloud
Примечание

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

detectCharset

Появилась в: v22.2

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

Синтаксис

detectCharset(s)

Аргументы

  • s — текст для анализа. String

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

Возвращает строку с кодировкой обнаруженного набора символов. String

Примеры

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

SELECT detectCharset('Я останусь на несколько дней.')
WINDOWS-1252

detectLanguage

Появилась в версии: v22.2

Определяет язык входной строки в кодировке UTF-8. Функция использует библиотеку CLD2 для определения языка и возвращает двухбуквенный языковой код ISO.

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

Синтаксис

detectLanguage(s)

Аргументы

  • text_to_be_analyzed — Текст для анализа. String

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

Возвращает двухбуквенный ISO‑код определённого языка. Другие возможные результаты: un = неизвестно, не удалось определить язык, other = для определённого языка нет двухбуквенного кода. String

Примеры

Текст на смешанном языке

SELECT detectLanguage('Je pense que je ne parviendrai jamais à parler français comme un natif. Where there\'s a will, there\'s a way.')
fr

detectLanguageMixed

Добавлено в: v22.2

Аналогично функции detectLanguage, но detectLanguageMixed возвращает Map, в котором двухбуквенным кодам языков сопоставлены значения с процентной долей соответствующего языка в тексте.

Синтаксис

detectLanguageMixed(s)

Аргументы

  • s — текст для анализа String

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

Возвращает отображение (map), где ключами являются двухбуквенные ISO‑коды, а значениями — процент текста, относящийся к соответствующему языку Map(String, Float32)

Примеры

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

SELECT detectLanguageMixed('二兎を追う者は一兎をも得ず二兎を追う者は一兎をも得ず A vaincre sans peril, on triomphe sans gloire.')
{'ja':0.62,'fr':0.36}

detectLanguageUnknown

Добавлена в версии: v22.2

Аналогична функции detectLanguage, за исключением того, что функция detectLanguageUnknown работает со строками, закодированными не в UTF-8. Используйте эту версию, когда набор символов — UTF-16 или UTF-32.

Синтаксис

detectLanguageUnknown('s')

Аргументы

  • s — текст для анализа. String

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

Возвращает двухбуквенный код ISO обнаруженного языка. Другие возможные результаты: un = неизвестно, не удалось определить язык; other = для обнаруженного языка не существует двухбуквенного кода. String

Примеры

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

SELECT detectLanguageUnknown('Я останусь на несколько дней.')
de

detectProgrammingLanguage

Впервые появилась в версии v22.2

Определяет язык программирования по заданному фрагменту исходного кода.

Синтаксис

detectProgrammingLanguage('source_code')

Аргументы

  • source_code — строковое представление исходного кода для анализа. String

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

Возвращает язык программирования в виде String

Примеры

Определение кода на C++

SELECT detectProgrammingLanguage('#include <iostream>')
C++

detectTonality

Появилась в версии: v22.2

Определяет тональность (эмоциональную окраску) переданных текстовых данных.

Ограничение

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

Синтаксис

detectTonality(s)

Аргументы

  • s — текст для анализа. String

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

Возвращает среднее значение тональности слов в тексте. Float32

Примеры

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

SELECT
    detectTonality('Шарик - хороший пёс'),
    detectTonality('Шарик - пёс'),
    detectTonality('Шарик - плохой пёс')
0.44445, 0, -0.3

lemmatize

Впервые представлена в версии v21.9

Выполняет лемматизацию заданного слова. Для работы этой функции требуются словари, которые можно получить с GitHub. Подробнее о загрузке словаря из локального файла см. на странице "Определение словарей".

Синтаксис

lemmatize(lang, word)

Аргументы

  • lang — Язык, к которому будут применены правила. String
  • word — Слово в нижнем регистре, которое нужно лемматизировать. String

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

Возвращает лемматизированную форму слова в виде String

Примеры

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

SELECT lemmatize('en', 'wolves')
волк

stem

Добавлено в: v21.9

Выполняет стемминг для заданного слова.

Синтаксис

stem(lang, word)

Аргументы

  • lang — Язык, к которому будут применены правила. Используйте двухбуквенный код ISO 639-1. String
  • word — Слово в нижнем регистре, которое нужно привести к основе (стеммировать). String

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

Возвращает стеммированную форму слова в виде String

Примеры

Стемминг английских слов

SELECT arrayMap(x -> stem('en', x),
['I', 'think', 'it', 'is', 'a', 'blessing', 'in', 'disguise']) AS res
['Я','думаю','это','скрытое','благословение']

synonyms

Введено в версии v21.9

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

Существует два типа расширений синонимов:

  • plain
  • wordnet

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

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

Синтаксис

synonyms(ext_name, word)

Аргументы

  • ext_name — Название расширения, в котором будет выполняться поиск. String
  • word — Слово, по которому выполняется поиск в расширении. String

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

Возвращает массив синонимов для указанного слова. Array(String)

Примеры

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

SELECT synonyms('list', 'important')
['важный','значительный','критический','решающий']