沃爾瑪的產品知識圖譜

人工智能遇見磐創 發佈 2020-06-20T08:33:50+00:00

介紹電子商務目錄是通過從賣家、供應商/品牌獲取數據而創建的。合作夥伴(銷售商、供應商、品牌)提供的數據往往不完整,有時會遺漏我們客戶正在尋找的關鍵信息。儘管合作夥伴遵循一個規範(一種發送產品數據的約定格式),但在標題、描述和圖像中隱藏著大量數據。

介紹

電子商務目錄是通過從賣家、供應商/品牌獲取數據而創建的。合作夥伴(銷售商、供應商、品牌)提供的數據往往不完整,有時會遺漏我們客戶正在尋找的關鍵信息。儘管合作夥伴遵循一個規範(一種發送產品數據的約定格式),但在標題、描述和圖像中隱藏著大量數據。除了我們的合作夥伴提供的數據外,網際網路上還有許多非結構化數據,如產品手冊、產品評論、博客、社交媒體網站等。

沃爾瑪正致力於構建一個零售圖譜(Retail Graph),捕捉有關產品及其相關實體的知識,以幫助我們的客戶更好地發現產品。它是一個產品知識圖譜,可以在零售環境中回答有關產品和相關知識的問題,可用於語義搜索、推薦系統等。本文進一步闡述了什麼是零售圖譜、如何構建零售圖譜、圍繞圖模型的技術選擇、資料庫和一些用例。

沃爾瑪的零售圖譜是什麼

零售圖譜捕獲了零售世界中存在的產品和實體之間的連接。實體是存在的物體、事物、概念或抽象,例如客廳、野生動物攝影、顏色、農舍風格。我們關注的實體大致有兩種:抽象的和具體的。前者幫助我們回答諸如「夏日游泳池派對用品」、「農家客廳家具」、「野生動物攝影鏡頭」之類的問題,而後者幫助我們回答諸如「藍色牛仔褲褲子」、「木製餐桌」之類的問題。該圖譜還將產品之間的關係捕獲到兩個類別,替代品和補充品(附件、兼容產品等)。它還試圖將抽象概念(如亮色)映射到具體的產品屬性。

在研究過沃爾瑪的產品目錄後,我們知道在構建這樣一個系統時會遇到一些挑戰。最大的挑戰是缺乏產品數據的唯一權威來源。此外,我們的目錄中也有來自我們合作夥伴的錯誤數據。所以,我們首先:

  • 建立二分圖,一邊是生成的,另一邊是相關實體
  • 利用我們現有的分類方法在發現新的實體時豐富實體。
  • 連接產品與實體。

構建零售圖譜

在較高層次上,我們主要關注以下關係來構建我們的零售圖譜:

  1. 產品<->實體
  2. 產品<->產品(大致分為替代品和補充品)

1.產品<->實體

為了構建產品到實體圖,我們首先從產品內容中提取實體,然後將它們連結到抽象或具體的概念,形成三元組。我們添加了一個管理層,允許人們在一定的置信水平下得到有效的三元組,以保持高質量標準。

a.實體提取

實體提取模塊的目標是從產品標題和描述中提取「實體」。產品描述內容多種多樣。有時內容很冗長,有時可能是要點中的小短語。考慮到這一點,我們開發了兩種從產品內容中提取實體的算法:

i.基於NLP的模型

我們首先從產品標題、描述和其他元數據中提取實體。這是通過建立一個語言模型來實現的,該模型利用了Standford Core NLP提供的POS標記。這個模型更適合我們的用例,因為產品標題和描述通常是以項目符號的形式出現的,以產品亮點為特徵,而不是構造良好的句子。下面是我們基於NLP的模型的輸出示例。

ii.啟發式模型

我們採取的另一種方法產生了良好的結果,就是使用規則來解析描述。賣家/供應商使用某些格式(HTML標記)來突出產品的關鍵特性。我們通過對關鍵信息應用一組啟發式方法,建立了關於如何解析和提取關鍵信息的規則。以下是示例產品說明及其輸出:

在生產中,我們可以同時使用上述兩種。這可以給我們一個很好的平衡,啟發式模型非常準確而NLP模型給我們更大的覆蓋。

b.實體連結

一旦實體被提取出來,我們需要識別它們所代表的內容以及它們與產品的關係。例如,對於「中世紀沙發」這樣的實體,我們必須確定在沙發的上下文中,中世紀代表什麼。這是通過一個稱為實體連結的過程來實現的,在這個過程中,我們試圖找到提取的實體與其產品之間的關係。實體連結模塊的另一個重要功能是消除給定上下文的歧義。例如,「cherry(櫻桃)」可以指蠟燭的香味,果汁的香味,家具的香味,布料的顏色,或者櫻桃這種水果。這裡所指的上下文通常是產品類別或產品類型。

連結器將上下文(產品類型)和實體作為輸入,並生成一個三元組(主語-賓語謂詞)。由於產品數據沒有一個準確的真實來源,連接實體的任務變得很困難。我們首先從一組最暢銷的產品(我們假設最暢銷的產品有更準確的數據)創建一個產品類型、屬性名和屬性值三元組的字典。第一步是使用這個字典,在上下文不可知的時候確定可能的候選列表。然後運行第二個模型,通過使用上下文對它們進行排序。

對於上面提取的實體,連結器輸出如下所示:

c.實體管理

作為實體提取的一部分,也會提取大量的「噪聲」。我們使用現有的產品元數據構建了一個字典,作為將提取的實體分類為噪聲或「未知」概念的參考。然後,我們添加了一個管理模塊,該模塊可以使用啟發式和手動標記的組合來消除噪聲。這確保了進入知識圖譜的數據總是乾淨可靠的。

2.產品<->產品

為了識別給定產品的替代品,我們同時利用文本數據和圖像數據。在家具、服裝等產品類別中,視覺相似性在識別替代品方面起著重要作用。我們為我們的產品構建了圖像嵌入和文本嵌入,並將它們放入FAISS索引中(FAISS是Facebook開發的一個高效相似性搜索和向量聚類庫)。對於每個產品,我們從文本嵌入和圖像嵌入兩方面生成其KNN(k近鄰),以得到候選集。在那之後,我們應用一個類別特定的排名邏輯來得出最終的結果。例如,在家具類別的情況下,「家居裝飾風格」(中世紀/沿海/農舍)在確定可替代性方面起著關鍵作用。

架構

當我們開始構建零售圖譜的旅程時,我們不太確定系統的最終狀態會是什麼樣子。我們只知道我們需要一個組件來提取實體,連結它們,然後存儲它們。考慮到我們產品目錄的規模,我們知道每一個都必須擴展到100億個產品。此外,還需要快速試驗、構建並快速疊代以獲得反饋。我們決定採用進化架構原則來構建我們的系統(https://evolutionaryarchitecture.com)。

一個進化的體系結構支持增量的、有指導的變化,這是跨越多個維度的首要原則。

實體提取和連結被構建為簡單的庫,然後作為REST風格的API公開給其他系統集成。我們還在實體提取和實體連結器庫之上構建了Hive udf,以便在我們的Hadoop集群上按比例運行它們。

數據處理管道

我們有兩條管道-一條用於生成產品<->實體,另一條用於生成產品<->產品。它們定期在我們的數據平台團隊管理的Hadoop集群上運行。以下是對數據處理管道的高度概述:

圖數據模型和圖資料庫

在聚合到LPG(標記屬性圖)之前,我們已經為讀寫用例測試了LPG和RDF圖數據模型。在對內部的圖形資料庫進行了一些實驗之後,我們縮小了對圖數據模型的範圍。我們與Azure團隊密切合作,為我們提供Java支持,以實現數據的大容量接收。對於圖形遍歷,我們使用gremlin。

沃爾瑪內部應用程式

為沃爾瑪產品目錄的大小構建產品知識圖譜需要相當長的時間。我們在構建這個模型時,一次只使用一個類別,然後學習並擴展到其他類別。我們開始這項工作的重點是家庭類和花園類。我們在沃爾瑪產品頁面上做了一個a/B測試,與使用產品關係的商品推薦團隊一起工作。

我們的電子商務語義搜索團隊正與我們緊密合作,利用零售圖譜中的關係構建一個新的查詢理解系統。我們目前正在運行交錯測試,A/B測試,以收集客戶對我們的新語義搜索實現的反饋。

結尾

很難在一篇文章中詳細介紹零售圖譜的各個細節,但我希望這能提供一個不錯的概述。我們還有很長的路要走。像這樣的計劃需要快速的疊代、大量的實驗。我很幸運,有一個偉大的工程師和數據科學家的團隊來合作這個有趣的項目!

關鍵字: