evalMLMethod
evalMLMethod 函数。请参阅 linearRegression 中的链接。
stochasticLinearRegression
evalMLMethod 对新数据进行预测。
stochasticLogisticRegression
evalMLMethod 对新数据进行预测。
naiveBayesClassifier
model_name— 预配置模型的名称。String 该模型必须在 ClickHouse 的配置文件中定义 (见下文) 。input_text— 要分类的文本。String 输入会完全按原样处理 (保留大小写和标点) 。
- 预测类别 ID,以无符号整数表示。UInt32 类别 ID 对应于模型构建时定义的类别。
0 可能表示英语,而 1 可能表示法语——具体类别含义取决于你的训练数据。
实现细节
- 支持任意长度的 n-gram
- 三种标记化模式:
byte:基于原始字节进行处理。每个字节都是一个标记。codepoint:基于从 UTF‑8 解码得到的 Unicode 标量值进行处理。每个码点都是一个标记。token:按连续的 Unicode 空白字符 (正则\s+) 拆分。标记是非空白的子字符串;如果与标点符号相邻,标点符号也会被视为该标记的一部分 (例如,“you?” 是一个标记) 。
模型配置
| 参数 | 说明 | 示例 | 默认值 |
|---|---|---|---|
| name | 唯一模型标识符 | language_detection | 必填 |
| path | 模型二进制文件的完整路径 | /etc/clickhouse-server/config.d/language_detection.bin | 必填 |
| mode | 标记化方式: - byte:字节序列- codepoint:Unicode 字符- token:标记 | token | 必填 |
| n | N-gram 大小 (token 模式) :- 1=单个词- 2=词对- 3=三个词一组 | 2 | 必填 |
| alpha | 分类时使用的 拉普拉斯平滑 系数,用于处理模型中未出现的 n-grams | 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的示例:- 文档:
"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-grams 并将其写入序列化文件。