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

Pinyin

中国語テキストの検索では、多くの場合、ユーザーがインデックス付けされたテキストに表示されるとおりに中国語の文字を入力する必要があります。名前検索、オートコンプリート、入力しながら検索するワークフローでは、ユーザーは中国語の文字ではなく Pinyin を入力することがよくあります。たとえば、ユーザーが zuqiu と入力して 足球 を検索する場合があります。pinyin フィルターは、アナライザーの出力に Pinyin トークンを追加するため、別途 Pinyin フィールドを維持しなくても、中国語テキストを Pinyin 入力に一致させることができます。

pinyin フィルターは通常、中国語テキストに対して Jieba トークナイザーと組み合わせて使用します。カスタムアナライザーのフィルターパイプライン内で動作し、同じ中国語トークンに対して複数の Pinyin トークン形式を出力できます。

構成​

デフォルトのオプションを使用するには、analyzer_params の filter セクションに "pinyin" を指定します。

python
analyzer_params = {
"tokenizer": "jieba",
"filter": ["pinyin"],
}

この省略構文では、元の中国語トークンが保持され、文字レベルの Pinyin トークンが出力されます。これらのオプションを明示的に有効にしない限り、結合された Pinyin や Pinyin の頭文字は出力されません。

フィルターを完全に制御するには、フィルターをオブジェクトとして指定し、Zilliz Cloud が出力する Pinyin トークン形式を構成します。

python
analyzer_params = {
"tokenizer": "jieba",
"filter": [
{
"type": "pinyin",
"keep_original": True,
"keep_full_pinyin": True,
"keep_joined_full_pinyin": False,
"keep_separate_first_letter": False,
}
],
}

フィルターは以下のパラメーターを受け入れます。

パラメーター型デフォルト説明
keep_originalBooleantrueアナライザーの出力に元の中国語トークンを保持します。
keep_full_pinyinBooleantrue文字レベルの Pinyin トークンを出力します。たとえば、中文 から zhong と wen が生成されます。
keep_joined_full_pinyinBooleanfalseソーストークンごとに結合された Pinyin トークンを出力します。たとえば、中文 から zhongwen が生成されます。
keep_separate_first_letterBooleanfalseソーストークンごとに Pinyin の頭文字トークンを出力します。たとえば、中文 から zw が生成されます。

フィルターは、トークナイザーによって生成されたトークンに対して動作します。中国語テキストには、jieba などのトークナイザーと組み合わせて使用してください。

例​

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

python
from pymilvus import MilvusClient

client = MilvusClient(uri="YOUR_CLUSTER_ENDPOINT")

sample_text = "中文测试"

文字レベルの Pinyin で中国語テキストを一致させる​

デフォルトの pinyin フィルターは、元の中国語トークンを保持し、文字レベルの Pinyin トークンを出力します。

python
analyzer_params = {
"tokenizer": "jieba",
"filter": ["pinyin"],
}

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

期待される出力:

plaintext
['中文', 'zhong', 'wen', '测试', 'ce', 'shi']

結合された Pinyin で中国語の用語を一致させる​

中国語の用語を完全な結合 Pinyin 形式に一致させる必要がある場合は、keep_joined_full_pinyin を有効にします。

python
analyzer_params = {
"tokenizer": "jieba",
"filter": [
{
"type": "pinyin",
"keep_original": True,
"keep_full_pinyin": False,
"keep_joined_full_pinyin": True,
"keep_separate_first_letter": False,
}
],
}

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

期待される出力:

plaintext
['中文', 'zhongwen', '测试', 'ceshi']

Pinyin の頭文字で中国語の用語を一致させる​

中国語の用語を Pinyin 形式の頭文字に一致させる必要がある場合は、keep_separate_first_letter を有効にします。

python
analyzer_params = {
"tokenizer": "jieba",
"filter": [
{
"type": "pinyin",
"keep_original": True,
"keep_full_pinyin": False,
"keep_joined_full_pinyin": False,
"keep_separate_first_letter": True,
}
],
}

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

期待される出力:

plaintext
['中文', 'zw', '测试', 'cs']