- 產品
- 產品解決方案
- 行業解決方案
- 案例
- 數據資產入表
- 賦能中心
- 伙伴
- 關于
時間:2022-07-01來源:美的像謎底瀏覽數:511次
我們會從兩個視角來看商家圖譜的建設。一個是算法視角,這是我們的核心能力。從下往上看,首先是知識的抓取,即數據來源,可以來自于業務本身存在的數據,也可以來自于外網抓取的數據。
導讀:螞蟻集團在線下支付、線上服務領域沉淀了海量的數據,涵蓋了商家、門店、小程序、品牌等商戶數據,以及交易、營銷等行為數據,如何合理地組織并自動關聯各維度的信息,為螞蟻建設豐富、高效、精準、一體化的商家知識基礎設施,是一項既有挑戰又有意義的工作。本文將圍繞螞蟻線下線上聯動的商家特色,首先介紹商家知識圖譜的構建方法,接著重點介紹在工業界大規模圖譜跨業務融合以及圖譜認知應用的落地實踐,最后介紹今年將重點投入的圖譜開源開放工作,希望能夠為知識社區做一些貢獻。
全文將圍繞以下四點展開:
商家圖譜概覽
圖譜構建&融合
圖譜開放
總結
01商家圖譜概覽
首先介紹一下螞蟻商家圖譜的背景和體系。
1. 背景介紹

在螞蟻集團生態體系里有兩個核心的要素,即商家和用戶。而商家在螞蟻的體系里是比較復雜的,首先它既連接了線下實體門店,用戶可以通過掃支付寶二維碼實現便捷支付。
其次,商家可以在線上通過支付寶提供小程序的方式同用戶進行關聯,即用戶可以在支付寶上搜索小程序滿足自己的需求。螞蟻商家這種線上和線下為用戶提供服務的方式,對我們理解商家提出了很大挑戰:
第一點是線下門店在收錄到螞蟻商家庫時,能收集到的信息主要是地理位置、商家類目等(問題一:商家基礎信息匱乏)。
第二點是商家在支付寶上提供的小程序存在多渠道來源,比如商家可以通過口碑、餓了么、大麥以及其它第三方等渠道進入到支付寶小程序生態中,這樣同一家門店在線上會有多種載體存在,同時各個載體間的商家數據是割裂異構的(問題二:商家信息多源異構)。
基于上面的背景和挑戰,我們有必要為螞蟻集團建設豐富、精準、高效、一體化的商家知識圖譜。建設商家知識圖譜,我們主要有兩個目的,一個是掌握商家的信息,比如這個商家是做什么的(基本類型),在哪里(POI/AOI),什么時間(服務時間段)為用戶提供哪些特色的服務(經營內容);第二個就是要了解商家場景與類別之間的聯系,這樣就可以在給定的場景和時空找到商家和服務的關聯,從而可以給用戶做出精準推薦。
2. 體系建設
接下來介紹商家知識圖譜的體系建設。

我們會從兩個視角來看商家圖譜的建設。一個是算法視角,這是我們的核心能力。從下往上看,首先是知識的抓取,即數據來源,可以來自于業務本身存在的數據,也可以來自于外網抓取的數據。在獲取到數據之后就需要知識定義,即知識建模,我們需要對數據進行知識的約束。再向上一層就是對知識進行抽取、結構化和對齊,隨后是如何對結構化的知識進行存儲,以及子圖查詢。再進一步是知識的應用,例如跨圖譜的知識融合、知識的Embedding表征、基于知識圖譜的知識推理滿足智能客服和智能問答的一些需求,還可以做知識匹配等。
另一方面是從落地視角看如何將算法的能力更好地應用。從下往上看,最底層是基礎依賴,一個是圖計算引擎,包括圖存儲形式以及數據庫選擇,第二個需要做一些認知計算,比如需要標注平臺、眾包進行知識質檢。再向上是圖譜底座,主要分兩個部分:NLP平臺和圖譜平臺。NLP平臺是通用的,會提供多種NLP的模型服務。圖譜平臺是支撐圖譜底層的能力建設,比如schema建模、圖譜存儲和更新,以及規則引擎如何支持圖推理。再向上一層是圖譜的常見算法:一類是圖譜構建算法,比如實體識別、關系抽取、概念挖掘等;一類是圖譜推理算法,比如知識表征、規則挖掘、結合領域知識和神經網絡進行神經符號的推理,以及因果推斷等。頂層是業務賦能,既會支持支付寶的搜索推薦營銷的業務,還會對接大安全、企業風控以及商家增長的業務。
整體上商家知識圖譜就是按照這個體系建設的。
02商家圖譜構建&融合應用
接下來我會詳細介紹商家知識圖譜的構建以及融合應用。主要會分為三部分,第一部分是圖譜構建,重點介紹知識加工的pipeline,第二部分是我們當下的一個重點工作,即跨圖譜的融合,最后簡單介紹圖譜認知的一個應用案例。
1. 圖譜構建
① 整體框架
首先系統地介紹一下圖譜構建的整體框架。這里共有六個組成部分。
數據源
知識建模
知識加工
知識存儲
知識運營
持續學習
首先是數據源的獲取,在商家圖譜的構建過程中,我們的數據是多源異構的。第一種是結構化數據,來源于業務團隊積累,在阿里螞蟻基本上是以ODPS和MySQL的形式存在。第二種數據源是半結構化數據,這里的key是不規范的,跟schema里定義的key無法直接匹配上,需要做屬性歸一。半結構化數據一般來源于百科的InfoBox,還有一些垂直網站。第三種是非結構化數據,包括自由文本和圖片,而知識加工需要對這部分非結構化數據做信息抽取以及鏈指等處理。
在獲取到數據源后,需要進行知識建模。知識建模本質上就是schema的定義,這里我們按照概念域-實體域-事件域,來對知識進行定義。概念域是具體實體的抽象,目的是建設認知概念的網絡,基于這些概念之間的上下位、相關、相反關系以及因果和順承關系來實現語義推理的工作。實體域就是跟業務強相關的實例,如商家圖譜中的商戶、門店、商品、服務、用戶等,實體域構建為了與專家知識解耦,以便運營側統一管理。事件域是我們重點建設的事理圖譜的一部分,這里特指用戶的瀏覽行為和支付行為,以這些行為背后的事件作為結構化知識的沉淀,來增強實體域里的一些靜態知識。
第三部分是知識加工。知識加工是提供了一個自定義DAG的圖譜構建鏈路。這里用戶可以根據自己的需要來進行算子的封裝,比如數據源的接入和清洗(有數據去噪需求),若數據質量很高則可以跳過預處理。對于非結構化的或者半結構化的數據,我們在進行數據獲取時,可能會涉及到對知識的分類或者抽取,如實體抽取、關系抽取等。在知識獲取后,要做字段的映射,即將知識的結構化數據和知識建模里的schema做映射。隨后需要實體鏈指歸一的工作,包含兩個部分,一是實體鏈接,另一部分是實體歸一或屬性歸一。做完實體鏈指之后可以按需加入質檢模塊,質檢是指當我們對鏈指結果不夠滿意時,使用眾包的方式進行質量評估。評估發現準確率較高時,就可以寫入圖譜中,否則拒絕鏈指結果(考慮更新算法組件)。
在進行完知識加工后,需要對知識進行存儲。知識存儲也是非常重要的一環。為了支持不同的業務需求,我們設計了對知識進行分層的存儲架構,從而能夠支撐毫秒級的實時在線查詢、秒級別的平臺知識運營,以及大規模的圖計算數據處理,我們也可以提供分鐘級的更新。
第五部分就是基于知識存儲上進行的知識運營,我們可以在圖譜平臺上做知識查詢、知識編輯,也可以進行可視化分析,還可以基于圖譜的大規模知識表示和推理。
最后,有了高質量的知識存儲,可以反過來幫助我們進行持續學習。通過圖譜里的這些高質量數據,可以不斷優化知識獲取、知識鏈指中涉及的各類算子。
介紹完整體框架之后,我會重點介紹幾個環節,比如知識獲取、知識鏈指中用到的一些算法模塊。
② 知識獲取-文本分類

這里介紹知識獲取部分的一個分類模型。相對于一般的文本分類,我們結合了圖片信息,并且引入了label的語義信息,提出了一種融合語義知識的多模態多分類模型。
在我們的一些場景中,比如商戶門店分類、小程序頁面的意圖分類,這里面會有豐富的圖片信息,而這些圖片中會有結構化的layout信息。這些場景中還有很多object,這些object的語義含義很明確,將圖片信息進行融合后得到的多模語義表征,比純粹的文本表征語義更加豐富。其次,我們面臨的label可能上千甚至上萬的規模,這些label的背后不僅僅是一個id,它的名稱(比如“租賃-租3C數碼-租手機”)有非常強的語義信息,同時這些label之間本身也會存在上下位、同義、相關等關系,自然而然可以將label從平鋪形式轉化為圖的形式,生成label graph,接著基于圖表征方法對label進行embedding表示。如果label沒有名稱或者結構信息,只需做一個隨機的初始化。如果label有名稱,可以使用Bert類模型去提取一個文本的初始化表征。在得到label的表征后,和輸入的表征進行淺層的交互,得到label的分布,比如單分類任務只需要簡單加一個softmax,如果是多分類,可以把softmax變成sigmoid。上面這些是我們模型的特點,同時在效果上,模型針對hownet的每個詞進行義原預測,這里label有2000類+,在這個任務上,我們的模型相比于baseline有5pt的提升。
值得一提的是,我們的模型有兩個點可以優化,第一個是怎么更好地進行多模的表征。多模態的預訓練有兩種方式,一種是單流,另一種是雙流,至于哪種方式適合解決當前業務問題,需要具體問題具體分析。在Encode這里做預訓練優化會對整體模型效果有一定提升。第二點是對于輸入表征和label表征,我們當前只是做了淺層的交互,如果后續在這里做一個深層的交互,類似于cross attention,可能會對效果提升有幫助。
③ 知識獲取-文本抽取

接下來介紹我們在文本抽取上的模型。眾所周知,文本抽取涵蓋范圍是比較廣的,包括實體抽取,關系、屬性的抽取,還有SPO的抽取。這里主要介紹通用的實體抽取的模型。按圖上這個框架從下往上看,最下面是用Bert獲得token表征,上面一層加入了graph layer,再上面是雙向的GRU,最后是label預測。相比直接用Bert做實體抽取,差別在于我們模型加入了graph layer這一層。當前業界和學術界都在知識增強的NER這個方向進行了大量探索,研究關鍵在于如何把領域詞信息放入知識抽取的模型中,一些做法是將這部分信息直接加在Bert的輸入層,即做了簡單的拼接。我們模型是在graph layer中通過構建圖神經網絡來學習詞與字之間交互的特征。獲得這個特征之后,再通過BiGRU對Bert的輸出和graph layer輸出進行融合,從而進一步預測每一個token的label信息。我們的模型在MSRA數據集上比僅使用Bert在F1上有1pt的提升,在CLUNER數據集上同樣也有0.9pt的提升。
但是這種詞增強的NER,也存在在引入領域詞的過程中引入噪聲的問題,比如會存在一些邊界沖突或語義沖突。如何避免噪聲的引入也是接下來主要研究的一個問題點。
④ 知識鏈指

重點介紹一下我們在實體鏈接上的工作。
實體鏈接,即給定一段文本,首先識別出潛在實體的指稱(mention),然后再把他們鏈接到知識圖譜中,完成實體對齊和歸一。比如我們有一條評論,將評論中的實體與圖譜鏈接起來,會對這個實體有語義的增強,例如“外婆家”這個商戶實體,我們通過跟圖譜關聯可以進一步獲取到該商家關聯的商品信息。
實體鏈接一般流程如圖所示,首先對輸入的文本進行mention的識別,識別方法可以是簡單的模板匹配或者詞典匹配,通過模型可以做實體識別。經過mention識別后,進行候選實體生成,這是一個召回的過程,根據識別出來的mention在圖譜里召回候選實體。候選實體生成的方法也有很多,比如別名詞表召回、Ha3索引召回、基于語義表征的向量召回,還有比較特殊的場景,比如門店召回時,每家門店都會有LBS經緯度信息,可以通過LBS去召回。生成了候選實體之后,需要對候選實體進行排序,常用的排序方式有LTR(Learning To Rank)模型,除了排序模型外,還可以用文本匹配或者圖匹配的一些算法來獲取Top1結果。但是這樣還是存在一些問題,比如識別到的實體在圖譜里不存在,這時就需要做NILL判斷,判斷Top1實體在圖譜內是否存在。
我們以消費記錄里門店鏈接作為簡單的案例。文本就是一條消費記錄,我們主要通過網格的LBS進行召回,召回一公里內的門店信息,然后進行匹配和排序。具體來講,在匹配任務上,我們嘗試了最簡單的精準匹配,我們對消費記錄中的門店做了結構化提取,同時對門店庫中的門店也做了結構化,將這兩部分信息做精準匹配。除了精準匹配外,我們也做了基于Bert模型的文本匹配。進一步我們對消費記錄里的門店結構化信息同圖譜關聯,嘗試圖匹配。最后集成各種匹配方法,訓練了LTR排序模型。
2. 圖譜融合

在介紹完圖譜構建之后,我會重點介紹我們在圖譜融合上的工作進展,這里提到的圖譜融合更多的是兩個領域圖譜的跨圖譜融合。
在螞蟻的業務背景中,商家和用戶是兩大最核心的要素,各個業務團隊會基于商家和用戶去構建各自的領域圖譜,對于一個新的業務需要構建圖譜時,重新獲取結構化信息構建圖譜的成本是很高的,那我們提出了一個比較好的解決方案,以螞蟻商家圖譜為例,我們通過跨圖譜融合的方式能夠快速幫助業務做一些知識復用和快速驗證的過程。我們主要做了不同實體類型但相同實例的融合,以及不同實體類型不同實例的關系連通。最終可以達到三個目的:
跨圖譜的知識復用
減少無效數據拷貝
業務快速價值落地

介紹完背景之后,我將簡單介紹一下我們跨圖譜融合能力的模型。左側是不同業務領域圖譜各自構建的pipeline,比如商家圖譜、消金圖譜和安全圖譜,右側在屬性映射之后就是跨圖譜融合的流程,這樣設計的好處是各自領域圖譜可以各自生產維護,互不影響,在跨圖譜融合之后,可以用不同圖譜的信息做實體鏈指和實體歸一,最終形成融合后的圖譜,以便于開展推理等相關工作。
這里實體鏈指和上文提到的不太一樣,這里是兩個圖譜的實體鏈指,針對這里我們提出了可自助開發的多鏈指策略。如果不同圖譜之間實體id保持一致,可以直接進行id的規則映射,另外我們還可以通過搜索引擎,指定不同類型為相同實體,利用搜索方式進行獲取,還有向量檢索。這些鏈指方法靈活可配置,可以根據自己的業務選擇規則或者模型的方式達到鏈指的目的。在實體歸一這一步中,由于不同實體各自的屬性也不一樣,需要對屬性做溯源,我們提供了可溯源的歸一規則的定義,這樣可以幫助查找屬性來自于哪個圖譜。當前基于我們這個能力模型,在阿里內部已經有很多團隊進行大量的應用,在業務上也取得了不錯的效果。
3. 圖譜認知

圖譜認知這部分我主要介紹知識表示的一個案例。在支付寶中有一個會場消費券的頻道場景(超級567),我們做的是消費券內容理解和深度召回。深入這個場景可以看到,用戶需求是很明確的,但是也會有幾個痛點,一個是流量結構的頭部效應非常嚴重,通過行為召回的一般都會有馬太效應;另一個是用戶核銷領取行為稀疏,一周或者一個月只進行幾次瀏覽點擊;還有不僅是冷啟動的用戶很多,每天新增的券也很多,新增券背后隱藏著用戶的行為很少。
然而這個場景所涉及到的結構化信息就是商家圖譜的子圖,這里有例如用戶、消費券以及消費券背后的品牌和意圖等關鍵節點。用圖譜的方式進行召回有一些優勢,一個是長尾的item學習更加充分,即對消費券進行結構化之后,相對于之前券與券之間只能通過用戶行為關聯,使用KG可以通過結構化節點進行關聯,實現靜態節點的擴張。另一個是結合用戶行為和券之間的結構化信息,相當于靜態和動態信息進行融合,形成一張動態時序圖。這里簡單介紹我們的學習過程,這是一個雙塔的向量召回模型,唯一的不同就是把圖譜的embedding作為特征加到模型輸入中。這里采用動態圖學習的Embedding,是因為在這個特殊場景下,用戶領券行為存在一定的周期性規律,這里的時間信息相當重要,因此需要將靜態圖學習變成動態圖學習。圖學習這一部分,我們采用團隊自研的encoder-decoder的圖表示學習的框架,其中encoder側做圖的節點表征,業界常用的是GNN類圖神經網絡方法,我們這里使用的是團隊自研delta動態圖知識表征算法,相對于GNN類的模型引入了時間的信息,將時間信息加入到邊的學習過程中。Decoder側做節點分類或鏈接預測的任務,這里用戶領取和核銷的行為做HRT的鏈接預測任務學習,學到這個表征之后再放到向量召回模型輸入中。
效果層面,向量召回模型引入用戶和item節點圖表征之后,相比baseline有明顯的提升,同時對向量召回的結果做統計分析,發現召回的item分布更廣,覆蓋更多,很大程度上解決了熱點效應的問題。關于這個動態知識表征的模型可以關注我們團隊后續的相關文章。
03商家圖譜開放
第三部分是我們今年會重點做的圖譜開放工作,大概介紹一下開源計劃。
1. 開放知識

我們首批準備發布的數據是偏概念層的,簡單介紹一下概念域里的知識,例如意圖、品牌、商家類目以及標簽,它們在圖里是通過邊進行關聯。意圖是一類復合概念,用戶在支付寶中搜索時會帶有較強的用戶需求,例如“打車”、“查公積金”等,這些需求背后就是用戶的意圖。品牌不僅來源于支付寶認證的一些數據,也會從外網抓取一些品牌,并進行歸一質檢,最終沉淀了10萬+的品牌。這些品牌與意圖也是有關聯關系的,比如通過“星巴克”品牌,人們很容易想到在星巴克買咖啡,這就與意圖產生了關聯關系。同時,每個意圖也會和標簽有關,比如“買女鞋”的意圖下適用人群就是女生。

2. 開放SDK能力

最后介紹知識圖譜開放SDK能力。SDK開放背后有三層集成的能力,第一個是數據集成,我們可以支持跨業務的圖譜融合,以及獲取到業務數據后直接掛載到圖譜中,進一步可以做可視化分析。第二環節是系統集成,基于Java sdk做知識加工、知識建模、知識查詢以及知識推理,快速完成圖譜構建。第三部分是算法開放,我們會基于python sdk支持算法一鍵import,可以進行子圖提取,也可以基于tensorflow或pytorch開發圖譜算法。

這里詳細介紹一下支持業務直接集成圖譜能力的Java SDK。從下往上看,最底層是圖存儲平臺Geabase,向上是知識引擎的交互,再上面是圖譜查詢SDK,最上面是業務層面的支持。圖譜通用SDK這塊可以分為三部分,一部分是接入,我們提供了一些通用的接口;第二部分是訪問控制,會做用戶權限的控制,日志等一些數據上的統計;最重要的是開放能力,有圖譜建模,即schema的管理能力;還有數據構建,可以做分析推理,最后進行算法應用。基于這套代碼SDK,我們可以支持研發的接入,引用Client包即可,還可以支持算法接入,可以獨立使用,也可以擴展開發。
04總結與展望

過去一年我們一直在做商家圖譜的建設以及數據沉淀,沉淀下來的數據也希望可以開源開放,為社區做一些貢獻。我們主要完成商家和用戶的連接,并進一步做了概念層面的建設,目的是期望商家和用戶的畫像更加清晰,能基于商家圖譜可以在業務上有更多的突破。目前沉淀下來的實體規模有30億+,關系鏈有400億+。同時我們也計劃將沉淀下來的數據和能力逐步開放出來,并提供一些開源的算子。
下一篇:數字化轉型風險知多少...