さまざまなサプライヤーの製品の価格を比較する簡単なプログラムを作成しようとしています。異なるサプライヤーは、同じ製品を異なるものと呼ぶ場合があります。
たとえば、次の 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 など) があることを望んでいましたが、できませんでした。具体的なものを見つけてください。)