Domanda

La maggior parte delle applicazioni web hanno un campo posizione, in cui usi possono entrare in una posizione di loro scelta.

Come ti classificare gli utenti in diversi paesi, in base alla posizione inserito.

Per esempio, ho usato la discarica Stack Overflow di users.xml ed estratto i nomi degli utenti, la reputazione e la posizione:

['Jeff Atwood', '12853', 'El Cerrito, CA']
['Jarrod Dixon', '1114', 'Morganton, NC']
['Sneakers OToole', '200', 'Unknown']
['Greg Hurlman', '5327', 'Halfway between the boardwalk and Six Flags, NJ']
['Power-coder', '812', 'Burlington, Ontario, Canada']
['Chris Jester-Young', '16509', 'Durham, NC']
['Teifion', '7024', 'Wales']
['Grant', '3333', 'Georgia']
['TimM', '133', 'Alabama']
['Leon Bambrick', '2450', 'Australia']
['Coincoin', '3801', 'Montreal']
['Tom Grochowicz', '125', 'NJ']
['Rex M', '12822', 'US']
['Dillie-O', '7109', 'Prescott, AZ']
['Pete', '653', 'Reynoldsburg, OH']
['Nick Berardi', '9762', 'Phoenixville, PA']
['Kandis', '39', '']
['Shawn', '4248', 'philadelphia']
['Yaakov Ellis', '3651', 'Israel']
['redwards', '21', 'US']
['Dave Ward', '4831', 'Atlanta']
['Liron Yahdav', '527', 'San Rafael, CA']
['Geoff Dalgas', '648', 'Corvallis, OR']
['Kevin Dente', '1619', 'Oakland, CA']
['Tom', '3316', '']
['denny', '573', 'Winchester, VA']
['Karl Seguin', '4195', 'Ottawa']
['Bob', '4652', 'US']
['saniul', '2352', 'London, UK']
['saint_groceon', '1087', 'Houston, TX']
['Tim Boland', '192', 'Cincinnati Ohio']
['Darren Kopp', '5807', 'Woods Cross, UT']

utilizzando il seguente script Python:

from xml.etree import ElementTree

root = ElementTree.parse('SO Export/so-export-2009-05/users.xml').getroot()
items = ['DisplayName','Reputation','Location']

def loop1():
    for count,i in enumerate(root):
    det = [i.get(x) for x in items]
    print det
    if count>30: break

loop1()

Qual è il modo più semplice per classificare le persone in diversi paesi? Ci sono delle tabelle di ricerca pronti a disposizione che mi forniscono una posizione X uscita dicendo appartiene Y paese?

La tabella di ricerca non deve essere del tutto accurata. risposte ragionevolmente accurata sono ottenuti interrogando la stringa di posizione su Google, o, meglio ancora, Wolfram Alpha.

È stato utile?

Soluzione

È cosa migliore è utilizzare un'API Geocoding come geopy ( alcuni esempi ).

Il href="http://code.google.com/apis/maps/documentation/geocoding/#GeocodingResponses" rel="nofollow Google Geocoding API , ad esempio, tornerà il paese nel CountryNameCode campo della risposta.

Con solo questo campo la posizione numero di falsi match sarà probabilmente relativamente alto, ma forse è abbastanza buono.

Se si ha log del server, si potrebbe provare a guardare anche le utenti indirizzo IP con un geocoder IP (maggiori informazioni e indicazioni su Wikipedia

Altri suggerimenti

Forzare gli utenti di specificare paese, perché avrete a che fare con le ambiguità. Questo sarebbe il modo giusto.

Se questo non è possibile, almeno rendere il vostro best-indovinare in congiunzione con il loro indirizzo IP.

Ad esempio, [ 'di Grant', '3333', 'Georgia']

E 'questo la Georgia, Stati Uniti d'America? O si tratta della Repubblica della Georgia?

Se il loro indirizzo IP suggerisce qualche parte in Asia centrale o in Europa orientale, allora è probabile che sia la Repubblica di Georgia. Se si tratta di Nord America, le probabilità sono piuttosto buone significano Georgia, USA.

Si noti che i mapping per l'indirizzo IP per paese non è accurato al 100%, e il database deve essere aggiornato regolarmente. A mio parere, di gran lunga troppi problemi.

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