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 で位置文字列をクエリすると、かなり正確な回答が得られます。

4

2 に答える 2

2

geopyのような Geocoding API を使用することをお勧めします()。

たとえば、Google Geocoding API は、応答の -field で国を返しますCountryNameCode

この 1 つの場所フィールドだけでは、誤った一致の数が比較的多くなる可能性がありますが、それで十分な場合もあります。

サーバー ログがある場合は、IP ジオコーダーを使用してユーザーの IP アドレスを検索することもできます (詳細とポインターについては、Wikipediaを参照してください)。

于 2009-08-14T21:33:06.717 に答える
1

あいまいさに対処する必要があるため、ユーザーに国を指定するように強制します。これが正しい方法です。

それが不可能な場合は、少なくとも IP アドレスと合わせて最善の推測をしてください。

たとえば、[「グラント」、「3333」、「ジョージア」]

ここはアメリカのジョージア州ですか?それともジョージア共和国ですか?

IP アドレスが中央アジアまたは東ヨーロッパのどこかを示唆している場合、それはグルジア共和国である可能性があります。北米の場合、可能性はかなり高く、米国のジョージア州を意味します。

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

于 2009-08-14T21:24:03.570 に答える