跳到主要内容
版本:v3.0.x

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

Python
analyzer_params = {
"tokenizer": "thai",
}

thai tokenizer 没有可配置参数。

该 tokenizer 可以与一个或多个 filter 配合使用。例如,以下配置将 thai tokenizer 与 lowercasedecimaldigit filter 一起使用:

Python
analyzer_params = {
"tokenizer": "thai",
"filter": [
"lowercase",
"decimaldigit",
],
}

此自定义 pipeline 不等同于内置 thai analyzer,因为它不包含内置 _thai_ 停用词词典。要使用完整的预定义 pipeline,请使用 {"type": "thai"}

该 tokenizer 具有以下行为:

  • Thai 分词:将 Thai 文本切分为 word token,无需依赖空格。
  • 空白和标点过滤:过滤掉空白和仅包含标点的片段。这与 icu tokenizer 不同,后者可以保留标点和空格作为 token。
  • 混合文字文本:在 Thai/English 混合文本中输出 Latin word token。
  • 仅 tokenizer:不会将 token 转为小写、规范化 Unicode 数字或移除停用词。如需这些步骤,请添加 filter 或使用内置 thai analyzer。
  • 位置语义:使用基于字符的 token position,其中包含被跳过的空白和标点,从而使 phrase 和 proximity matching 行为与其他非 Latin tokenizer 保持一致。

定义 analyzer_params 后,你可以在定义 collection schema 时将 analyzer 应用于 VARCHAR 字段。有关详细信息,请参阅 Example use

Examples

在将 analyzer 配置应用到 Collection Schema 之前,请使用 run_analyzer 方法验证其行为。

Analyzer configuration

Python
analyzer_params = {
"tokenizer": "thai",
}

使用 run_analyzer 验证

Python
from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

sample_text = "สวัสดี! ทดสอบ, ระบบ Milvus ๑๒๓"

result = client.run_analyzer(sample_text, analyzer_params)
print(result)

预期输出

Text
['สวัสดี', 'ทดสอบ', 'ระบบ', 'Milvus', '๑๒๓']