多模態商品分類解決方案-深度學習在真實NAVER購物網站的應用

背景

NAVER ShoppingNAVER提供的購物門戶服務。 NAVER Shopping將產品與類別相匹配,以便系統地組織產品並容許更輕鬆地搜索用戶。 固然,天天將超過2000萬個新註冊產品與大約5,000個類別相匹配的任務是不可能手動完成的。git

本文介紹了使用TensorFlow自動匹配NAVER購物產品類別的過程,並解釋了咱們如何解決在將機器學習應用於咱們的服務所使用的實際數據的過程當中出現的一些問題。github

NAVER購物和產品類別

NAVER Shopping是一個購物門戶服務,提供產品搜索,類別分類,價格比較和購物內容,以便用戶能夠輕鬆訪問在NAVER Shopping上註冊的賣家以及NAVER Smart Store中的產品。web

NAVER Shopping系統地組織產品並將產品分類,以便更輕鬆地搜索用戶。類別分爲上類>中類>下類,例如時尚商品>女鞋>平底鞋>休閒鞋。數據庫

目前,NAVER Shopping管理的大約5,000個類別。當用戶輸入關鍵字以在NAVER Shopping上搜索產品時,它識別輸入的關鍵字的類別,而後根據搜索邏輯列出與關鍵字類別匹配的產品。爲了使用戶可以快速找到產品並得到所需的搜索結果,產品應與相應的類別相匹配。服務器

在NAVER Shopping上註冊的賣家在測試文件中建立各類產品信息,包括根據EP(引擎頁面)指南的賣家類別信息,這是NAVER Shopping上產品註冊的數據表格,並將其發送給NAVER Shopping。 在發送給NAVER Shopping的各類產品信息中,賣家使用的類別系統可能會有所不一樣。所以,如上面的類別匹配示例所示,相同的服裝能夠具備很是不一樣的類別信息。架構

爲了經過提升搜索準確度來提升購物搜索質量,有必要將賣家使用的類別與適合NAVER購物的類別相匹配。問題是,一我的不可能逐個將新產品與500個NAVER購物類別相匹配。機器學習

雖然咱們還使用了基於規則的類別匹配,例如賣家的「桌面硬盤」類別如何映射到NAVER Shopping的「HDD」類別,但隨着賣家和產品數量的增長,咱們再也沒法使用基於規則的類別,而且由於NAVER Shopping中的類別常常被重組。相反,能夠經過應用天然語言處理(NLP)和計算機視覺等技術來自動化類別匹配。分佈式

在爲Naver購物服務調整NLP時,不多有事情須要考慮。在大多數狀況下,當使用現成的軟件時,產品的屬性(例如300ml / 500GB)或代碼名稱(例如SL-M2029,PIXMA-MX922)被歸類爲停用詞並在此過程當中被忽略。可是,這些術語對商業服務有意義。爲了分析這些詞,應該定製NLP過程以知足服務的須要。函數

類別自動匹配系統架構

目前,NAVER Shopping在類別自動匹配系統中使用以下架構進行學習和分類。工具

關係數據庫中大約15億條產品信息做爲搜索結果集提供給用戶。監控中心在搜索結果中查找與錯誤類別匹配的產品,並將其與正確的類別相匹配。因爲監控中心匹配的產品的數據由人檢查,所以將其視爲精煉數據,而後從分佈式數據庫中提取爲學習數據。除了精煉數據以外,還經過考慮產品的各類特徵來提取學習數據。

訓練服務器經過從分佈式數據庫讀取數據來訓練模型,並將加強模型分發到推理服務器。推理服務器天天讀取大約2000萬個產品的信息(還沒有與NAVER類別匹配的產品)以匹配類別,而後更新到數據庫。

類別自動匹配模型

NAVER Shopping的類別自動匹配模型分析產品數據的特徵並經過如下過程訓練模型。

  1. 發現產品的特徵:從產品信息中尋找有用的特徵。
  2. 形態分析:從產品信息中分析和提取術語。
  3. Word嵌入:將產品功能轉換爲矢量。
  4. CNN-LSTM 模型 - 產品名稱:將CNN-LSTM型號應用於產品名稱。
  5. MobileNetV2 - 產品圖片:將MobileNetV2模型應用於產品圖片。
  6. 多輸入模型:經過產品中的各類數據鏈接模型以提升準確性。

產品特徵

下圖中標記的部分是用於自動匹配類別的特徵。

從上面的例子中,產品名稱沒有提到它是女性的T恤仍是其餘類別的T恤。可是,經過查看圖像很容易看到,「產品名稱」和「圖像」是用戶在購買產品時首先看到的元素。當從搜索結果中找到具備不正確類別匹配的產品時,監控中心應仔細查看產品名稱和圖像,以將產品移動到正確的類別。

所以,產品名稱和圖像也用做類別自動匹配的主要特徵。不只產品名稱和圖像,並且賣家使用的類別,產品的最低價格,品牌,製造商,原始圖像比例也被用做賣家提供的數十條產品信息中的附加特徵。

形態分析

用做主要特徵的產品名稱具備如下特徵。

  1. 產品名稱由名詞組成;
  2. 混合韓語和英語的產品名稱;
  3. 包含組合字母和數字的產品/型號代碼的產品名稱;
  4. 產品名稱包含用於描述產品概念的詞語(例如寬鬆合體);
  5. 沒有空格分隔的產品名稱。因爲韓國人的特色,即便沒有空格分隔也能夠理解意義(漢語也具體有該特色)。

爲了使產品名稱具備適合購物領域的含義,描述概念的單詞、模型代碼和產品屬性不該分開,而不帶空格的產品名稱則以術語單位提取

詞嵌入

咱們嘗試使用帶有維基百科內容的預訓練矢量,但認爲產品數據的特徵沒有用於構建詞嵌入。 所以,咱們使用Word2vec方法直接構建了包含產品數據特徵的字嵌入。是否正確構建嵌入向量(Word2vec的結果)可使用TensorFlow的可視化工具TensorBoard進行探索。

CNN-LSTM Model — 產品名稱

經過按如下順序應用CNN-LSTM模型來解析產品名稱,即文本數據。

  1. CNN模型:從產品名稱中提取特定文本區域的功能。
  2. LSTM模型:根據長產品名稱中的附近單詞識別當前單詞的含義。
  3. CNN-LSTM模型:CNN提取的局部特徵依次集成在LSTM中。

Dimensional Sentiment Analysis Using a Regional CNN-LSTM Model

CNN濾波器能夠在圖像處理中提取特定圖像區域的特徵,並在文本處理中提取特定文本區域的特徵。在NAVER Shopping的產品名稱中,您能夠看到出現的產品的主要關鍵字,不管位置如何。

一般,文本中的單詞的含義(例如,反諷)基於附近的單詞(單詞以前和以後)來理解。既然如此,LSTM模型被稱爲適合於數據處理的模型,如本文中那樣順序出現。在NAVER Shopping的產品名稱中,您能夠看到僅在查看周圍的關鍵字時才能進行分類的產品名稱。

CNN-LSTM模型表現出更優越的性能。這是一種經過輸入字嵌入(矢量)來提取局部特徵而後使用LSTM模型順序地集成特徵來經過卷積層和最大池層的方法。

CNN模型能夠經過將輸入數據劃分爲多個區域來提取特定的本地信息,可是不能肯定長句中的單詞之間的依賴性。經過將CNN模型與LSTM模型組合以在句子中順序地整合本地信息,能夠解決這些限制。

MobileNetV2 - 產品圖片

MobileNet是一種可用於圖像分類和對象檢測的模型。

與VGG相比,MobileNet的準確性類似。可是,與VGG相比,MobileNet的計算和參數數量爲1/10,所以適用於沒有GPU設備或須要實時性能的服務的服務器。

多輸入模型 - 產品混合信息

對於類別的自動匹配,能夠單獨訓練使用產品名稱的模型和使用產品圖像的模型。可是,因爲產品名稱和圖像是單一產品的屬性,所以集成訓練實際上提升了模型的準確性。

若是您不只對產品名稱和圖像進行綜合培訓,還要對品牌,製造商,原始圖像比例,業務運營中使用的類別以及產品的最低價格進行綜合培訓,以下圖所示,而後能夠訓練與產品相關的屬性的相關性。

類別自動匹配和解決方案中發現的問題

將類別自動匹配應用於實際服務數據時發現了一些問題。

特徵可視化

在應用類別自動匹配以前,必須有一種方法來驗證匹配結果是否已正確分配。若是您上傳適合的特徵向量和標籤到TensorFlow’s embedding projector,則能夠輕鬆檢查類別分佈和類別之間的距離。經過單擊一個點(類別),您能夠看到該點附近的點(相似類別)是什麼。若是該點位於可視化結果中的附近,但根本不在相關類別中,則表示它是具備錯誤匹配機率的類別。

數據規範化

時裝>女裝>連衣裙的產品數量比率,NAVER購物的熱門類別,生活/健康> DVD>文化/紀錄片,不是一個流行的類別約1000:1,使數據高度不平衡。若是使用像這樣的不平衡產品分佈中的學習數據進行訓練,則可能致使問題,其中適當的結果偏向具備更多產品的類別以提升總體準確性。 左下圖是應用數據標準化以前,按類別的產品分佈顯示索引函數的形狀。所以,咱們將如下日誌函數應用於數據規範化的學習數據:

經過應用數據規範化,產品數量按類別均勻分佈,如右圖所示,而且已經解決了偏向流行類別的適當結果的問題。

反映趨勢

在線購物中心的產品壽命很短,對趨勢很是敏感。特別是,因爲每一個季節都會生產服裝等產品,所以存在產品不斷被刪除和創造的趨勢。例如,僅使用文本學習的模型將發現僅在添加新趨勢產品時讀取單詞時難以理解其類別,例如「Anorak」。學習文本和圖像的模型能夠經過使用圖像添加一個名爲「Anorak」的新產品時將其分類爲夾克。

在這種狀況下,咱們應該分析長期準確性,以下圖所示,以驗證模型是否可以繼續準確地預測,並讓它跟隨產品的趨勢,同時不斷更新學習數據和模型以知足趨勢。

訓練數據管道

一般,爲了更新學習數據,咱們必須從HDFS中提取SQL語法,將其保存爲學習服務器中的文件,而後在代碼中加載數據並從新訓練模型。在這種通用方法中,隨着學習數據變大,保存爲文件和加載所花費的時間變得更長,以及佔用服務的大量磁盤空間,使其效率低下。

TensorFlow提供了一種使用tf.data管道直接從HDFS讀取學習數據的方法。當使用該Dataset.prefetch()方法時,以下面的示例所使用的那樣,因爲它以塊的形式讀取數據,所以它能夠在學習GPU中的第一個數據的同時在CPU中準備第二個數據,從而減小資源的空閒狀態。

模棱兩可的分類

NAVER Shopping的類別是爲了方便用戶而構建的,因爲同名的許多較低類別,很難區分上層類別。因爲容許模型學習並非一個好的結構,所以有必要選擇須要額外學習的類別來改變模型易於學習的結構,或管理標準類別(例如UNSPSC,聯合國標準產品和服務代碼)在商業環境中分開並讓它學習。

賣家提供的信息不正確

在某些狀況下,賣方經過將產品類別與NAVER購物類別進行第一手匹配來發送產品信息。該信息也是用於學習數據的條件,由於它是由人匹配的數據。可是,有時用於學習的主要產品元素包含錯誤。爲了從學習數據中刪除錯誤數據,咱們應該使用諸如經過選擇發送高質量產品信息的賣家來增長學習重量的方法。

總結

咱們已經討論了在NAVER Shopping中運行的類別自動匹配模型以及相關問題和解決方案。首先,咱們從產品中發現了有用的特徵,在文本數據的狀況下分析了語素,並使用了CNN和LSTM模型。對於圖像數據,咱們使用MobileNet模型開發了類別自動匹配模型。

此外,咱們還研究了使用TensorBoard的數據可視化,以及如何使用數據規範化和TensorFlow管道。

在提供這個項目的過程當中,咱們可以更全面地理解機器學習和深度學習的問題,在識別存在的其餘問題的過程當中,而不是僅僅考慮模型的準確性,將模型應用於實際服務環境。

目前,自動匹配的準確率約爲85%。咱們的目標是經過使用各類方法繼續改進模型以實現更高的準確性,例如產品名稱的日期細化,圖像特徵提取的效率和精確的驗證集構建。

相關文章
相關標籤/搜索