Menu

Corrispondenza dei nomi dei paesi e alias: definire prima un nome canonico

La corrispondenza dei nomi dei paesi e gli alias funzionano solo quando un nome è designato come canonico. Senza quella decisione, ogni confronto diventa un giudizio soggettivo.

Pubblicato

  • pulizia dei dati
  • corrispondenza
  • dati dei paesi

La corrispondenza dei nomi dei paesi e gli alias sembrano un problema di tabella di ricerca. In pratica la tabella è la parte facile; la difficoltà è decidere rispetto a quale nome tutti gli altri vengano confrontati.

Senza quella decisione, la corrispondenza diventa una serie di giudizi locali. Un componente considera due grafie uguali, un altro no, e la differenza emerge come un record duplicato o un join fallito. Il nome canonico è l’ancora che rende meccanico il resto del lavoro.

Cosa significa canonico qui?

Significa una forma designata per ogni paese, scelta deliberatamente e usata ovunque un nome debba essere confrontato, ordinato o memorizzato come chiave.

Canonico non significa corretto, e non significa preferito da tutti. Significa che una singola forma è stata designata come riferimento, così che ogni altra forma abbia una relazione definita con essa. Un paese può avere diversi nomi ampiamente usati e avere comunque esattamente una voce canonica.

La scelta dovrebbe essere documentata con la sua motivazione. Un team può selezionare la forma usata in uno standard internazionale perché è stabile, la forma più familiare nel mercato principale del prodotto perché riduce i contatti di assistenza, o la forma locale perché rispetta il modo in cui i residenti chiamano il proprio paese. Ognuna di queste è difendibile; una miscela non documentata di tutte e tre non lo è.

Perché normalizzare prima di confrontare?

Perché due stringhe che sembrano identiche a un lettore possono differire a livello dei byte che un computer confronta. I caratteri accentati hanno più di una codifica valida, e un testo che si legge allo stesso modo sullo schermo può fallire un test di uguaglianza scritto su caratteri grezzi.

Normalizzare entrambi i lati prima del confronto rimuove l’intera classe di falsi disallineamenti. È un’operazione economica, è deterministica, e dovrebbe avvenire in esattamente un posto invece che in ogni componente che confronta nomi.

Tre ulteriori passaggi appartengono accanto ad essa. Uniforma le maiuscole, così che la sola capitalizzazione non causi mai una differenza. Elimina e riduci gli spazi bianchi, perché gli spazi iniziali e finali arrivano dagli import e dagli input incollati. E decidi esplicitamente cosa fare con la punteggiatura, compresi i caratteri che separano le parti di un nome, poiché rimuoverli cambia quali stringhe corrispondono.

Ciò che la normalizzazione non dovrebbe fare è rimuovere o riscrivere caratteri che portano significato. Un passaggio di normalizzazione che elimina gli accenti dai dati memorizzati cambia i dati; lo stesso passaggio applicato solo al momento del confronto no.

Quando gli alias aiutano e quando traggono in inganno?

Un alias merita il suo posto quando esiste una vera forma alternativa che altrimenti non corrisponderebbe. Un nome ufficiale precedente, un nome usato localmente, un’abbreviazione di uso comune e una traduzione in una lingua ampiamente parlata sono tutte voci legittime.

Il rischio è che gli alias si moltiplichino. Ogni alias aggiunto per comodità è un’affermazione che due stringhe si riferiscono allo stesso paese, e un’affermazione sbagliata è peggiore di una mancante, perché unisce silenziosamente due record in uno che è sbagliato su entrambi.

Due guardrail mantengono onesta la tabella. Primo, ogni alias dovrebbe avere una motivazione dichiarata e una fonte, così che l’affermazione possa essere rivista invece che ereditata per sempre. Secondo, gli alias non dovrebbero essere generati da una regola che sembra plausibile ma non è vera: una trasformazione meccanica applicata al nome di un paese produrrà stringhe che somigliano ai nomi di altri paesi.

Mantieni la tabella degli alias piccola e verificabile. Una tabella di poche centinaia di voci che una persona può leggere vale più di una grande generata che nessuno può controllare.

Cosa va storto quando la corrispondenza fuzzy è il primo ricorso?

La corrispondenza fuzzy è attraente perché sembra risolvere il problema senza alcun lavoro sui dati. Produce anche errori silenziosi e sicuri di sé, che sono i più difficili da trovare.

Due meccanismi causano la maggior parte dei danni. Nomi di paesi diversi che differiscono per una piccola distanza di modifica corrisponderanno tra loro. E un errore di ortografia che per caso si trova più vicino a un paese sbagliato che a quello giusto verrà corretto nella direzione sbagliata.

Strategia Cosa risolve Cosa costa
Corrispondenza esatta su una forma canonica Nulla oltre la forma stessa Perde ogni variante
Normalizza poi confronta Differenze di codifica, maiuscole e spaziatura Perde varianti reali
Forma canonica più alias curati Nomi di varianti e traduzioni noti Richiede manutenzione
Corrispondenza fuzzy ovunque Errori di ortografia sconosciuti Unioni silenziose di paesi diversi

L’ordine pratico è quello della tabella letto verso il basso, con la corrispondenza fuzzy usata per ultima, sul residuo, e solo dove una risposta sbagliata è economica da invertire. Una corrispondenza fuzzy che produce un suggerimento da far confermare a una persona è una funzionalità diversa da una corrispondenza fuzzy che scrive un valore.

I nomi dovrebbero essere memorizzati affatto?

Memorizza il codice, e tratta il nome come qualcosa renderizzato per un lettore invece che conservato come identità di un record.

I nomi cambiano; i codici sono mantenuti proprio perché l’identità sopravviva al cambiamento. Un record la cui identità è un nome diventa ambiguo nel momento in cui quel nome viene rivisto o tradotto, e l’ambiguità è invisibile finché due record che dovrebbero essere uno non appaiono fianco a fianco.

Un nome visualizzato deve comunque essere memorizzato o generato, e dovrebbe essere etichettato per quello che è. Un campo chiamato nome che viene usato sia come etichetta sia come chiave di join finirà prima o poi per essere usato come quello sbagliato.

Per gli sviluppatori: mettere il confronto dietro un’unica funzione

Centralizza il confronto invece di ripeterlo. Un unico punto che esegue la normalizzazione, applica la tabella degli alias e decide l’esito significa che le regole possono essere riviste una volta e cambiate una volta, e che ogni chiamante eredita lo stesso comportamento.

Dove l’esito è incerto, preferisci restituire un suggerimento classificato piuttosto che una decisione. La directory dei paesi e delle regioni presenta i nomi insieme ai loro codici, che è l’abbinamento che rende visibile una corrispondenza sbagliata invece che plausibile, e per il contesto linguistico su come i nomi si comportano per lingua, la guida ai dati sui nomi per locale copre il lato linguistico che questo articolo lascia deliberatamente fuori. Il comportamento a livello di controllo di un selettore che consuma queste corrispondenze è coperto nella guida al test dei campi di selezione del paese.

Le voci di alias e le varianti di ortografia usate come esempi sopra sono inventate per illustrazione. Non sono una vera tabella di alias, non riflettono alcuna convenzione di denominazione pubblicata, e nessun esempio in questo articolo dovrebbe essere trattato come un nome ufficiale o preferito per alcun paese.

Passi successivi

Annota la tua forma canonica per un paese e la motivazione per cui è stata scelta, poi conta quanti punti nel tuo sistema confrontano nomi senza passare attraverso un passaggio condiviso. La guida a paese e lingua spiega perché un nome tradotto è una questione del livello linguistico e non un cambiamento di identità.

Continua a leggere

Guide su Formati di indirizzo e dati di identità per 86 paesi