Skip to main content

Jieba

The jieba tokenizer processes Chinese text by breaking it down into its component words.

📘Notes

The jieba tokenizer preserves punctuation marks as separate tokens in the output. For example, "你好!世界。" becomes ["你好", "!", "世界", "。"]. To remove these standalone punctuation tokens, use the removepunct filter.

Configuration​

Zilliz Cloud supports two configuration approaches for the jieba tokenizer: a simple configuration and a custom configuration.

Simple configuration​

With the simple configuration, you only need to set the tokenizer to "jieba". For example:

python
# Simple configuration: only specifying the tokenizer name
analyzer_params = {
"tokenizer": "jieba", # Use the default settings: dict=["_default_"], mode="search", hmm=True
}

This simple configuration is equivalent to the following custom configuration:

python
# Custom configuration equivalent to the simple configuration above
analyzer_params = {
"tokenizer": { # Tokenizer configuration
"type": "jieba", # Tokenizer type, fixed as "jieba"
"dict": ["_default_"], # Use the default dictionary
"mode": "search", # Use search mode for improved recall (see mode details below)
"hmm": True # Enable HMM for probabilistic segmentation
}
}

For details on parameters, refer to Custom configuration.

Custom configuration​

For more control, you can provide a custom configuration that allows you to specify a custom dictionary, select the segmentation mode, and enable or disable the Hidden Markov Model (HMM). For example:

python
# Custom configuration with user-defined settings
analyzer_params = {
"tokenizer": {
"type": "jieba", # Fixed tokenizer type
"dict": ["customDictionary"], # Custom dictionary list; replace with your own terms
"mode": "exact", # Use exact mode (non-overlapping tokens)
"hmm": False # Disable HMM; unmatched text will be split into individual characters
}
}

Parameter

Description

Default Value

type

The type of tokenizer. This is fixed to "jieba".

"jieba"

dict

A list of dictionaries that the analyzer will load as its vocabulary source. Built-in options:

  • "default": Loads the engine's built‑in Simplified‑Chinese dictionary. For details, refer to dict.txt.

  • "extend_default": Loads everything in "default" plus an additional Traditional‑Chinese supplement. For details, refer to dict.txt.big.

    You can also mix the built‑in dictionary with any number of custom dictionaries. Example: ["default", "结巴分词器"].

["default"]

mode

The segmentation mode. Possible values:

  • "exact": Tries to segment the sentence in the most precise manner, making it ideal for text analysis.

  • "search": Builds on exact mode by further breaking down long words to improve recall, making it suitable for search engine tokenization.

    For more information, refer to Jieba GitHub Project.

"search"

hmm

A boolean flag indicating whether to enable the Hidden Markov Model (HMM) for probabilistic segmentation of words not found in the dictionary.

true

After defining analyzer_params, you can apply them to a VARCHAR field when defining a collection schema. This allows Zilliz Cloud to process the text in that field using the specified analyzer for efficient tokenization and filtering. For details, refer to Example use.

Examples​

Before applying the analyzer configuration to your collection schema, verify its behavior using the run_analyzer method.

Analyzer configuration​

python
analyzer_params = {
"tokenizer": {
"type": "jieba",
"dict": ["结巴分词器"],
"mode": "exact",
"hmm": False
}
}

Verification using run_analyzer​

python
from pymilvus import (
MilvusClient,
)

client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)

# Sample text to analyze
sample_text = "milvus结巴分词器中文测试"

# Run the jieba tokenizer with the defined configuration
result = client.run_analyzer(sample_text, analyzer_params)
print("Jieba analyzer output:", result)

Expected output​

For the sample text, the analyzer produces the following tokens in order. SDK response objects and printed formatting vary by language; the REST response contains these tokens at data.results[].tokens[].token.

plaintext
['milvus', '结巴分词器', '中', '文', '测', '试']