【機器學習PAI實踐十二】機器學習實現雙十一購物清單的自動商品標籤歸類

李博Garvin發表於2017-11-01

背景

雙十一購物狂歡節馬上又要到來了,最近各種關於雙十一的爆品購物列表在網上層出不窮。如果是網購老司機,一定清楚通常一件商品會有很多維度的標籤來展示,比如一個鞋子,它的商品描述可能會是這樣的“韓都少女英倫風繫帶馬丁靴女磨砂真皮厚底休閒短靴”。如果是一個包,那麼它的商品描述可能是“天天特價包包2016新款秋冬斜挎包韓版手提包流蘇貝殼包女包單肩包”。

每個產品的描述都包含非常多的維度,可能是時間、產地、款式等等,如何按照特定的維度將數以萬計的產品進行歸類,往往是電商平臺最頭痛的問題。這裡面最大的挑戰是如何獲取每種商品的維度由哪些標籤組成,如果可以通過演算法自動學習出例如 地點相關的標籤有“日本”、“福建”、“韓國”等詞語,那麼可以快速的構建標籤歸類體系,本文將藉助PAI平臺的文字分析功能,實現一版簡單的商品標籤自動歸類系統。

資料說明

資料是在網上直接下載並且整理的一份2016雙十一購物清單,一共2千多個商品描述,每一行代表一款商品的標籤聚合,如下圖:

我們把這份資料匯入PAI進行處理,具體資料上傳方式可以查閱PAI的官方文件:https://help.aliyun.com/product/30347.html

實驗說明

資料上傳完成後,通過拖拽PAI的元件,可以生成如下實驗邏輯圖,每一步的具體功能已經標註:

下面分模組說明下每個部分的具體功能:

1.上傳資料並分詞

將資料上傳,由shopping_data代表底層資料儲存,然後通過分片語件對資料分詞,分詞是NLP的基礎操作,這裡不多介紹。

2.增加序號列

因為上傳的資料只有一個欄位,通過增加序號列為每個資料增加主鍵,方便接下來的計算,處理後資料如下圖:

3.統計詞頻

展示的是每一個商品中出現的各種詞語的個數。

4.生成詞向量

使用的是word2vector這個演算法,這個演算法可以將每個詞按照意義在向量維度展開,這個詞向量有兩層含義。

  • 向量距離近的兩個詞他們的真實含義會比較相近,比如在我們的資料中,“新加坡”和“日本”都表示產品的產地,那麼這兩個詞的向量距離會比較近。
  • 不同詞之間的距離差值也是有意義的,比如“北京”是“中國”的首都,“巴黎”是“法國”的首都,在訓練量足夠的情況下。|中國|-|北京|=|法國|-|巴黎|

經過word2vector,每個詞被對映到百維空間上,生成結果如下圖展示:

5.詞向量聚類

現在已經產生了詞向量,接下來只需要計算出哪些詞的向量距離比較近,就可以實現按照意義將標籤詞歸類。這裡採用kmeans演算法來自動歸類,聚類結果展示的是每個詞屬於哪個聚類簇:

結果驗證

最後通過SQL元件,在聚類簇中隨意挑選一個類別出來,檢驗下是否將同一類別的標籤進行了自動歸類,這裡選用第10組聚類簇。

看一下第10組的結果:

通過結果中的“日本”、“俄羅斯”、“韓國”、“雲南”、“新疆”、“臺灣”
等詞可以發現系統自動將一些跟地理相關的標籤進行了歸類,但是裡面混入了“男士內褲”、“堅果”等明顯與類別不符合的標籤,這個很有可能是因為訓練樣本數量不足所造成的,如果訓練樣本足夠大,那麼標籤聚類結果會非常準確。

其它

使用工具的地址:https://data.aliyun.com/product/learn
與作者聯絡,關注我的微信公眾號:凡人機器學習

相關文章