2013-11-04 77 views
13

我想寫一個簡單的程序來比較來自不同供應商的產品的價格。 不同的供應商可能會調用相同的產品不同的東西。比較和匹配來自不同的商店/供應商的產品名稱

例如,下面的三個字符串指的是同一產品:

  • A2全脂瓶2升
  • A2牛奶全脂2L
  • A2全脂2L

或下面的兩個字符串是相同的產品:

  • Ambi Pur空氣清新劑汽車航程8mL。新鮮的香草花芬芳。 - 1各
  • 香必飄空氣清新劑航程主8毫升

此外 - 一些產品是不一樣的,但是相似的(例如,全脂2L牛奶可涵蓋各種類似產品。)

我對每種產品的唯一信息是標題和價格。

目前有哪些推薦的技術匹配產品字符串這樣嗎?

從我的谷歌搜索和閱讀其他SO線程,我發現:

  • 有人建議使用貝葉斯過濾技術。
  • 一些人建議對所有產品字符串進行特徵提取。因此,您可以從產品中提取諸如品牌(例如「A2」),產品(「牛奶」)和產能(「2L」)等產品,然後在產品之間創建距離向量,並使用類似二元分類器的產品來匹配產品(SVM被提及)。但是,我不確定如何在沒有大量規則或正則表達式的情況下實現這一目標?我假設可能有更聰明的無監督學習方法來攻擊這個問題?價格可能是另一個我們可以用來計算距離向量的「特徵」。
  • 但是,有些人推薦使用神經網絡方法,但在這裏我無法從具體的代碼或例子中找到很多。
  • 其他推薦使用字符串相似度算法,如Levenshtein距離或Jaro-Winkler距離。

你會使用上述技術之一,還是你會使用不同的技術?

另外,有沒有人知道任何示例代碼,甚至是庫的這種問題?我似乎無法找到任何。 (例如,我看到一些人在計算大型數據集的Jaro-Winkler距離時遇到了性能問題,我希望可能會有一個分佈式算法實現(例如Mahout),但是並不是能夠找到具體的東西。)

+0

你需要管理多少種不同的產品(球場評估)? – Blacksad

+0

這是一家超市,所以有相當多的物品 - 我估計數以萬計? – victorhooi

+0

那麼所有的建議是好的,但監督。而監督學習上萬的班級將是地獄......我想不出任何無監督的方法。 – Blacksad

回答

5

你會使用上述技術之一,還是你會使用不同的技術?

如果我真的這樣做,我不會使用太多的機器學習。我相信大多數大公司都有品牌和產品名稱的數據庫,並用它來相當容易地進行匹配。一些數據衛生可能是需要的 - 但它不是ML問題。

如果你沒有那個數據庫,我會說簡單。將所有內容轉換爲特徵矢量並進行最近鄰搜索。用它來創建一個工具來幫助你創建一個數據庫。 IE:你自己把第一個「A2全脂牛奶2L」標記爲「牛奶」,然後看看最近的鄰居是不是牛奶。給自己一個快速標記「是」和「需要評論」的方法,或者一些類似的選項。

對於簡單的數據,例如您建議的,它將在90%的時間內工作 - 您應該能夠輕鬆地完成數據。我已經做了類似的工作,在一天內標註幾千個文檔。

一旦你有自己的數據庫,解決這些應該是非常簡單的。您可以重新使用代碼來創建數據庫來處理「看不見」的數據。

相關問題