evalMLMethod
evalMLMethod 関数を使用します。詳しくは linearRegression のリンクを参照してください。
stochasticLinearRegression
evalMLMethod を使用します。
stochasticLogisticRegression
evalMLMethod を使用します。
naiveBayesClassifier
model_name— 事前設定済みモデルの名前。String モデルは ClickHouse の設定ファイルで定義されている必要があります (以下を参照) 。input_text— 分類対象のテキスト。String 入力は、指定されたとおりにそのまま処理されます (大文字・小文字や句読点は保持されます) 。
- 予測されたクラス ID を符号なし整数で返します。UInt32 クラス ID は、モデル構築時に定義されたカテゴリに対応します。
0 は英語、1 はフランス語を表す場合があります。どのクラスが何を意味するかは、学習データによって異なります。
実装の詳細
- 任意のサイズの N-gram をサポート
- 3 つのトークン化モード:
byte: 生のバイト列を対象に処理します。各バイトが 1 つのトークンになります。codepoint: UTF‑8 からデコードされた Unicode スカラー値を対象に処理します。各コードポイントが 1 つのトークンになります。token: Unicode の空白文字の連続 (正規表現\s+) で分割します。トークンは空白以外の連続した部分文字列で、句読点が隣接している場合はその句読点もトークンに含まれます (例:"you?"は 1 つのトークンです) 。
モデル設定
| パラメータ | 説明 | 例 | デフォルト |
|---|---|---|---|
| name | 一意のモデル識別子 | language_detection | 必須 |
| path | モデルのバイナリファイルへの完全パス | /etc/clickhouse-server/config.d/language_detection.bin | 必須 |
| mode | トークン化方式: - byte: バイト列- codepoint: Unicode 文字- token: 単語トークン | token | 必須 |
| n | N-gram のサイズ (token モード) :- 1=単語 1 語- 2=単語 2 語の組- 3=単語 3 語の組 | 2 | 必須 |
| alpha | 分類時に、モデルに現れない N-gram に対応するために使用するラプラス平滑化係数 | 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-gram を抽出できるよう、ドキュメントを前処理する必要があります。以下に、その前処理の手順を示します。
-
トークン化モードに応じて、各ドキュメントの先頭と末尾に境界マーカーを追加します。
- Byte:
0x01(先頭) 、0xFF(末尾) - Codepoint:
U+10FFFE(先頭) 、U+10FFFF(末尾) - Token:
<s>(先頭) 、</s>(末尾)
(n - 1)個のトークンが、ドキュメントの先頭と末尾の両方に追加されます。 - Byte:
-
tokenモードでのn=3の例:- Document:
"ClickHouse is fast" - Processed as:
<s> <s> ClickHouse is fast </s> </s> - 生成されるトライグラム:
<s> <s> ClickHouse<s> ClickHouse isClickHouse is fastis fast </s>fast </s> </s>
- Document:
byte モードおよび codepoint モードでのモデル作成を簡単にするには、まず文書をトークン列に分割しておくと便利です (byte モードでは byte のリスト、codepoint モードでは codepoint のリスト) 。次に、文書の先頭に n - 1 個の開始トークンを、末尾に n - 1 個の終了トークンを追加します。最後に、N-gram を生成してシリアライズ済みファイルに書き込みます。