PinyinCompatible with Milvus 3.0.x

La ricerca di testo in cinese richiede spesso agli utenti di digitare i caratteri cinesi esattamente come appaiono nel testo indicizzato. Nei flussi di lavoro relativi alla ricerca di nomi, al completamento automatico e alla ricerca durante la digitazione, gli utenti digitano spesso il pinyin anziché i caratteri cinesi. Ad esempio, un utente potrebbe digitare zuqiu per cercare 足球. Il filtro pinyin aggiunge token Pinyin all'output dell'analizzatore, in modo che il testo cinese possa corrispondere all'input in Pinyin senza dover mantenere un campo Pinyin separato.

Il filtro pinyin viene in genere utilizzato con il tokenizzatore Jieba per il testo cinese. Funziona in una pipeline di filtri dell’analizzatore personalizzata e può generare più forme di token Pinyin per lo stesso token cinese.

Configurazione

Per utilizzare le opzioni predefinite, specificare ` "pinyin" ` nella sezione ` filter ` di ` analyzer_params`.

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

Questa sintassi abbreviata mantiene i token cinesi originali e genera token Pinyin a livello di carattere. Non genera Pinyin unito né iniziali Pinyin, a meno che non si abilitino esplicitamente tali opzioni.

Per un controllo completo, specificare il filtro come oggetto e configurare le forme dei token Pinyin generati da Milvus.

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

Il filtro accetta i seguenti parametri.

ParametroTipoValore predefinitoDescrizione
keep_originalBooleanotrueMantiene il token cinese originale nell'output dell'analizzatore.
keep_full_pinyinBooleanotrueGenera token Pinyin a livello di carattere. Ad esempio, " 中文 " produce " zhong " e " wen".
keep_joined_full_pinyinBooleanofalseGenera un token Pinyin unito per ogni token di origine. Ad esempio, 中文 produce zhongwen.
keep_separate_first_letterBooleanofalseGenera un token con le iniziali in pinyin per ogni token di origine. Ad esempio, 中文 produce zw.

Il filtro opera sui token generati dal tokenizer. Per il testo cinese, utilizzarlo con un tokenizer come jieba.

Esempi

Prima di applicare la configurazione dell’analizzatore allo schema della propria raccolta, verificarne il comportamento con run_analyzer.

from pymilvus import MilvusClient

client = MilvusClient(uri="http://localhost:19530")

sample_text = "中文测试"

Abbinare il testo cinese al pinyin a livello di carattere

Il filtro predefinito pinyin mantiene i token cinesi originali ed emette token Pinyin a livello di carattere.

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

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

Risultato atteso:

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

Corrispondenza dei termini cinesi con il pinyin unito

Attiva keep_joined_full_pinyin quando è necessario che un termine cinese corrisponda alla sua forma completa in Pinyin unito.

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)

Risultato atteso:

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

Corrispondenza dei termini cinesi con le iniziali Pinyin

Attiva l'opzione " keep_separate_first_letter " quando è necessario che un termine cinese corrisponda alle iniziali della sua forma in pinyin.

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)

Risultato atteso:

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

Tradotto daDeepL

Prova Milvus gestito gratuitamente

Zilliz Cloud è senza problemi, basato su Milvus e 10 volte più veloce.

Inizia
Feedback

Questa pagina è stata utile?