Thai Tokenizer
thai tokenizer 可在不依赖空格的情况下,将泰语文本切分为词 token。当你需要为泰语或泰语/英语混合文本构建自定义 analyzer pipeline 时,请使用此 tokenizer。
Configuration
对于 Thai 文本,大多数情况下请使用内置 thai analyzer。内置 analyzer 包含此 tokenizer,并会执行小写转换、十进制数字规范化和 Thai 停用词移除。只有在需要构建自定义 analyzer pipeline 时,才直接使用 thai tokenizer。
要配置使用 thai tokenizer 的 analyzer,请在 analyzer_params 中将 tokenizer 设置为 thai。
analyzer_params = {
"tokenizer": "thai",
}
thai tokenizer 没有可配置参数。
该 tokenizer 可以与一个或多个 filter 配合使用。例如,以下配置将 thai tokenizer 与 lowercase 和 decimaldigit filter 一起使用:
analyzer_params = {
"tokenizer": "thai",
"filter": [
"lowercase",
"decimaldigit",
],
}
此自定义 pipeline 不等同于内置 thai analyzer,因为它不包含内置 _thai_ 停用词词典。要使用完整的预定义 pipeline,请使用 {"type": "thai"}。
该 tokenizer 具有以下行为:
- Thai 分词:将 Thai 文本切分为 word token,无需依赖空格。
- 空白和标点过滤:过滤掉空白和仅包含标点的片段。这与
icutokenizer 不同,后者可以保留标点和空格作为 token。 - 混合文字文本:在 Thai/English 混合文本中输出 Latin word token。
- 仅 tokenizer:不会将 token 转为小写、规范化 Unicode 数字或移除停用词。如需这些步骤,请添加 filter 或使用内置
thaianalyzer。 - 位置语义:使用基于字符的 token position,其中包含被跳过的空白和标点,从而使 phrase 和 proximity matching 行为与其他非 Latin tokenizer 保持一致。
定义 analyzer_params 后,你可以在定义 collection schema 时将 analyzer 应用于 VARCHAR 字段。有关详细信息,请参阅 Example use。
Examples
在将 analyzer 配置应用到 Collection Schema 之前,请使用 run_analyzer 方法验证其行为。
Analyzer configuration
analyzer_params = {
"tokenizer": "thai",
}
使用 run_analyzer 验证
from pymilvus import MilvusClient
client = MilvusClient(uri="http://localhost:19530")
sample_text = "สวัสดี! ทดสอบ, ระบบ Milvus ๑๒๓"
result = client.run_analyzer(sample_text, analyzer_params)
print(result)
预期输出
['สวัสดี', 'ทดสอบ', 'ระบบ', 'Milvus', '๑๒๓']