Salta al contenuto

Cos'è il fuzzy matching e come si sceglie la soglia?

Il confronto approssimato fra stringhe: assegna un punteggio di somiglianza al posto di un sì o no esatto.

Il fuzzy matching è il confronto approssimato fra stringhe: invece di chiedersi se due valori sono identici, calcola quanto si somigliano e restituisce un punteggio, di solito fra zero e uno. Serve ovunque i dati siano scritti da persone o sistemi diversi, dove "Acciaieria Lombarda S.p.A." e "ACCIAIERIE LOMBARDE SPA" indicano la stessa cosa e nessun confronto esatto se ne accorge. È il motore sotto molte pipeline di riconciliazione, a cominciare dalla entity resolution, ma il problema che pone in proprio è più stretto: scelto un algoritmo di somiglianza, sopra quale punteggio due stringhe vanno considerate la stessa cosa. Non esiste una risposta universale, perché la soglia giusta dipende da quanto costa sbagliare nelle due direzioni opposte. Il fuzzy matching, detto altrimenti, non è un algoritmo: è la scelta di un algoritmo più la calibrazione di una soglia, e la seconda pesa quanto la prima.

Leggi anche: Entity resolution · La disciplina che riconosce quando record diversi in sistemi diversi rappresentano la stessa entità reale.

Gli algoritmi e il criterio per sceglierli

La distanza di edit, o di Levenshtein, conta i caratteri da inserire, cancellare o sostituire per passare da una stringa all'altra: giusta per errori di battitura e codici, dove ogni carattere pesa uguale. Jaro-Winkler nasce dal record linkage del censimento statunitense e premia le stringhe che condividono i primi caratteri, perché nelle anagrafiche gli errori si concentrano verso la fine del nome (Winkler, 1990): è tarato sui nomi propri e rende poco sulle descrizioni lunghe. La similarità a trigrammi conta le sequenze di tre caratteri in comune e tollera le parole in ordine diverso, il caso di ragioni sociali e descrizioni di prodotto. Soundex e Metaphone codificano il suono, ma Soundex nasce per l'indicizzazione dei cognomi nei censimenti statunitensi: sull'italiano, con vocali portanti e doppie frequenti, raggruppa molto peggio, e va provato su dati veri prima di adottarlo.

La soglia è la vera decisione

Alzare la soglia aumenta la precisione e taglia il richiamo, abbassarla fa l'opposto, e il compromesso non è simmetrico. Un falso positivo fonde due soggetti diversi in un record solo: fatture, storici e limiti di fido finiscono su un'anagrafica che non esiste, e separarli dopo mesi costa più della fusione. Un falso negativo lascia lo stesso fornitore contato due volte, errore visibile e recuperabile. Quasi ovunque il falso positivo costa di più, quindi la soglia si tiene alta e si accetta una fascia grigia di punteggi intermedi che nessun automatismo chiude: quelle coppie vanno in una coda di revisione umana, un costo da mettere a budget. Il numero non si indovina, si tara su un campione etichettato a mano.

Distanza fra stringhe e similarità semantica

La similarità calcolata sugli embedding risolve casi che nessuna distanza fra caratteri tocca: "cuscinetto a sfere" e "ball bearing", o due descrizioni dello stesso componente senza una parola in comune. Sbaglia però dove il confronto fra caratteri è solido, su codici e numeri di parte, vicini nello spazio vettoriale per forma e non per significato: un modello non ha motivo di sapere che 6205-2RS e 6206-2RS sono prodotti distinti. Non è un rimpiazzo, è uno strumento diverso, da usare sui campi dove è forte.

Un esempio enterprise

Un produttore di macchinari deve riconciliare il listino di un fornitore con il proprio ERP: nessuna chiave condivisa, codici senza relazione, e l'unico appiglio è la descrizione, scritta in modo diverso nei due sistemi. Il confronto a trigrammi sulle descrizioni normalizzate porta gran parte delle righe sopra soglia, la distanza di edit sui frammenti di codice ne recupera una quota, e la fascia grigia va a un buyer che conferma in blocco. Senza, l'analisi di spesa per articolo non esiste e i fornitori si confrontano a occhio.

Perché conta per chi decide

La soglia di matching è una decisione di rischio travestita da parametro tecnico: la sceglie chi conosce il costo dei due errori, non chi scrive la query. Chiedere quale sia e quante coppie finiscono in revisione manuale dice subito se una riconciliazione è governata o se è rimasto il valore di default. E va letta insieme alla data quality a monte: su dati normalizzati male ogni algoritmo rende meno, e alzare la soglia per compensare nasconde il problema.

Domande frequenti

Non esiste un valore valido in generale: dipende dall'algoritmo, dalla qualità dei dati e dal costo dei due errori. Si etichetta a mano un campione di qualche centinaio di coppie, si misurano precisione e richiamo a soglie diverse e si sceglie il punto in cui i falsi positivi restano sotto la tolleranza del dominio.

Rispondono a domande diverse. La distanza fra stringhe vince su codici, matricole e sigle, dove conta la forma esatta; gli embedding vincono su descrizioni scritte in modo diverso o in lingue diverse. Su dati industriali, dove convivono codici e descrizioni, si usano entrambi sui campi rispettivi.
  • Entity resolution · La disciplina che riconosce quando record diversi in sistemi diversi rappresentano la stessa entità reale.
  • Data quality · Quanto i dati sono adatti all'uso che devi farne: completi, corretti, aggiornati e coerenti tra i sistemi. Si misura, non si dichiara.
  • Embedding · Rappresentazione numerica del significato di un testo o di un'immagine, usata per confrontare i contenuti per somiglianza.
  • Riconciliazione dati di distinta base · Allineare i codici articolo dello stesso componente tra CAD, ERP e listini fornitore in un'unica anagrafica affidabile.
  • Ricerca ibrida e reranking · Lo stadio di ranking di una RAG: fonde ricerca lessicale e vettoriale, poi un reranker riordina i migliori candidati.

Vedi nell'universo

Se tocca i dati della tua azienda, metterli in ordine è il primo lavoro che faccio.

VEDI DATA FOUNDATIONS

Oppure scrivimi.