メインコンテンツまでスキップ

Standard Tokenizer

Zilliz Cloud の standard トークナイザーは、連続する Unicode 文字と数字をトークンにまとめ、それ以外の文字で分割します。

トークン化ルール​

standard トークナイザーは、以下の集合に属する連続した文字を同じトークンに保持します。

  • ASCII 文字: 文字 A-Z と a-z、および数字 0-9。

  • 非 ASCII 文字: Unicode の Alphabetic プロパティ、または数字の一般カテゴリである Nd、Nl、No のいずれかに該当する文字。

Unicode のプロパティまたはカテゴリ意味トークンに保持される文字の例
Alphabetic漢字や日本語の仮名を含む、さまざまな書記体系の文字、および一部の結合文字中文测试, カタカナ
Nd(Decimal_Number)10 進数字٣
Nl(Letter_Number)文字に似た数字文字Ⅷ
No(Other_Number)丸数字、上付き文字、分数などのその他の数字文字①²¾

これらの集合に含まれない文字はトークンを区切り、破棄されます。これには空白、句読点、アンダースコア(_)、ハイフン(-)、アポストロフィ(')、および +、$、😀 などの記号が含まれます。連続する区切り文字は空のトークンを生成しません。

文字の分類は Rust の char::is_alphanumeric() に従います。プロパティの定義については、Unicode Standard Annex #44 を参照してください。Unicode 17.0 の完全な文字リストは、Alphabetic 用の DerivedCoreProperties.txt と、Nd、Nl、No 用の DerivedGeneralCategory.txt で利用できます。どの文字が該当するかは、デプロイされたバージョンで使用されている Unicode データによって異なります。

以下の例では、フィルターを指定せずに {"tokenizer": "standard"} を使用します。このトークナイザーは文字の大文字と小文字を保持し、連続する中国語のテキストを個々の単語に分割しません。

入力出力トークン
foo_bar-can't😀123["foo", "bar", "can", "t", "123"]
中文测试["中文测试"]
version①.¾["version①", "¾"]
Hello,World!["Hello", "World"]

設定​

standard トークナイザーを使用するアナライザーを設定するには、analyzer_params で tokenizer を standard に設定します。

python
analyzer_params = {
"tokenizer": "standard",
}

The standard tokenizer can work in conjunction with one or more filters. For example, the following code defines an analyzer that uses the standard tokenizer and lowercase filter:

python
analyzer_params = {
"tokenizer": "standard",
"filter": ["lowercase"]
}
Notes

よりシンプルに設定するには、standard アナライザー を使用することもできます。これは standard トークナイザーと lowercaseフィルター を組み合わせたものです。

analyzer_params を定義したら、コレクションスキーマの定義時に VARCHAR フィールドへ適用できます。これにより、Zilliz Cloud が指定されたアナライザーを使って当該フィールドのテキストを処理し、効率的なトークン化とフィルタリングを行えます。詳細については、使用例 を参照してください。

例​

アナライザー設定をコレクションスキーマに適用する前に、run_analyzer メソッドを使用してその動作を確認してください。

アナライザーの設定​

python
analyzer_params = {
"tokenizer": "standard",
"filter": ["lowercase"]
}

run_analyzer を使った検証​

python
from pymilvus import (
MilvusClient,
)

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

# Sample text to analyze
sample_text = "The Milvus vector database is built for scale!"

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

期待される出力​

sql
['the', 'milvus', 'vector', 'database', 'is', 'built', 'for', 'scale']