2016-10-17 21 views
1

私は都市名と犯罪数のデータセットを持っています。データは「newyork」、「new york us」、「new york city」、「manhattan new york」などのように都市名が「new york」のように汚れています。どのようにこれらをすべてグループ化できますか都市を一緒にして犯罪を集める?ほぼ同じ文字列でグループ化

Pythonで文字列と一致する「difflib」パッケージを試してみましたが、スコアが得られました。旨く動きません。私はまた、Pythonでジオコード・パッケージを試しました。それはAPIにアクセスできる回数に制限があり、うまく動作しません。助言がありますか?

+0

したがって、データが汚れていると、「ニューヨーク」が正しく書き込まれていることもわかりません。つまり、「nwe yrok」などと綴ることもできますか? – rocksteady

+0

[this](https://stackoverflow.com/questions/31642940/finding-if-two-strings-are-almost-similar?rq=1)何かがありますか? – rocksteady

答えて

1

多分これは役立つかもしれない:

http://chairnerd.seatgeek.com/fuzzywuzzy-fuzzy-string-matching-in-python/

別の方法:文字列は「新しい」と「ニューヨーク」が含まれている場合は、「ニューヨーク市のそれにラベルを付けます。

別の方法:発生する可能性のあるすべてのファジー単語の辞書を作成し、それらのそれぞれに手動でラベルを付けます。そのラベルを使用して、これらの曖昧な単語のそれぞれをラベルに置き換えます。

0

もう1つの方法は、各エントリを調べ、空白を取り除いて、それらに基本都市名が含まれているかどうかを確認することです。たとえば、 'newyork'、 'newyork us'、 'new york city'、 'manhattan new york'は空白を取り除いたときに 'newyork'、 'newyorkus'、 'newyorkcity'、 'manhattannewyork'単語 'newyork'。

この方法には2つの方法があります。すべての 'new york'文字列を空白文字なしで 'newyork'だけに置き換えるか、ただちにチェックすることができます。

私は以下の例を書きましたが、あなたのデータがどのようにフォーマットされているかわからないので、私はそれがどれほど有益であるか分かりません。

crime_count = 0 
for (key, val) in dataset: 
    if 'newyork' in key.replace(" ", ""): 
     crime_count = crime_count + val 
関連する問題