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

Standard トークナイザー

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

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

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)

期待される出力​

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