データの不整合を修正する


8

持っているデータを分析しようとしていますが、データに多くの不整合があります。

分析しようとしているSQLテーブルがあります。

表は次の構造を持つ大学の表です。name:string, city:string, state:string, country:string 名前は常に存在しますが、都市、州、国が欠落している可能性があります。私の主な問題は、タイプミスがたくさんあり、大学名の異なる赤緯があることです。たとえば、ここに私が見つけたときにスタンドフォード大学の赤緯があります SELECT "universities".* FROM "perm_universities" WHERE (name like '%stanford%')

stanford university - stanford - ca - united states of america
the leland stanford junior university - stanford - ca - united states of america
leland stanford jr. university - stanford - ca - united states of america
stanford university graduate school of business - stanford - ca - united states of america
the leland stanford junior university (stanford university) - stanford - ca - united states of america
leland stanford junior university - stanford - ca - united states of america
stanford university - stanford -  -
leland stanford jr. university, graduate school of business - stanford - ca - united states of america
stanford law school - stanford - ca - united states of america
stanford - stanford - ca - united states of america
stanford university, graduate school of business - stanford - ca - united states of america
stanford graduate school of business - stanford - ca - united states of america
stanford univerity - stanford - ca - united states of america
stanford university (the leland stanford junior university) - stanford - ca - united states of america
the leland stanford jr. university - palo alto - ca - united states of america
leland stanford junior university, school of law - stanford - ca / n/a - united states of america
stanford universit - stanford - ca - united states of america
the leland stanford university - stanford - ca - united states of america
leland standford stanford junior university - stanford - ca - united states of america
stanford university - cambridge - ma - united states of america
the leland stanford junior university 'stanford university' - stanford - ca - united states of america
stanford university school of law - stanford - ca - united states of america
stanford univresity - stanford - ca - united states of america
the leland stanford jr. university (stanford university) - stanford - ca - united states of america
leeland stanford junior university - stanford - ca - united states of america
leland stanford junion university -  - ca - united states of america
leland stanford junior university (stanford university) - stanford - ca - united states of america
the leland stanford junior university - stanford -  -
stanford university - graduate school of business - stanford - ca - united states of america
graduate school of business, stanford university - stanford - ca - united states of america
stanford universoty - stanford - ca - united states of america
leland stanford junior university - stanford -  -
stanford univeristy - palo alto - ca - united states of america
leland stanford university - palo alto - ca - united states of america
stanford university - stanford - ca / n/a - united states of america
the leland stanford junior university, stanford university - stanford - ca - united states of america
the leland stanford junior university graduate school of business - stanford - ca - united states of america
stanford universtiy - stanford - ca - united states of america
stanford univerisity - stanford - ca - united states of america
stanford university - stanford - ct - united states of america
stanford law scool - stanford - ca - united states of america
mba: stanford university - stanford - ca - united states of america

それらはすべて同じ大学ですが、タイプミスがあるもの、名前が異なるもの、都市がないもの、間違った都市があるものなどがあります...データは素晴らしいものではありません。

だから私はそれを修正しようとしています。このデータを統合するにはどうすればよいですか?


2
見上げたレコードリンケージあなたが部分的にオーバーラップレコードを扱うことができる方法について学ぶために。n-gramビット文字列を類似検索することにより、スペルミスを処理できます。
Emre、2016

2
文字通り数百の可能なアプローチがあり、あなたがそれを試したと私たちに告げさえしなかったので、私は「広すぎる」として閉じることに投票しました。あいまい一致、キーワード一致、クラスタリング、機械学習...
Spacedman

@Spacedman最良の選択肢がわからないため、まだ何も修正していない。
bl0b

これは正当な質問だと思います。問題は、(多くの既存の方法のうち)この方法を処理するのに最適な方法ですか?潜在的な一致の数を考えると、どのタイプのファジー/近似一致よりもクラスタリングを試すほうがよい場合があります。しかし、他の人の意見を聞きたいです。
アントニオ

回答:


3

このデータセットは既にテーブルに編成されているため、標準SQL関数を利用してクリーンアップの大部分を実行できます。たとえば、レコードは4つのフィールドで構成されているようです。

university name, city, state, country
stanford law school - stanford - ca - united states of america

次の手順に従って、このデータセットをより明確に表すことができます。

  1. 最高レベル(国)から始めて、一意の値を見つけ、それを使用して、soundexの一致をそれ自体と一覧表示することにより、類似するすべての発音の単語を識別します(それ自体とのテーブルの結合クエリを作成します)。
  2. これらの提案された類似の一致を使用して、名前を更新することですべての間違いを修正します。
  3. この方法で、4つのフィールドすべてを修正するまで続けます。
  4. 都市名を使用して不足している州を特定し、表の残りの部分から正しい州をクエリします。"leland stanford junior University"に州と国が欠落している場合は、都市名 "stanford"を使用してそれを結合し、テーブル内の他のレコードから州/国の名前を取得します。
  5. 大学名については、grepを使用してすべての略語を識別し、ドット文字で終わる単語を検索します。それらを完全拡張で置き換えます。
  6. 次に、大学名を個々の単語に分解し、これらを1つの列の一時テーブルにダンプします。列の値を重複排除して、一意の値のみが含まれるようにします。
  7. 手順1と同じsoundexマッチング結合クエリを実行して類似の名前を特定し、これらの提案された類似の名前を一時テーブルの2番目の列に追加します。
  8. 提案として取得したものの手作業による健全性チェックを手動で実行し、無効な一致を削除します。
  9. 各大学名の単語を推奨される置き換えに置き換える手順を記述してください。そうすれば、データセットがより明確になります。

1

これは、最初にデータセットを構造化せずに行うことは非常に困難です。クリーンなデータセットがこれらの問題をクリーンアップしようとするため、クリーンアップされたデータセットに数千ドルかかる理由はあります。

試すことができるのは、最初に分類システムを作成することです。まず、一般的な「スタンフォード大学」にID「1」を割​​り当てます。「スタンフォード大学大学院」のようなものはID「1.2.5」を取得します。ここで、新しい「2」は大学院部門を示し、「5」はビジネススクールのカテゴリを示します。それは本当にあなたの最終的な目標が何であるかに依存します。要するに、可能なサブディビジョン、「大学院、学部など」のIDのリストを設定します。その後、さらに細分化します。

場所については、通常、「プライマリ」と「セカンダリ」の場所、つまり「Palo Alto」と「Stanford」を定義できます。これらは、それぞれのカウントのヒストグラムを作成し、上位2つを選択することで決定できます。

スペルミスを修正するために、Google検索APIを使用して、「...の結果を表示」を利用すると、正しいスペルが得られます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.