Strategia per la normalizzazione e l'interpretazione dei dati di posizione

2

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.

    
posta James Willson 15.08.2013 - 22:21
fonte

1 risposta

1

Farò un tentativo di rispondere alla domanda. :)

Penso che tu abbia bisogno di un sistema che possa:
  1. Scopri i luoghi man mano che crescono.
  2. Migliora se stesso straordinariamente.

Presupposti: Supponendo che non siano necessarie analisi in tempo reale del codice geografico. La soluzione sottostante funzionerà in secondo piano e continuerà a migliorare automaticamente con l'avanzare dell'età.

Nel tuo database dovresti avere un enorme repository di stati, città, ecc. Questo è l'unico modo per monitorare se alcuni indirizzi sono correlati

Alcuni pseudo algoritmi che potrebbero aiutare:

  1. Devi raggruppare quell'array con un groupId
  2. Verifica se il singolo elemento dell'array è già un paese, uno stato, una città o addirittura già geo codificato.
  3. Se il passaggio precedente non produce nulla, quindi Google, potrebbero esserci alcuni siti Web che forniscono questo tipo di elementi. Puoi eseguire la scansione web per arrivarci.

  4. Dal passaggio precedente otterrai ulteriori parole di arresto da aggiungere nell'elenco di stop.

  5. Sei pronto per il geocoding dato che ora è facile conoscere il paese, lo stato, la città.

  6. Dovresti salvare i risultati della geocodifica in modo che possa essere utile in seguito.

Nota: potresti anche considerare di avere una politica di revalute dell'elenco di stop. Qualche tempo dopo il quale è possibile riconsiderare le parole come parole consentite. Il mondo sta crescendo e sanno che potrebbero avere una nuova posizione con un nome che si trova nella tua lista delle fermate:)

Dichiarazione di non responsabilità: non ho mai lavorato su geocodi e non ho studiato molto a riguardo. Sto dando la soluzione come risposta concettuale.

Spero che aiuti

    
risposta data 25.08.2013 - 19:07
fonte