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

Standard トークナイザー

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

トークン化のルール​

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",
}

standard トークナイザーは、1つ以上のフィルターと組み合わせて使用できます。たとえば、次のコードは standard トークナイザーと lowercase フィルターを使用するアナライザーを定義しています。

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

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

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)

期待される出力​

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