17

さまざまなサプライヤーの製品の価格を比較する簡単なプログラムを作成しようとしています。異なるサプライヤーは、同じ製品を異なるものと呼ぶ場合があります。

たとえば、次の 3 つの文字列は同じ製品を参照しています。

  • A2 フルクリーム牛乳びん 2L
  • A2 ミルクフルクリーム 2L
  • A2 フルクリームミルク 2L

または、次の 2 つの文字列は同じ製品です。

  • Ambi Pur Air Freshener Car Voyage 8mL. フレッシュなバニラフラワーの香り。- 各1
  • Ambi Pur エア フレッシュナー ボヤージュ プライマリー 8ml

さらに、一部の製品は同じではありませんが、類似しています (たとえば、フル クリーム 2L ミルクにはさまざまな類似製品が含まれる場合があります)。

各製品について私が持っている情報は、タイトルと価格だけです。

このような製品文字列を一致させるために現在推奨されている手法は何ですか?

私のグーグルと他のSOスレッドを読んで、私は見つけました:

  • ベイジアン フィルタリング手法の使用を推奨する人もいます。
  • すべての製品文字列で特徴抽出を行うことを推奨する人もいます。したがって、製品からブランド (例: 「A2」)、製品 (「牛乳」)、容量 (「2L」) などを抽出し、製品間の距離ベクトルを作成し、バイナリ分類器のようなものを使用して製品 (SVM) を照合します。が挙げられました)。しかし、たくさんのルールや正規表現なしでこれを達成する方法がわかりませんか? この問題に対処するためのよりスマートな教師なし学習方法があると思いますか? 価格は、距離ベクトルを計算するために使用できるもう 1 つの「機能」である可能性があります。
  • ニューラル ネットワーク アプローチの使用を推奨する人もいますが、ここでは具体的なコードや例について多くを見つけることができませんでした。
  • レーベンシュタイン距離やジャロ・ウィンクラー距離などの文字列類似性アルゴリズムの使用を推奨する人もいます。

上記の手法のいずれかを使用しますか、それとも別の手法を使用しますか?

また、この種の問題のサンプルコードやライブラリを知っている人はいますか? 見つけられなかったようです。

(たとえば、大規模なデータセットのジャロ-ウィンクラー距離の計算でパフォーマンスの問題を抱えている人がいるのを見ました。アルゴリズムの分散実装 (Mahout など) があることを望んでいましたが、できませんでした。具体的なものを見つけてください。)

4

1 に答える 1

8

上記の手法のいずれかを使用しますか、それとも別の手法を使用しますか?

もし私がこれを実際にやっていたら、機械学習をあまり使わないでしょう。大企業のほとんどはブランド名と製品名のデータベースを持っており、それを使って物事を簡単に照合できると思います。データのサニテーションが必要になる場合がありますが、ML の問題ではありません。

あなたがそのデータベースを持っていないなら、私はシンプルに行くと思います. すべてを特徴ベクトルに変換し、最近傍検索を行います。それを使用して、データベースを作成するためのツールを作成します。IE: 最初の "A2 Whole Milk 2L" を自分で "milk" としてマークし、最も近い隣が牛乳かどうかを確認します。「はい」と「レビューが必要」、または同様のオプションをすばやくマークする方法を自分で用意してください。

あなたが提案したような単純なデータの場合、90%の確率で機能します-データを簡単に処理できるはずです。1日に数千のドキュメントにラベルを付けるために同様のことをしました。

独自のデータベースがあれば、これらの解決は非常に簡単です。コードを再利用してデータベースを作成し、「見えない」データを処理できます。

于 2013-11-05T03:29:44.873 に答える