evalMLMethod
evalMLMethod 함수를 사용합니다. 자세한 내용은 linearRegression의 링크를 참조하십시오.
stochasticLinearRegression
evalMLMethod를 사용합니다.
stochasticLogisticRegression
evalMLMethod를 사용합니다.
naiveBayesClassifier
model_name— 사전 구성된 모델의 이름입니다. String 모델은 ClickHouse의 설정 파일에 정의되어 있어야 합니다(아래 참고).input_text— 분류할 텍스트입니다. String 입력은 제공된 그대로 처리됩니다(대소문자와 구두점 유지).
- 예측된 클래스 ID를 부호 없는 정수로 반환합니다. UInt32 클래스 ID는 모델 생성 시 정의된 범주에 해당합니다.
0은 영어를, 1은 프랑스어를 나타낼 수 있습니다. 클래스의 의미는 학습 데이터에 따라 달라집니다.
구현 세부 사항
- 모든 크기의 n-그램을 지원합니다
- 세 가지 토큰화 모드:
byte: 원시 바이트 단위로 동작합니다. 각 바이트가 하나의 토큰입니다.codepoint: UTF‑8에서 디코딩된 유니코드 스칼라 값을 기준으로 동작합니다. 각 코드포인트가 하나의 토큰입니다.token: 연속된 유니코드 공백(정규식 \s+)을 기준으로 분할합니다. 토큰은 공백이 아닌 부분 문자열이며, 인접한 문장부호도 토큰에 포함됩니다(예: “you?”는 하나의 토큰입니다).
모델 구성
| 매개변수 | 설명 | 예시 | 기본값 |
|---|---|---|---|
| name | 고유 모델 식별자 | language_detection | 필수 |
| path | 모델 바이너리의 전체 경로 | /etc/clickhouse-server/config.d/language_detection.bin | 필수 |
| mode | 토큰화 방식: - byte: 바이트 시퀀스- codepoint: 유니코드 문자- token: 단어 토큰 | token | 필수 |
| n | n-그램 크기(token 모드):- 1=단일 단어- 2=단어 쌍- 3=세 단어 묶음 | 2 | 필수 |
| alpha | 분류 중 모델에 나타나지 않는 n-그램을 처리하기 위해 사용하는 라플라스 스무딩 계수 | 0.5 | 1.0 |
| priors | 클래스 확률(각 클래스에 속하는 문서 비율 %) | 클래스 0 60%, 클래스 1 40% | 균등 분포 |
n=1 및 token 모드일 때 모델은 다음과 같을 수 있습니다:
n=3 및 codepoint 모드에서는 다음과 같이 나타날 수 있습니다:
- 4바이트
class_id(UInt, 리틀 엔디언) - 4바이트
n-gram바이트 길이 (UInt, 리틀 엔디언) - 원본
n-gram바이트 - 4바이트
count(UInt, 리틀 엔디언)
mode와 n에 따라 n-그램을 추출할 수 있도록 문서를 전처리해야 합니다. 다음 단계는 전처리 과정을 설명합니다.
-
토큰화 모드에 따라 각 문서의 시작과 끝에 경계 마커를 추가합니다.
- Byte:
0x01(시작),0xFF(끝) - Codepoint:
U+10FFFE(시작),U+10FFFF(끝) - Token:
<s>(시작),</s>(끝)
(n - 1)개의 토큰을 추가합니다. - Byte:
-
token모드에서n=3인 경우의 예시:- 문서:
"ClickHouse is fast" - 처리 결과:
<s> <s> ClickHouse is fast </s> </s> - 생성된 3-그램:
<s> <s> ClickHouse<s> ClickHouse isClickHouse is fastis fast </s>fast </s> </s>
- 문서:
byte 및 codepoint 모드에서 모델 생성을 단순화하려면, 먼저 문서를 tokens으로 분리해 두는 것이 편리할 수 있습니다(byte 모드에서는 byte 목록, codepoint 모드에서는 codepoint 목록). 그런 다음 문서 앞부분에 n - 1개의 시작 토큰을 추가하고, 문서 끝부분에 n - 1개의 종료 토큰을 추가합니다. 마지막으로 n-그램을 생성하여 직렬화된 파일에 기록합니다.