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

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

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

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

detectCharset

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

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

Синтаксис

detectCharset(s)

Аргументы

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

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

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

Примеры

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

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

detectLanguage

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

Определяет язык входной строки в кодировке 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.0

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

Синтаксис

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.

Синтаксис

detectLanguageUnknown('s')

Аргументы

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

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

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

Примеры

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

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

detectProgrammingLanguage

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

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

Синтаксис

detectProgrammingLanguage('source_code')

Аргументы

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

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

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

Примеры

Определение фрагмента кода на C++

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

detectTonality

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

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

Ограничение

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

Синтаксис

detectTonality(s)

Аргументы

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

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

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

Примеры

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

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

lemmatize

Введена в версии: v21.9.0

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

Синтаксис

lemmatize(lang, word)

Аргументы

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

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

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

Примеры

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

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

stem

Появилась в версии: v21.9.0

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

Синтаксис

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
['I','think','it','is','a','bless','in','disguis']

synonyms

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

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

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

  • plain
  • wordnet

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

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

Синтаксис

synonyms(ext_name, word)

Аргументы

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

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

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

Примеры

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

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