2012-02-23 11 views
5

Qual è il metodo migliore per eseguire la disambiguazione della posizione per i dati dei geonames?Qual è il metodo migliore per rendere la disambiguazione della posizione per i dati dei geonames?

Ci sono alcuni algoritmi di punteggio per la ricerca di nomi geografici, ma non lo aprono e non sono sicuro che siano molto sofisticati. (Vale a dire per soma, ca restituisce Soma lake in Canada che hanno nemmeno articolo di Wikipedia, invece di molto popolare Soma Neirbohood in san francisco)

Ci

anche alcune opere che ho trovato in Google Scholar, ma sembra molto bassa e simile con i miei euristica come punteggio da qualcosa (log(population) + 1000*hasWikipedia(article)+ isCity100+isCapital(10)).

Il mio dominio negli articoli di viaggio, quindi la mia funzione di punteggio dovrebbe fornire i luoghi turistici più probabili (città, luoghi di interesse (Disneyland, colleseum, big ben)).

Conoscete qualche articolo importante in questo campo o algoritmi utilizzati in produzione da Google maps, yahoo, bing o anche geonames?

+0

È una domanda di taglie ... "retaging" porterà più visitatori. Per favore, vorrei che qualcuno aggiungesse dei tag. (Non ho un rappresentante di 500+). _Suggerimento di ciò che penso siano buoni tag da aggiungere_; [string-matching] [search] [algoritmo]. –

+0

@OlofAdler possiamo aggiungere massimo 5 tag – Hector

+0

Non lo sapevo. Grazie per l'informazione. –

risposta

3

@ yura, questo non è quello che stai cercando, ma non credo che nessun algoritmo intelligente sarà in grado di disambiguare costantemente se query come "soma ca" si riferiscono a Soma a San Francisco o Soma Lake in Canada. Il problema non è che il tuo algoritmo non sia abbastanza sofisticato; il problema è che semplicemente non c'è abbastanza informazione nella query "soma ca".

Non so come esprimerlo chiaramente, ma c'è una cosa di teoria dell'informazione che sta succedendo qui. È come il modo in cui i dati casuali non possono essere compressi senza perdita di dati: non c'è abbastanza informazione nell'input per calcolare l'output desiderato.

Anche se un essere umano dovesse interpretare le query manualmente, non necessariamente comprenderebbe che "soma ca" dovrebbe significare Soma in SF. Forse per te un'abbreviazione di 2 lettere come "ca" "naturalmente" si riferisce a uno stato americano piuttosto che a un paese straniero, ma non c'è nulla di fondamentalmente "corretto" in quella scelta, e non può essere derivato usando la pura logica. È una regola arbitraria, specifica per il dominio, ad hoc, proprio come l'euristica ad-hoc log(population) a cui si è fatto riferimento.

Alcune possibili "soluzioni" (a parte la progettazione di un computer telepatico in grado di leggere la mente degli utenti):

  1. fornire agli utenti un elenco di possibili corrispondenze per ogni query. Tieni traccia di quelli che scelgono e quando altri utenti in seguito digitano la stessa query, ordina i risultati per popolarità.
  2. OPPURE, una volta raccolti molti dati sulla popolarità dei risultati delle query, si può persino essere in grado di estrarre i dati con algoritmi di apprendimento automatico e ricavarne una migliore euristica.
  3. Oppure, prima di utilizzare l'applicazione in produzione, è possibile compilare un gruppo di query false, insieme ai risultati che si ritiene che il proprio algoritmo dovrebbe produrre per ciascuna di tali query. Quindi usa i tuoi algoritmi di apprendimento automatico su questo.
  4. Compilare un gruppo di domande false e risposte desiderate, OPPURE ottenere i dati dalle scelte degli utenti reali e utilizzare tali dati per confrontare l'accuratezza dell'euristica della classifica progettata e codificata manualmente. Continua a inventare una nuova euristica finché non trovi quella che raggiunge un'elevata precisione nel set di dati di test.
Problemi correlati