2009-08-14 9 views
1

ほとんどのWebアプリケーションには[場所]フィールドがあり、その場所で目的の場所を入力できます。[場所]フィールドに基づいてユーザーを異なる国に分類する方法

入力した場所に基づいて、どのようにユーザーをさまざまな国に分類しますか?例えばのために

、私はusers.xmlのスタックオーバーフローダンプを使用し、ユーザーの名前、評判や場所を抽出:

['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'] 

次の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() 

最も簡単な方法は何ですか人々をさまざまな国に分類するには? X所在地がY国に属する旨の出力を提供する、利用可能なルックアップテーブルがありますか?

ルックアップテーブルが完全に正確である必要はありません。 GoogleやWolfram Alphaの位置文字列を照会することで、合理的に正確な回答が得られます。

答えて

2

geopysome Examples)のようなジオコーディングAPIを使用することをお勧めします。

例えば、Google Geocoding APIは、回答の国CountryNameCodeの国を返します。

ちょうどこの1つの場所フィールドでは、誤った一致の数はおそらく比較的高いでしょうが、十分かもしれません。

サーバーのログを持っていた場合、あなたもそう長く多数の回答が正しいと、少しの誤差は大丈夫ですWikipedia

+0

ジオピーを指してくれてありがとう。 –

1

曖昧さを処理する必要があるため、ユーザーに国を指定させる必要があります。これは正しい方法でしょう。

これが不可能な場合は、少なくともIPアドレスと一緒に推測してください。例えば

、[ 'グラント'、 '3333'、 'ジョージア']

は、この米国ジョージア州ですか? これはグルジア共和国ですか?

IPアドレスが中央アジアや東ヨーロッパのどこかにある場合は、ジョージア共和国の可能性があります。もしそれが北アメリカであれば、アメリカのジョージアを意味する可能性はかなり高いです。

IPアドレスの国へのマッピングは100%正確ではなく、データベースを定期的に更新する必要があることに注意してください。私の意見では、あまりにも多くのトラブル。

+0

上のIPジオコーダ(より多くの情報とポインタと、ユーザーのIPアドレスを検索しようとすることができます。 –

関連する問題