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

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

Experimental feature. Learn more.
Not supported in ClickHouse Cloud

detectCharset

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

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

Примечание

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

Синтаксис

detectCharset(s)

Аргументы

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

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

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

Примеры

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

SELECT detectCharset('Ich bleibe für ein paar Tage.')
WINDOWS-1252

detectLanguage

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

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

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

Примечание

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

Синтаксис

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.0

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

Примечание

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

Синтаксис

detectLanguageMixed(s)

Аргументы

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

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

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

Примеры

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

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

detectLanguageUnknown

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

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

Примечание

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

Синтаксис

detectLanguageUnknown('s')

Аргументы

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

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

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

Примеры

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

SELECT detectLanguageUnknown('Ich bleibe für ein paar Tage.')
de

detectTonality

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

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

Ограничение

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

Примечание

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

Синтаксис

detectTonality(s)

Аргументы

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

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

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

Примеры

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

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

lemmatize

Добавлено в версии: v21.9.0

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

Примечание

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

Синтаксис

lemmatize(lang, word)

Аргументы

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

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

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

Примеры

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

SELECT lemmatize('en', 'wolves')
wolf

stem

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

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

Синтаксис

stem(word, language)

Аргументы

  • word — Одно слово в нижнем регистре (или массив слов) для стемминга. Должно быть в нижнем регистре — символы в верхнем регистре приводят к неопределённому результату. Принимает String, FixedString, Array(String), Array(FixedString), Array(Nullable(String)) или Array(Nullable(FixedString)). String или FixedString или Array(String) или Array(FixedString)
  • language — Язык, для которого будут применяться правила стемминга. Используйте двухбуквенный код ISO 639-1 (например, 'en', 'de', 'fr'), см. https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes. String

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

Стеммированная форма слова (String) или массив стеммированных слов (Array(String)). String или Array(String)

Примеры

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

SELECT stem('blessing', 'en') AS res
bless

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

SELECT stem(['blessing', 'disguise'], 'en') AS res
['bless','disguis']

Стемминг типа FixedString

SELECT stem(toFixedString('blessing', 10), 'en') AS res
bless

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

SELECT stem(toNullable('blessing'), 'en') AS res
bless

synonyms

Добавлено в версии: v21.9.0

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

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

  • plain
  • wordnet

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

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

Примечание

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

Синтаксис

synonyms(ext_name, word)

Аргументы

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

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

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

Примеры

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

SELECT synonyms('list', 'important')
['important','big','critical','crucial']