1

音楽のジャンルで構成された巨大なデータベース テーブルがあります。ほぼ 35000 のレコードがあり、それらのほとんどは主に同じジャンルを表現しています。たとえば:

+-----------+ 
| Name      |
+-----------+
| "Dubstep" |
| Dub Step  |
| Dubstep   |
| dub-step  |
| dubstep   |
+-----------+

すべてを 1 つのユニークなジャンルにまとめることができ、単に「ダブステップ」と呼ぶことができます。

よりクリーンなデータセットを実現したいのですが、いくつかの提案を聞きたいのですが、「ダブステップ」と「ダブステップ」が同じ意味を表しているかどうかはどうすればわかりますか?

Python と SQLAlchemy を使用していることに注意してください。私は決して SQL の専門家ではありません。

4

1 に答える 1

1

すべてを小文字にしてから、英数字以外の文字をスペース、ダッシュなどで取り除くことで、therms の正規化を試みることができます。

単独で、または最初のものと組み合わせて実行する別のオプションは、レーベンシュタイン距離http://en.wikipedia.org/wiki/Levenshtein_distanceを使用し、単語を最小限の距離でグループ化することです。

注意: 最初の解決策を使用してクリーンアップされるケースの数を確認することで、実際に「それらのほとんど」がどれだけあるかを最初に確認し、次に、最も可能性が低く、可能性が最も高いコーナーケースに到達するまで、それらを徐々に除外してみてください。手動で支援されます。

これを実際に実装するには、すべてを sqlite データベースに転送し、Python で照合関数を記述 (または実験) して適用します。例: http://docs.python.org/2/library/sqlite3.html create_collat​​ion を検索します。

于 2013-06-11T17:11:01.947 に答える