本文根據轉轉張青楠老師,在DataFun AI+ Talk中所分享的《二手電商知識圖譜構建以及在價格模型中的應用》編輯整理而成。
一、知識圖譜概述
這次的分享主要從以下四個部分:知識圖譜概述、知識圖譜構造、轉轉二手電商知識圖譜、在價格模型中的應用。
1.1 什麼是知識圖譜
知識圖譜是谷歌在2012年提出來的,最初的目的是優化其搜尋引擎。在現實世界中是存在很多的實體的,各種人、物,他們之間是相互聯繫的。知識圖譜就是對這個真實世界的符號表達,描述現實世界中存在的一些概念,以及它們之間的聯繫。具體來說是一個具有屬性的實體,通過關係連接而成的網狀知識庫。
1.2 知識圖譜的基本組成
在電商的知識圖中,包括用戶、商家、商品,他們帶有各自的屬性,彼此之間又互相聯繫。知識圖譜的基本組成三要素:實體、屬性、關係。實體-關係-實體 三元組;實體-屬性-屬性值三元組,在電商的知識圖譜中,用戶和商品都是實體。
在知識圖譜中,有一類特殊的實體叫做本體,也叫做概念或語義類。它是一些具共性的實體構成的集合。比如說,比爾蓋茨和賈伯斯都是人,微軟和蘋果都是公司。
二、知識圖譜構建
目前的知識圖譜分為兩類。一類是開放域的知識圖譜,另一類是垂直領域的知識圖譜。比如谷歌為搜尋引擎所建立的知識圖譜就屬於開放域的。垂直領域的知識圖譜,比如說金融的,電商的。
首先就是要先處理數據。網際網路上的數據基本上都是結構化的,非結構化的和半結構化的。結構數據一般就是公司的業務數據。這些數據都存儲到資料庫裡,從庫裡面抽取出來做一些簡單的預處理就可以拿來使用。半結構化數據和非結構化數據,比如對商品的描述,或是標題,可能是一段文本或是一張圖片,這就是一些非結構化數據了。但它裡面是存儲了一些信息的,反映到的是知識圖譜裡的一些屬性。所以需要對它裡面進行一個抽取,這是構建知識圖譜中比較費時費力的一個工作。
從數據裡需要抽取的其實就是之前所提到的實體、屬性、關係這些信息。對於實體的提取就是NLP裡面的命名實體識別。這裡相關的技術都比較成熟了,從之前傳統的人工詞典規則的方法,到現在機器學習的方法,還有深度學習的一些使用。比如說,從一段文本裡面,我們提取出來比爾蓋次這個實體以及微軟這個實體,然後再進行一個關係提取。比爾蓋次是微軟的創始人,會有這麼一個對應的關係。另外還有屬性提取,比如比爾蓋茨的國籍是美國。在這些提取完成之後都是一些比較零散的信息,然後在再加之前用結構化信息所拿到的東西以及從第三方知識庫裡面所拿到的信息做一個融合。
另外還需要做的是實體對齊和實體消歧。
關於實體對齊。舉例來說,比爾蓋茨這四個字是中文名稱,Bill Gates是他的英文名稱,但其實這兩個指的是同一個人。由於文本的不一樣,開始的時候導致這是兩個實體。這就需要我們對它進行實體對齊,把它統一化。
另外是實體消歧。舉例來說,蘋果是一種水果,但是在某些上下文裡面,它可能指的是蘋果公司。這就是一個實體歧義,我們需要根據上下文對它進行實體消歧。
在完成了以上步驟之後,接下來就是本體抽取。比如之前提到的微軟和蘋果,它們的實體是公司。從文本裡面可能無法直接提取出來,它們是公司。那麼需要一些方法對他們進行抽取。然後搭建出本體庫,比如說公司是一個機構,它是有這種上下流的關係的。對於平級的也需要計算一個他們的相識度,比如比爾蓋茨和賈伯斯在實體層面,他們是比較相似的。他們都屬於人這個實體。他們跟公司的差別還是挺大的,所以需要一個相似度的計算。
在以上步驟完成之後需要對知識庫進行質量評估,這是一個避免不了的人工步驟。在做完質量評估以後,最終形成知識圖譜。形成知識圖譜以後,有些關係可能是無法直接得到的,然後需要進行知識推理,這可以對知識圖譜進行擴展。比如,貓是貓科動物。貓科動物是哺乳動物。這就可以推理出來,貓是哺乳動物。但是這個推理也不是隨便就可以推出來的。比如,比爾蓋茨是美國人,比爾蓋茨創建了一個公司,但這個公司並不一定是美國的。
三、二手電商知識圖譜
主要從以下四個部分闡述:業務理解、知識圖譜設計、算法、開發。
3.1 二手電商特性
搜索優化和個性化推薦是我們最開始所做的初衷。主要去做一些意圖識別或是自動化查詢這些。個性化推薦這裡,我們利用知識圖譜做一些召回源以及推薦排序模型特徵。在電商運營這裡,主要是幫助後臺運營組貨。在垂直業務這塊,主要是做一些價格模型和供需關係分析。
二手電商不同於一手電商。首先就是數據源的質量。二手電商平臺上面的商品都是個人發布。商品的描述信息不像商家那樣完整。我們提供給他們的可選項,也都不一定會被完整的填寫。
第二點就是數據稀疏的問題。二手電商的商品大多都是無標品。相比於一手店上電商來說,數據較為稀疏。
第三點是具備一些二手屬性。二手店電商的商品都有很多二手屬性。比如說成色、外觀、屏幕劃痕、是否換屏、是否翻新等等。
最後是價格差異。商品進行折舊以後,他們的價格會有一些差異。二手商品的價格是具備很強區分度的特徵。
3.2 二手電商知識圖譜構建
先構建商品的知識圖譜。商品的知識圖譜是類似樹的形態。樹由一級一級的節點組成,最後的葉子節點是商品實體,它的下面是一些商品的屬性。
遵循業務需求循序漸進。在製作知識圖譜的過程中,是邊做邊用的過程,而不是花費了很長的時間來做的很完整後才去使用。我們是根據具體的需求將知識圖譜拆成幾個步驟,然後進行持續的輸出。
那麼怎麼拆分?根據之前提到的樹的形態的知識圖譜,首先要做的是先描點。先把圖中的節點標好,然後再去挖掘屬性中一些K-V信息,得到一些零散的點邊關係,接著再把這些零散的點和邊的關係串起來形成一張圖,變成知識庫。最終,再把商品掛上去。
首先,是term層面的一些應用。提取物品詞,完成本體構建。然後,K-V層面就是連接點和邊。提取tag詞,完成屬性抽取。接著,在圖的層面。tag詞樹結構化,完成知識庫構建。最後,商品粒度。將商品掛靠上去,完成實體抽取。
3.3 商品理解——物品詞
首先從商品中提取出它的物品詞,然後根據用戶的行為數據得出用戶偏好物品詞,接著根據這個用戶偏好物品詞進行召回或是排序特徵。
那麼具體的實現方案:
先是物品詞庫的構建,不斷地挖掘當前都有哪些東西,以及以後還打算做哪些東西。這部分的數據大部分是從我們自有的結構化數據那裡拿到的,也有一部分是從外部爬去得到的,還有是從命名實體識別得到的。
接著是上下位關係提取,沙發是個實體,布藝沙發也是個實體。布藝沙發也是沙發的一種,它們是一個上下位的關係。
然後是並列相似度計算。像布藝沙發和皮質沙發的相似度是比較高的,而沙發和相機的相似度就比較低。還有是文本對齊。類似於同義詞,比如,相機和照相機其實是指代的同一個東西。
當以上完成以後,就構架出了一個物品詞庫。接著就是商品層面,商品物品詞提取,使用到的數據源有:分類信息、標題文本、商品描述、商品圖片。
應用場景主要就是:
- 個性化推薦:倒排索引召回
- 個性化推薦:排序特徵
3.4 商品理解——tag詞
後面做了一個商品理解的Tag詞,這是物品詞的演進,這是服務的升級,剛才我們提取到的是用戶感興趣的東西,但是人往往不會局限於對這個東西感興趣,還有可能對這類物品有很多的要求。所以需要從屬性的角度去挖掘用戶的興趣,比如右下角的例子。對該商品提取出更多的屬性。那這個套路和剛才的物品詞比較相似。這裡需要注意的是,一手化的數據可以從自有結構的數據,爬蟲,文本抽取中可以拿到,但是二手數據只能從文本挖掘中抽取。還有屬性對齊。還有商品Tag詞的提取,他的數據源來源於結構化數據,標題文本,商品描述,商品圖片等。應用場景和物品詞一致。最後就完成了屬性抽取。
3.5 Tag詞樹結構化
上面做完之後,我們發現提取出的key-value屬性,都是各自離散存在的。然後會出現數據質量的問題,所以把之前挖掘出的term給提取出來組成一個樹,下面是例子。從這個樹裡面可以追溯到他的所有信息。
這樣的做法還提供了query結構化,對query進行理解,他的應用場景有三部分,個性化推薦和智能搜索,這一塊截止,做完了商品庫的知識庫的構建。後面就是商品掛靠。
3.6 商品掛靠
商品掛靠指利用分類信息、商品標題、商品描述、商品圖片等數據,對本體庫(Tag詞樹型結構)中的節點進行匹配和生成商品知識路徑。同時消岐有可能一個商品會匹配到本體庫中的多個本體(物品詞)和 對屬性節點賦予權值,選取匹配權重最高的本體。
這還是剛才的例子,商品掛靠之後生成一個實體(右側)這一塊做完之後完成實體的抽取與知識圖譜的構建。目前我們有一些關於知識推理和知識圖譜的應用,優先級並不是這樣的,目前還沒有發力去做。
3.7 二手電商知識圖譜構建
根據場景去介紹就可以構建出下面的架構,首先是數據抽取,在進行本體構建和屬性抽取,在進行知識庫的構建,最後完成商品的掛靠,把這些數據存儲在HDFS或者OrientDB中,就可以進行智能推薦和智能搜索以及價格模型的構建。這裡有一個消岐的概念,他主要是做根據樹的權重的加和,權重較高的路徑他的置信度就越高。消除一些無效的路徑和屬性。
四、在價格模型中的應用
它的應用很多,這裡說一下在價格模型中的應用,為什麼做這件事情,對於二手商品的來說,很難去定一個合理的價格,所以我們這邊希望提供一個定價的能力。
4.1二手標品化
首先需要二手標品化,先做知識譜圖商品掛靠,然後去篩選出價格敏感的二手屬性。舉個例子,我的二手手機屏幕碎了,這是很影響定價的一個因素。但是另外一個手機僅僅是劃痕,這個屬性對二手手機的定價不是明顯的。所以需要去篩選一些對價格影響的屬性。在同本體、 同一手屬性值和同價格敏感二手屬性值下歸納二手標品,把這個ID作為這個實體新的屬性打到知識圖譜圖譜上。我們假設這個標品的商品價格是同分布。針對這個假設,我麼做了統計方法做估計價格區間和生成二手標品ID到價格區間的的映射。最後得到的結果是可以支撐這個假設的。
4.2二手標品估價
這塊就是整個流程,前面要進行樣本構建,然後在加載樣本知識圖譜和樣本商品售出價格,在開始離線計算二手標品商品ID的價格區間。由於我們也沒有二手商品的真正的價格,所以這裡需要另外一個假設,我們認為大部分成交的二手商品的成交價是合理的,因為這是買家和賣家討價還價之後的結果,並且基本上滿足了雙方的心理預期。所以我們收集已成交商品的價格,在按照二手標品ID聚合,對異常點刪除,在進行數據變化。計算價格區間。最後生成二手標品ID的價格區間放到資料庫中,在線估價的時候,首先加載待估計商品知識譜圖路徑,然後定位二手標品ID,最後確定價格區間。
4.3非二手標品商品估價
上面僅僅說了二手標品ID的估價,這裡還有非二手標品商品估計。手機很好說,但是衣服的話,從一手狀態就不太好標品化,這有一套另外的解決方案,首先還是基於知識圖譜製作,查找圖譜中最近的TopN個出售商品,在聚合出售的價格,刪除異常點,進行數據變化,計算價格區間,最後進行逆變換,生成商品價格區間。
4.4 數據變換
對於價格來說,他的分布有明顯偏態的,但是區間估計需要分布是無偏的,為了能更精準地通過控制置信度來調整區間大小,最好無偏正態化。類似於左下角的分布,拿對數變換或者平方根變換就可以變換成近似正態分布,但實際數據的情況會複雜多樣一些,為了能很好得無偏正態化,我們採用Box-Cox變換。對數變換和平方根變換是其特例。
4.5 區間劃分
有了正態分布之後,我們可以做區間的劃分,首先我們希望這個區間可以涵蓋大多數的商品,可以求均值,標準差,根據不同業務的需要,計算出價格區間,然後將計算出來的區間的上下限,做Box-Cox逆變換。這樣才是真正的價格區間。
4.6 Embedding + Regression
剛才所說的是基於統計的方法,後面還有另外一種能夠做法,基於回歸的方法。先進行知識譜圖的學習,挖掘出價格敏感的term作為屬性打到實體上,在把商品用向量表示,做回歸模型。然後可以用回歸的方式去預測出商品的基本的定價。
——END——