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

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

Experimental feature. Learn more.
Not supported in ClickHouse Cloud
предупреждение

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

detectCharset

Введено в: v22.2

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

Синтаксис

detectCharset(s)

Аргументы

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

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

Возвращает строку, содержащую код определенной кодировки String

Примеры

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

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

detectLanguage

Введено в: v22.2

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

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

Синтаксис

detectLanguage(s)

Аргументы

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

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

Возвращает 2-буквенный код языка по стандарту ISO. Другие возможные результаты: un = неизвестно, язык не может быть определен, other = определенный язык не имеет 2-буквенного кода. 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 2-буквенных кодов языков, сопоставленных с процентом использования определенного языка в тексте.

Синтаксис

detectLanguageMixed(s)

Аргументы

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

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

Возвращает карту, где ключи — это 2-буквенные коды 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 работает с не закодированными в UTF8 строками. Предпочитайте эту версию, если ваша кодировка — UTF-16 или UTF-32.

Синтаксис

detectLanguageUnknown('s')

Аргументы

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

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

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

Примеры

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

SELECT detectLanguageUnknown('Ich bleibe für ein paar Tage.')
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')
wolf

stem

Введено в: v21.9

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

Синтаксис

stem(lang, word)

Аргументы

  • lang — Язык, к которому будут применены правила. Используйте 2-буквенный код 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

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

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

  • plain
  • wordnet

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

С типом расширения wordnet необходимо предоставить путь к каталогу со словарем WordNet. Словарь должен содержать индекс смыслов WordNet.

Синтаксис

synonyms(ext_name, word)

Аргументы

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

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

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

Примеры

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

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