evalMLMethod
evalMLMethod. См. ссылку в linearRegression.
stochasticLinearRegression
evalMLMethod.
stochasticLogisticRegression
evalMLMethod.
naiveBayesClassifier
model_name— Имя предварительно настроенной модели. String Модель должна быть определена в файлах конфигурации ClickHouse (см. ниже).input_text— Текст для классификации. String Текст обрабатывается в точности в том виде, в котором он передан (с сохранением регистра и пунктуации).
- Идентификатор предсказанного класса в виде беззнакового целого числа. UInt32 Идентификаторы классов соответствуют категориям, заданным при построении модели.
0 может соответствовать английскому, а 1 — французскому; значения классов зависят от ваших обучающих данных.
Подробности реализации
- Поддерживает n-граммы любого размера
- Три режима токенизации:
byte: Работает с сырыми байтами. Каждый байт — один токен.codepoint: Работает со скалярными значениями Unicode, декодированными из UTF‑8. Каждая кодовая точка — один токен.token: Разбивает по последовательностям пробельных символов Unicode (регулярное выражение\s+). Токены — это подстроки без пробельных символов; знаки пунктуации входят в токен, если примыкают к нему (например, “you?” — это один токен).
Конфигурация модели
| Параметр | Описание | Пример | По умолчанию |
|---|---|---|---|
| name | Уникальный идентификатор модели | language_detection | Обязательно |
| path | Полный путь к бинарному файлу модели | /etc/clickhouse-server/config.d/language_detection.bin | Обязательно |
| mode | Метод токенизации: - byte: последовательности байтов- codepoint: символы Unicode- token: токены слов | token | Обязательно |
| n | Размер n-грамм (режим token):- 1=одно слово- 2=пары слов- 3=тройки слов | 2 | Обязательно |
| alpha | Коэффициент сглаживания Лапласа, используемый при классификации для n-грамм, которых нет в модели | 0.5 | 1.0 |
| priors | Вероятности классов (% документов, относящихся к классу) | 60% — класс 0, 40% — класс 1 | Равномерное распределение |
n=1 и режима token модель может выглядеть так:
n=3 в режиме codepoint это может выглядеть так:
- 4-байтовый
class_id(UInt, little-endian) - 4-байтовая длина
n-gramв байтах (UInt, little-endian) - Необработанные байты
n-gram - 4-байтовый
count(UInt, little-endian)
mode и n. Ниже описаны шаги предварительной обработки:
-
Добавьте маркеры границ в начало и конец каждого документа в зависимости от режима токенизации:
- Byte:
0x01(начало),0xFF(конец) - Codepoint:
U+10FFFE(начало),U+10FFFF(конец) - Token:
<s>(начало),</s>(конец)
(n - 1)токенов добавляются и в начало, и в конец документа. - Byte:
-
Пример для
n=3в режимеtoken:- Документ:
"ClickHouse is fast" - После обработки:
<s> <s> ClickHouse is fast </s> </s> - Сгенерированные триграммы:
<s> <s> ClickHouse<s> ClickHouse isClickHouse is fastis fast </s>fast </s> </s>
- Документ:
byte и codepoint, бывает удобно сначала разбить документ на токены (список byte для режима byte и список codepoint для режима codepoint). Затем добавьте n - 1 начальных токенов в начало документа и n - 1 конечных токенов — в его конец. Наконец, сгенерируйте n-граммы и запишите их в сериализованный файл.