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.
| Parametro | Tipo | Valore predefinito | Descrizione |
|---|---|---|---|
keep_original | Booleano | true | Mantiene il token cinese originale nell'output dell'analizzatore. |
keep_full_pinyin | Booleano | true | Genera token Pinyin a livello di carattere. Ad esempio, " 中文 " produce " zhong " e " wen". |
keep_joined_full_pinyin | Booleano | false | Genera un token Pinyin unito per ogni token di origine. Ad esempio, 中文 produce zhongwen. |
keep_separate_first_letter | Booleano | false | Genera 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']