作者:閑魚技術-吳白
引言
商品的資訊結構化程度在某種意義上來說決定導購效率的天花闆。閑魚商品結構化和淘寶/天貓最大的差別在于閑魚賣家都是個人使用者,無論是專業程度還是行動力遠不及淘寶賣家。為了不阻礙商品釋出,閑魚一直倡導輕釋出,理想狀況使用者拍完照片輸入一段描述即可完成釋出。但是這和商品結構化相悖:賣家輸入資訊越多,越有利于商品結構化,但是使用者釋出商品的意願就會越低。
我們要做的就是在不阻礙使用者釋出商品的前提下提高商品結構化程度。
結構化曆程
閑魚商品結構化的探索一直沒有停過。目前為止,可以劃分出四個階段
- 2016年及以前:利用文本挖掘算法,從使用者輸入的标題/描述中提取出結構化資訊。
- 2017年:文本屬性依賴使用者輸入。遺憾的是大部分閑魚使用者輸入相當"簡潔"。于是我們把目光轉向圖檔:1)從商品圖檔中提取結構化資訊。2)根據商品圖檔預測商品類目。
- 2018年:2018年以前閑魚類目處于刀耕火種的原始狀态,釋出時需要選擇商品應該在哪個類目之下。是以我們建立了閑魚管道類目,将類目映射到管道類目。另一個嘗試就是将閑魚商品直接與天貓的SPU(Standar Product Unit,标準産品單元)映射。
- 2019年:啟動了哥倫布項目,進一步挖掘圖像潛力。通過圖像相似度識别,直接将閑魚商品和淘寶/天貓商品進行關聯,通過對淘寶同款的結構化資訊清洗得到閑魚商品的結構化資訊。
目前結構化政策
目前圍繞着算法,我們在商品釋出的各個環節都提供了同款關聯的入口:從智能釋出到釋出完成之後的算法識别以及售賣體系。
現階段閑魚商品結構化圍繞着算法,在商品釋出的各個環節都提供了同款關聯的入口:從智能釋出到釋出完成之後的算法識别以及售賣體系。
- 端側智能釋出。商品釋出過程中,充分利用端側計算能力,将商品結構化的産品問題,轉變成同款商品比對這樣的技術問題。模糊檢測,相似度檢測,主體識别這些算法都是在端側實作的。
- 算法圖像識别。商品釋出完成後,借助圖像識别算法,對于精度較高的識别結果直接和商品建立映射關系。
- 售賣項目。當圖像識别算法隻能縮小範圍而無法精确給出結果時,借助于售賣任務體系,可以讓使用者選擇完成同款關聯。
通過同款關聯,閑魚商品結構化往前走了一大步,使得閑魚商品結構化的比例有将近47%的提升。盡管如此閑魚商品結構化現狀仍不容樂觀,主要展現在
- 同款覆寫率。覆寫雖然提升比例較大,但離目标還有一定的距離。
- 同款精度。1)部分類目精度低,比如手機和手機殼在圖像上相似,但實際是不同的商品。2)整體精度離目标仍有較大gap。
- 結構化資訊應用。目前隻應用在了搜尋場景的商品擴招回,結構化資訊的應用仍有待充分挖掘。
未來的打法
目前結構化政策面臨着一個問題:當算法能力達到上限後,如何繼續推進結構化覆寫&精度提升?目前為止起碼有三種手段
- 算法多模态。集團有着衆多在各自領域深耕的圖像算法團隊,比如在女裝等垂直類目上沉澱深厚的專家系統。融合多算法團隊能在一定程度上提升算法能力的天花闆。
- 文本識别。在下面的case中,單純憑借圖檔無法識别是否是同款,因為圖像确實非常相似,這個時候就需要文本的輔助。
- 輸入輔助。文本識别模型依賴使用者的輸入。輸入輔助引導使用者輸入更多高品質文本的同時降低使用者描述成本。另一方面輸入輔助也可以承擔部分屬性補全的能力。
然而在現階段以算法為中心的工程體系中,上面的政策應用上會面臨很多痛點
- 如何定義結構化。本質上是結構化标準的問題,一方面相同的商品算法識别出來的結果千差萬别,相同的商品不同算法識别出來的結果最終如何歸一化成相同的同款。另一方面對于算法覆寫不到的領域如何通過其他手段來完成結構化。
- 算法多模态接入成本飙升。如何抹平多算法之間的差異,算法對大盤的貢獻,各個算法之間的效果快速上線對比?
- 輸入輔助。輸入輔助需要解決2個問題:1)輸入聯想素材池來源。2)使用者體驗,輸入輔助對實時響應有着非常高的要求。
這些問題大部分本質還是工程問題(結構化定義,多算法融合,輸入輔助等)。是以轉換一下結構化思路:以算法為中心轉向以工程為中心,把算法當作能力補齊插件。結構化圍繞着屬性補齊做如下抽象
總體政策
總結起來做這幾件事
- 閑魚vid體系重新定義結構化标準。
- 算法多模态接入,提升覆寫&精度。
- 引入規則引擎,服務于輸入輔助等場景。
- 結構化資料持久化&特征計算,提升搜尋推薦等導購場景的比對效率。
重新定義結構化
定義結構化的标準,一方面可以抹平多算法接入帶來的差異,另一方面對于拓展算法邊界也有重要意義。是以重新給商品結構化下一個定義:如果一個商品的關鍵屬性都有,那我們認為這個商品就是結構化的。
這套标準稱為閑魚vid(想好名字前暫且叫vid)體系,基于閑魚管道類目+屬性組成。這套标準有兩種方式生成
- 天貓spu體系。天貓的spu營運到現在,資料體系已經較為完善,标準品類和閑魚有很大重疊部分,這部分可以直接實作spu互通。
- 對于非标品,從需求側分析而來。通過搜尋推薦等導購場景反向分析可以拿到目前買家關心的品類+屬性。這部分可以補齊SPU缺失的資料。
基于這套标準體系,可以很好的解決多算法接入問題:直接以vid體系對應的種子商品集為候選池,實作同款挂靠。除此之外,算法沒法覆寫的商品(圖文品質較差)如果能确定類目和屬性,也能實作vid挂靠。
算法多模态
工程上主要解決算法接入效率問題。當從商品釋出到最後的導購主鍊路搭建完成,算法以插件化的方式運作在主鍊路之上。
這裡多模态主要包括兩方面:1)識别能力從圖像擴充到文本,圖文結合。2)算法模型從單團隊拓展到多團隊,能力互補。
解決的問題主要包括
- 屏蔽資料差異。不同算法資料産生方式的差異,實時/準實時/離線。
- 資料融合。算法快速上線/資料效果對比/結構化資訊入引擎。
- 算法結果對齊。根據定義的結構化标準,抹平算法結果差異。如果識别出的同款商品本質上是同一個商品,那多算法的識别結果最終應當能歸一化。
輸入輔助
輸入輔助需要解決兩個問題:
- 聯想素材池來源:使用者輸入具有持續時間很短的特征,是以在較短時間内輔助使用者進行有價值的輸入很關鍵。
- 使用者體驗:嚴苛的實時性要求。使用者輸入是一個連續且對時效要求極高的過程,所有資料的互動需在極短時間内完成。
第一個問題很好解決,素材池提煉可以包括:
- 搜尋逆向分析産出。根據使用者query統計分析,可以得到買家關心的屬性。
- 算法産出:算法對動銷高的商品進行特征提取得到,并歸到對應的管道類目上。
- 營運行業經驗産出。
第二個問題最好的解法肯定是把所有的邏輯全部下放到端上本地執行避免響應問題。然而不可能把所有的邏輯放到端上,比如需要算法介入時,我們不可能把複雜的算法模型運作在端上。是以把素材池分成兩部分:
- 需要算法介入的邏輯放在服務端來完成。
- 其餘邏輯選擇适當時機下發給端上執行,這部分需要保證良好的擴充能力。
通過對輸入輔助的執行邏輯進行抽象發現其存在形式類似于規則引擎中的規則。在規則引擎中規則一般包含三要素:事實,規則,模式。
這裡的事實對應着使用者的輸入,module對應着單個判定條件,rule則對應着條件判定以及對應的action。以營運的行業經驗産出為例,手機類目下有兩個很重要的屬性:1)是否維修過。 2)是否過保。那這條經驗可以翻譯成兩條規則:1)IF 類目=手機 AND 屬性不包含 是否維修過 THEN 引導使用者選擇。2)IF 類目=手機 AND 屬性不包含 是否過保 THEN 引導使用者選擇。
當執行邏輯被抽象成若幹條規則時,就可以在适當的時機下發到用戶端側本地執行。整個流程抽象如下
當新的營運經驗或者分析資料産生時,通過翻譯成規則可以很好的實作輔助輸入的擴充性。通過規則的共享,用戶端的邏輯可以無感覺的在服務端執行。
上線效果
商品結構化的目标圍繞着結構化資訊的覆寫&精度進行,目前已經上線了部分功能(文本同款以及算法多模态),從資料上看取得了不錯的效果:1)算法多模态接入能對結構化覆寫占比8%絕對提升。2)文本同款正在分桶測試中,從分桶資料來看覆寫上漲13%絕對值提升。
展望
結構化的願景是在不影響釋出體驗的前提下完成商品結構化工作。理想情況下隻需要一張照片,一段描述就能完成商品釋出,其餘工作統統移交給算法以及工程同學。當圖像和文本内容能被充分挖掘了解,标簽成色甚至類目這些都可以去掉,使用者隻需要點确認釋出按鈕即可。我們會不斷朝着這個目标努力。