Identificatore di linguaCompatible with Milvus v2.5.15+
language_identifier è un tokenizzatore specializzato progettato per migliorare le capacità di ricerca del testo di Milvus automatizzando il processo di analisi della lingua. La sua funzione principale è quella di rilevare la lingua di un campo di testo e di applicare dinamicamente un analizzatore preconfigurato più adatto a quella lingua. Questa funzione è particolarmente preziosa per le applicazioni che gestiscono una varietà di lingue, in quanto elimina la necessità di assegnare manualmente la lingua per ogni ingresso.
Indirizzando in modo intelligente i dati di testo alla pipeline di elaborazione appropriata, language_identifier semplifica l'ingestione di dati multilingue e garantisce una tokenizzazione accurata per le successive operazioni di ricerca e recupero.
Flusso di lavoro per il rilevamento della lingua
language_identifier esegue una serie di passaggi per elaborare una stringa di testo, un flusso di lavoro che è fondamentale per gli utenti per capire come configurarlo correttamente.
Flusso di lavoro per il rilevamento della lingua
Ingresso: Il flusso di lavoro inizia con una stringa di testo come input.
Rilevamento della lingua: Questa stringa viene prima passata a un motore di rilevamento della lingua, che cerca di identificare la lingua. Milvus supporta due motori: whatlang e lingua.
Selezione dell'analizzatore:
Successo: Se la lingua viene rilevata con successo, il sistema verifica se il nome della lingua rilevata ha un analizzatore corrispondente configurato nel dizionario
analyzers. Se viene trovata una corrispondenza, il sistema applica l'analizzatore specificato al testo in ingresso. Ad esempio, un testo rilevato come "mandarino" viene indirizzato a un tokenizzatorejieba.Fallback: Se il rilevamento fallisce, o se una lingua viene rilevata con successo ma non è stato fornito un analizzatore specifico per essa, il sistema si affida a un analizzatore predefinito preconfigurato. Questo è un punto cruciale di chiarimento: l'analizzatore
defaultè un ripiego sia per il fallimento del rilevamento che per l'assenza di un analizzatore corrispondente.
Dopo aver scelto l'analizzatore appropriato, il testo viene tokenizzato ed elaborato, completando il flusso di lavoro.
Motori di rilevamento linguistico disponibili
Milvus offre la possibilità di scegliere tra due motori di rilevamento delle lingue:
La scelta dipende dalle prestazioni specifiche e dai requisiti di precisione dell'applicazione.
Motore |
Velocità |
Precisione |
Formato di uscita |
Migliore per |
|---|---|---|---|---|
|
Veloce |
Buono per la maggior parte delle lingue |
Nomi delle lingue (ad esempio, Riferimento: Colonna Lingua nella tabella delle lingue supportate |
Applicazioni in tempo reale in cui la velocità è fondamentale |
|
Più lento |
Maggiore precisione, soprattutto per i testi brevi |
Nomi in lingua inglese (ad esempio, Riferimento: Elenco delle lingue supportate |
Applicazioni in cui la precisione è più importante della velocità |
Una considerazione fondamentale è la convenzione di denominazione del motore. Entrambi i motori restituiscono nomi di lingue in inglese, ma utilizzano termini diversi per alcune lingue (ad esempio, whatlang restituisce Mandarin, mentre lingua restituisce Chinese). La chiave dell'analizzatore deve corrispondere esattamente al nome restituito dal motore di rilevamento scelto.
Configurazione
Per utilizzare correttamente il tokenizer language_identifier, è necessario eseguire i seguenti passaggi per definire e applicare la sua configurazione.
Passo 1: Scegliere le lingue e gli analizzatori
Il fulcro della configurazione di language_identifier consiste nell'adattare gli analizzatori alle lingue specifiche che si intende supportare. Il sistema funziona abbinando la lingua rilevata all'analizzatore corretto, quindi questa fase è fondamentale per un'elaborazione accurata del testo.
Di seguito è riportata una mappatura consigliata delle lingue con gli analizzatori Milvus adatti. Questa tabella funge da ponte tra l'output del motore di rilevamento della lingua e lo strumento migliore per il lavoro.
Lingua (output del rilevatore) |
Analizzatore consigliato |
Descrizione |
|---|---|---|
|
|
Tokenizzazione dell'inglese standard con stemming e filtro delle stop-word. |
|
|
Segmentazione delle parole cinesi per testi non delimitati da spazi. |
|
|
Un robusto tokenizzatore per scritture complesse, tra cui il giapponese. |
|
|
Una configurazione personalizzata che gestisce gli accenti e i caratteri francesi. |
La corrispondenza è fondamentale: Il nome dell'analizzatore deve corrispondere esattamente all'output linguistico del motore di rilevamento. Ad esempio, se si utilizza
whatlang, la chiave per il testo cinese deve essereMandarin.Migliori pratiche: La tabella precedente fornisce le configurazioni consigliate per alcune lingue comuni, ma non è un elenco esaustivo. Per una guida più completa sulla scelta degli analizzatori, consultare la sezione Scegliere l'analizzatore giusto per il tuo caso d'uso.
Output del rilevatore: Per un elenco completo dei nomi delle lingue restituiti dai motori di rilevamento, consultare la tabella delle lingue supportate da Whatlang e l'elenco delle lingue supportate da Lingua.
Passo 2: Definire i parametri dell'analizzatore
Per utilizzare il tokenizzatore language_identifier in Milvus, creare un dizionario contenente questi componenti chiave:
Componenti necessari:
analyzersconfig set - Un dizionario contenente tutte le configurazioni dell'analizzatore, che devono includere:default- L'analizzatore di riserva usato quando il rilevamento della lingua fallisce o non viene trovato alcun analizzatore corrispondente.Analizzatori specifici per la lingua - Ciascuno definito come
<analyzer_name>: <analyzer_config>, dove:analyzer_namecorrisponde all'output del motore di rilevamento scelto (ad esempio,"English","Japanese")analyzer_configsegue il formato standard dei parametri dell'analizzatore (vedere Panoramica dell'analizzatore)
Componenti opzionali:
identifier- Specifica quale motore di rilevamento della lingua utilizzare (whatlangolingua). Se non specificato, l'impostazione predefinita èwhatlangmapping- Crea alias personalizzati per gli analizzatori, consentendo di usare nomi descrittivi invece del formato di output esatto del motore di rilevamento.
Il tokenizer funziona rilevando prima la lingua del testo in ingresso, quindi selezionando l'analizzatore appropriato dalla configurazione. Se il rilevamento fallisce o non esiste un analizzatore corrispondente, si passa automaticamente all'analizzatore default.
Consigliato: Corrispondenza diretta dei nomi
I nomi degli analizzatori devono corrispondere esattamente all'output del motore di rilevamento linguistico scelto. Questo approccio è più semplice ed evita potenziali confusioni.
Sia per whatlang che per lingua, utilizzare i nomi delle lingue come indicato nella rispettiva documentazione:
lingue supportate da whatlang (utilizzare la colonna"Lingua")
analyzer_params = {
"tokenizer": {
"type": "language_identifier", # Must be `language_identifier`
"identifier": "whatlang", # or `lingua`
"analyzers": { # A set of analyzer configs
"default": {
"tokenizer": "standard" # fallback if language detection fails
},
"English": { # Analyzer name that matches whatlang output
"type": "english"
},
"Mandarin": { # Analyzer name that matches whatlang output
"tokenizer": "jieba"
}
}
}
}
Approccio alternativo: Nomi personalizzati con mappatura
Se si preferisce usare nomi di analizzatori personalizzati o si vuole mantenere la compatibilità con le configurazioni esistenti, si può usare il parametro mapping. Questo crea degli alias per gli analizzatori: funzioneranno sia i nomi originali del motore di rilevamento che quelli personalizzati.
analyzer_params = {
"tokenizer": {
"type": "language_identifier",
"identifier": "lingua",
"analyzers": {
"default": {
"tokenizer": "standard"
},
"english_analyzer": { # Custom analyzer name
"type": "english"
},
"chinese_analyzer": { # Custom analyzer name
"tokenizer": "jieba"
}
},
"mapping": {
"English": "english_analyzer", # Maps detection output to custom name
"Chinese": "chinese_analyzer"
}
}
}
Dopo aver definito analyzer_params, è possibile applicarli a un campo VARCHAR quando si definisce uno schema di raccolta. Questo permette a Milvus di elaborare il testo in quel campo usando l'analizzatore specificato per una tokenizzazione e un filtraggio efficienti. Per i dettagli, si veda l'esempio di utilizzo.
Esempi
Ecco alcune configurazioni pronte all'uso per scenari comuni. Ogni esempio include sia la configurazione che il codice di verifica, in modo da poter testare immediatamente la configurazione.
Rilevamento di inglese e cinese
from pymilvus import MilvusClient
# Configuration
analyzer_params = {
"tokenizer": {
"type": "language_identifier",
"identifier": "whatlang",
"analyzers": {
"default": {"tokenizer": "standard"},
"English": {"type": "english"},
"Mandarin": {"tokenizer": "jieba"}
}
}
}
# Test the configuration
client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)
# English text
result_en = client.run_analyzer("The Milvus vector database is built for scale!", analyzer_params)
print("English:", result_en)
# Output:
# English: ['The', 'Milvus', 'vector', 'database', 'is', 'built', 'for', 'scale']
# Chinese text
result_cn = client.run_analyzer("Milvus向量数据库专为大规模应用而设计", analyzer_params)
print("Chinese:", result_cn)
# Output:
# Chinese: ['Milvus', '向量', '数据', '据库', '数据库', '专', '为', '大规', '规模', '大规模', '应用', '而', '设计']
Lingue europee con normalizzazione dell'accento
# Configuration for French, German, Spanish, etc.
analyzer_params = {
"tokenizer": {
"type": "language_identifier",
"identifier": "lingua",
"analyzers": {
"default": {"tokenizer": "standard"},
"English": {"type": "english"},
"French": {
"tokenizer": "standard",
"filter": ["lowercase", "asciifolding"]
}
}
}
}
# Test with accented text
result_fr = client.run_analyzer("Café français très délicieux", analyzer_params)
print("French:", result_fr)
# Output:
# French: ['cafe', 'francais', 'tres', 'delicieux']
Note d'uso
Lingua singola per campo: Opera su un campo come singola unità omogenea di testo. È progettato per gestire lingue diverse in diversi record di dati, ad esempio un record contenente una frase in inglese e il successivo contenente una frase in francese.
Non esistono stringhe in lingue miste: Non è progettato per gestire una singola stringa contenente testo in più lingue. Ad esempio, un singolo campo
VARCHARcontenente una frase in inglese e una frase in giapponese quotata verrà elaborato come una singola lingua.Elaborazione della lingua dominante: In scenari di lingua mista, il motore di rilevamento probabilmente identificherà la lingua dominante e l'analizzatore corrispondente verrà applicato all'intero testo. Il risultato sarà una tokenizzazione scarsa o assente per il testo straniero incorporato.