Determinare località menzionate nel shortish (da 500 a 1000 parole) pezzo di testo usando PHP

StackOverflow https://stackoverflow.com/questions/1665203

Domanda

Mi piacerebbe trovare un modo per prendere un pezzo di testo fornita dall'utente e determinare quali indirizzi sulla mappa sono menzionati nel testo. Sarei felice di utilizzare un servizio web gratuito se esiste o utilizzare uno script che non consumerà troppe risorse.

Un modo posso immaginare di fare questo sta prendendo un database enorme di affrontare e alla ricerca di ciascuno di essi singolarmente nel testo, ma questo non sembra efficiente. C'è un algoritmo migliore o la tecnica si può suggerire?

La mia idea di base è quella di prendere le informazioni sulla posizione e di trasformarlo in marcatori su una mappa di Google. Se è troppo difficile o impegnativo per la CPU per determinare automaticamente le posizioni, ho potuto richiedere agli utenti di aggiungere le informazioni in un campo posizione, se necessario, ma io preferirei non fare questo, come alcuni utenti stanno per essere abbastanza giovani studenti.

Questo deve essere fatto in PHP come quello è il linguaggio di scripting disponibili su mia scuola ha ospitato server.

Si noti questo intero set-up avverrà nel contesto di un nodo di Drupal, e ho intenzione di utilizzare un filtro per raccogliere le informazioni sulla posizione necessarie dal singolo nodo, quindi questa analisi sarebbe solo accadere una volta (quando il nuovo testo entra il database).

È stato utile?

Soluzione

Si potrebbe ottenere qualcosa di simile a OpenCalais per etichettare il vostro testo. Uno dei catigories quale ritorna è "città" si coud quindi utilizzare un altro terzo modulo parti per mostrare la posizione della città.

Altri suggerimenti

Se si ha avuto un elenco enorme di posizioni in un database relazionale, e tu sei solo preoccupato per 500 a 1000 parole, allora si potrebbe sicuramente basta passare il comando SQL per trovare le corrispondenze per i 500-1000 parole e sarebbe essere molto efficiente.

Ma anche se c'era bisogno di chiamare un'API lento, si potrebbe tenerne richiesta di 500 parole una per una. Se hai tenuto una cache delle partite, quindi la cache probabilmente rapidamente riempire con tutte le parole di arresto (si sa, come "il", "se", "e") e poi utilizzando la cache, sarebbe probabile che si sarebbe alla ricerca molto meno di 500 parole ogni volta.

Credo che si potrebbe essere sorpresi di quanto velocemente l'approccio forza bruta avrebbe funzionato.

Per riferimento futuro vorrei solo citare l'API Yahoo chiamato PlaceMaker e la servizio GeoMaker che è costruito su di esso.

Questi strumenti possono essere utilizzati per analizzare fuori posizioni da un testo come richiesto qui. Purtroppo nessun modulo Drupal sembra esiste in questo Gruppo, ma una soluzione personalizzata sembra facile da codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top