Abbiamo un database con negozi outlet / supermercati (principalmente in Germania, ma anche altri paesi sono possibili). Conserviamo alcune informazioni su questo outlet / supermercati come nome, via, codice postale, città, codici geografici (longitudine , latitudine).
È molto importante che una presa sia presente solo una volta nel database.
Dai nostri clienti otteniamo elenchi di punti vendita / supermercati per importarli nel nostro database. Quando il supermercato outlet / supermercato esiste nel nostro database, ignoriamo la presa / il supermercato nella lista di importazione, ma quando non esiste nel nostro database creiamo una nuova voce nel nostro database.
E qui sorge il problema: la qualità delle liste di importazione dei nostri clienti è molto spesso estremamente negativa. Come la strada e il codice postale non corrispondono, errori di ortografia nel nome della via, errori di ortografia nel nome della presa ecc ... Gli elenchi di importazione non sono standardizzati.
Abbiamo bisogno di un processo automatico di vasta portata. In alcuni casi, un elenco di importazione ha più di 10.000 voci ed è troppo costoso se un dipendente esegue questo processo.
I nostri precedenti approcci:
-
Verifica rigorosamente l'uguaglianza (Nome == NomeImport e & Via == ImportStreet). È ovvio che questo non può funzionare. il processo automatico troverebbe solo alcune corrispondenze.
-
Algoritmo di geocoding e Levenshtein ( link )
Per prima cosa geocodificare l'indirizzo dall'elenco di importazione. Quindi guardiamo in un raggio di 500 metri se ci sono altri punti vendita già nel database. Se no, allora creiamo una nuova voce nel database. Ma se c'è già uno sbocco esistente, controlliamo se è lo stesso con l'aiuto dell'algoritmo Levenshtein.
Ci sono diversi problemi con questa soluzione: il geocoding spesso fallisce a causa dei molti errori ortografici e di ortografia dell'indirizzo (abbiamo provato a cambiare il nostro fornitore di gecoding a google maps perché la geocodifica è molto meglio ma sarebbe molto costosa), l'algoritmo di Levenshtein può avere torto, quindi abbiamo mappature errate nei punti vendita esistenti. A seconda del limite che scegli per la distanza di Levenshtein, molti punti vendita devono essere importati manualmente o vengono creati compiti sbagliati.
Stiamo cercando nuovi approcci e idee per questo problema. Esistono algoritmi adatti o avete altre idee? Molte grazie.