6

私は製品の大規模なデータセット(〜100万)を扱っています。これらの製品はさまざまなソースから提供されているため、データのリストに一貫性がありません。大きな問題の 1 つは、製品のブランド名の違いです (約 17,000 のユニークなブランド)。一部のブランドには、関連付ける必要がある 10 もの差異があります。

問題:


  1. 一貫性のない間隔: ジェット ボイル VS ジェットボイル
  2. 句読点:グレンジャーズVSグレンジャーズ
  3. ノイズ ワード:ザ ノース フェイス VS ノース フェイス
  4. 分類法: Armada VS Armada Skis
  5. シンボル: Phil and Teds VS Phil&Teds
  6. スペルミス:パタゴニア VS パタゴニア
  7. その他の奇妙:ベル スポーツ VS ベル スポーツ #81037

サンプル データセット


Black Diamond
Black Diamond (Uda)
Black Diamond Co
Black Diamond Eq Ltd
Black Diamond Eqp #76800
Black Diamond Equipment
Black Dog Machine Llc
Black Dome Press
Black Dot
Black Dragon
Black Fire
Black Flys
Black Forest Girl
Black Gold
Black Hawk Inc.
Black Hills
Black Knight
Black Label
Black Magic
Black Marine
Black Market Bikes
Black Max
Black Opal
Black Ops
Black Rain Ordance Inc.
Black Rain Ordnance
Black Rapid
Black Ribbon
Black Rifle Disease Engineerin
Black River Bucks
Black Seal
Black Seed
Black Swan
Black Tower
Black Widow
Black's

結果(コメントで提案されているように)

  • 関連付けが正しくないと、関連のないブランドが製品検索に表示され、プレゼンテーション レイヤーの使いやすさが低下します。
  • 関連付けがないと、同じブランドがフィルター リストに複数表示され、プレゼンテーション レイヤーの使いやすさが低下します。

これは大きな問題であり、スタック オーバーフローの記事で解決できる範囲を超えている可能性が高いことは認識していますが、この問題に取り組む方法についてのインスピレーションを探しています。

役立つ可能性のあるアルゴリズム、ソフトウェア パターン、またはプロセスは大歓迎です。

4

1 に答える 1

3

さて、私がこれにアプローチする方法は、フレーズ間の類似性を定量化するためにいくつかの距離メトリックを使用し、次にそれらの距離によって用語をクラスター化することです。

基本的に編集距離、またはある文字列から別の文字列に取得する必要のある操作の数である、レーベンシュタイン距離(多くの実装を簡単に見つけることができます)のような古典的なテキストメトリックから始めることができます。 、挿入または削除。

あなたが与えた例から、レーベンシュタインは合理的であるように思われます。

クラスタリングにはたくさんのアルゴリズムがありますが、これもグーグルでたくさんの実装を見つけるのは簡単です。クラスタリングは基本的に、特定の距離メトリックの下で互いに近いオブジェクトのグループ(クラスター)を見つけます。あなたの場合、これらは互いに類似した用語のグループになります。

結果を確認したら、データに関する知識を使用して手動で調整することにより、距離メトリックを少し試してみることができます(「&」が「and」に近いことを指定するなど)。

幸運を!

于 2012-09-07T20:25:38.430 に答える