Sono un po 'bloccato con un problema che riguarda la normalizzazione dei dati di input sulla posizione da parte dell'utente (che proviene da una terza parte).
Obiettivo
Scomporre logicamente e interpretare il campo di inserimento della posizione dell'utente e capire se sta elencando posizioni singole o multiple, da uno o più Paesi.
Il problema
Il tipo di dati che sto ricevendo dall'input dell'utente è confuso e non ha struttura logica o coerenza come mostrato di seguito. I geocodi giornalieri sono limitati da Google, quindi devo usarli con parsimonia. Voglio elaborare in modo efficiente l'input di posizione dall'utente e inviare la query di geocodifica corretta a google per ottenere il risultato corretto.
Origini dati
I dati sono irrazionali e irregolari e potrebbero essere forniti in alcuni dei seguenti formati:
London, UK Alternative format
England, London Reversed order
London Generic location
London Sheffield, Newcastle Three separate locations in the same country without consistent commas
London, Sales, Sales Assistant Non location content inserted
London [NOT SPECIFIED] Other non location content inserted with non alphabet chars not separate with commas
London, Washington, Brazil, England Mix of unrelated locations, including cities and countries
Washington, London, Kent Mix of places within a single country
Soluzione proposta
Passaggio 1: dati di analisi
- Inserisci ogni parola separata in un array
Passaggio 2: disinfetti i dati
- Elimina caratteri non validi, virgole, spazi aggiuntivi ecc.
- Rimuovi le parole da uno stoplist.txt (come lavoro, vendite, in, at, ecc.)
Passaggio 3: Deterimine se posizione valida
- Verifica se ogni singolo elemento dell'array è stato geocodificato prima, altrimenti, geocode e store
- registra tutte le parole che sono state geocodificate senza risultati - aggiungili nel file stoplist per evitare inutili geocodici
Passaggio 4: valori dell'interlink
- Confronta se un valore di coordinate di un luogo rientra nell'intervallo di un altro elemento dell'array. Se lo fa, sappiamo che sono genitori e li trattiamo come un singolo oggetto
- Londra + Inghilterra - > Le coordinate di Londra rientrano nel raggio d'azione dell'Inghilterra, quindi sappiamo che si tratta di un'unica posizione, non di due separate.
Pubblicazioni
Numero 1: Kent, London, Sussex Tecnicamente, c'è un Kent negli Stati Uniti, ed è il primo che compare quando lo inserisci in google maps. Tuttavia, poiché tutti i risultati sono in Inghilterra, è estremamente improbabile che il risultato che vogliamo sia quello degli Stati Uniti
Numero 2: Inghilterra, Washington, New York C'è una Washington in Inghilterra, ma sembra che non sia quella in Inghilterra
Domanda
La mia soluzione proposta è quella di suddividere le parole in entità separate e ricollegarle come la soluzione più logica? Qualsiasi aiuto o consiglio sarebbe molto apprezzato, lo so che non è un problema facile.