萬字詳解:騰訊如何自研大規(guī)模知識圖譜 Topbase
八、知識關聯和推理
知識關聯(鏈接預測)是將實體的屬性值鏈接到知識庫的實體中,構建一條關系邊,如圖 24 所示“三國演義”的作者屬性值是“羅貫中”字符串,知識關聯需要將該屬性值鏈接到知識庫中的實體“羅貫中”,這樣實體“三國演義”和“羅貫中”之間存在一條“作者”的關系邊。
圖24 基于超鏈接關聯的示列說明
Topbase 的知識關聯方案分為基于超鏈接的關聯和基于 embedding 的文本關聯兩種方式。
超鏈接關聯是 Topbase 進行關聯和推理的第一步,它是利用網頁中存在的超鏈接對知識圖譜中的實體進行關聯,如百科“三國演義”頁面中,其“作者”屬性鏈接到“羅貫中”的百科頁面(如圖 24 所示),基于這種超鏈接的跳轉關系,可以在 Topbase 的實體之間建立起一條邊關系,如該示列會在實體“三國演義”與“羅貫中”之間生成一條“作者”關系,而“曹操”并沒有該超鏈接,所以三國演義的主要人物屬性中的字符串“曹操”不會關聯到具體的實體頁面中。在進行超鏈接關聯之前,Topbase 中的實體是一個個孤立的個體,超鏈接關聯為知識圖譜補充了第一批邊關系,但是超鏈接關聯無法保證鏈接的覆蓋率。
基于此,Topbase 提出基于 embedding 的文本關聯; embedding 的文本關聯是在已知頭實體、關系的基礎上,在候選集中對尾實體進行篩選,尾實體的候選集是通過別名匹配召回。如上述百科示列中的“主要人物”屬性,我們利用其屬性值字符串”曹操“去 Topbase 庫里匹配,召回所有和”曹操”同名稱的實體作為建立鏈接關系的候選。然后利用知識庫 embedding 的方法從候選實體中選擇最相似的實體作為他的鏈接實體;谖谋久Q的匹配召回候選可以大大提高知識庫 embeding 方法的鏈接預測效果; embedding 的鏈接關系預測是通過模型將實體和關系的屬性信息、結構信息嵌入到一個低維向量中去,利用低維向量去對缺失的尾實體進行預測。
當前采用的嵌入模型是 TextEnhanced+TransE,模型結構如圖 25 所示。
TransE 是將實體與關系映射到同一向量空間下,它是依據已有的邊關系結構對實體之間的邊關系進行預測,對孤立實體或鏈接邊較少的實體預測效果較差。為了引入文本信息,解決模型對孤立實體預測的難題,模型使用 TextEnhanced 對文本信息進行嵌入。TextEnhanced 通過 NN 模型對文本信息嵌入后,利用 Attention 機制將文本信息嵌入到 Trans 系列的實體向量中,進而對尾實體進行預測。
圖25 TextEnhanced+TransE結構圖
由于知識關聯是在已知屬性值的前提下,通過名稱匹配的方式得到關聯實體的候選集,所以知識關聯無法補充缺失屬性值的鏈接關系。如上圖中“三國演義”的信息中并沒有“關羽”,知識推理目的是希望能夠挖掘“三國演義”和“關羽”的潛在關系。為了保證圖譜數據的準確率,Topbase 的知識推理主要以規(guī)則推理為主,具體的規(guī)則方法可以歸納為以下幾類:
伴隨推理是在已經被鏈接的兩個實體之間,根據兩個實體的屬性信息,發(fā)現兩者間蘊含的其它關系。例如實體 A 已經通過“配偶”關系與實體 B 相連,實體 A 的性別為“男”,實體 B 的性別為“女”,則伴隨推理會生成一條“妻子”關系邊,將實體 A 與實體 B 鏈接在一起,代表 B 為 A 的妻子。伴隨推理的規(guī)則可以通過統計同時關聯起兩個實體的屬性共現比例得到。
圖26 伴隨推理的示列說明
表2 Topbase的伴隨推理規(guī)則庫示列
反向推理是依據邊之間的互反關系,為已經鏈接的兩個實體再添加一條邊。比如實體 A 通過“作者”邊與實體 B 相連,代表實體 B 是實體 A 的作者,則可以直接生成一條從實體 B 指向實體 A 的“作品”邊,代表實體 A 是實體 B 的作品,因為“作品”與“作者”是一條互反關系。反向推理與伴隨推理類似,都是在已經存在邊關系的實體之間,挖掘新的邊關系,不同的是,伴隨推理在生成邊關系時需要滿足一定的屬性條件,如上例中的“性別”限制,而反向推理直接通過已有的邊關系,無需參考其它屬性值,直接生成一條互反邊關系。反向推理規(guī)則可以通過統計 A-B,B-A 的屬性共現數量篩選。
圖27 反向推理的示列說明
表3 Topbase的反向關聯規(guī)則庫示列
多實體推理是在多個實體之間挖掘蘊含的邊關系,是一種更復雜的關聯規(guī)則,如第一種形式:A 的父親是 B,B 的母親是 C,則 A 的奶奶是 C,該形式通過統計 A+PATH = C,A+R0=C,情況得到規(guī)則 [PATH(R1R2)=R0];第二種形式是 A 的母親是 B,A 的兒子 C,則 B 的孫子是 C,該形式通過統計:A+R1 = B,A+R2=C,B+R0=C 的情況,得到規(guī)則[R1 &R2 = R0]。
圖28 多實體推理的兩種形式示列說明
九、實體知名度計算
實體的知名度(Popularity)指標可以用于量化不同實體的重要性程度,方便我們更好的使用圖譜數據。Topbase 知識庫的 popularity 計算以基于實體鏈接關系的 pagerank 算法為核心,以對新熱實體的 popularity 調整為輔,并配以直接的人工干預來快速解決 badcase。具體地,首先抽取實體頁面之間的超鏈接關系,以此為基礎通過修改后的 pagerank 算法來計算所有實體的 popularity;對于難以通過 pagerank 算法計算的新熱實體的 popularity,再進行規(guī)則干預。最后對于仍然難以解決的 case,則直接對其 popularity 值進行人工賦值。Popularity 計算模塊的整體流程如下圖所示:
圖29 Topbase實體知名度計算流程
多類型邊關系的 pagerank 算法:
基于鏈接關系的 popularity 計算方法的出發(fā)點在于:一個實體 A 對另一個實體 B 的引用(鏈接),表示實體 A 對于實體 B 的認可,鏈接到 B 的實體越多,表示 B 受到的認可越多,由此推斷它的知名度也就越高。但實際上有很多的鏈接關系并不是出于“認可”而產生的,只是簡單的表示它們之間有某種關系。比如歌手與專輯、音樂之間的各種關系。一個專業(yè)的音樂網站會收錄歌手、專輯、音樂之間的完整從屬關系,這會導致同一個歌手或同一張專輯之內的熱門歌曲與其它歌曲之間沒有任何區(qū)分性。并且由于這幾類實體之間高密度的鏈接關系,會導致它們的計算結果比其它類別的實體的都高出很多。
因此有必要對實體之間不同的鏈接關系進行區(qū)別對待。與最基礎的 pagerank 算法的不同在于:實體之間可以有多條邊,且有多種類型的邊。在進行迭代計算的過程中,不同類型的邊對流經它的概率分布會有不同程度的擬制作用。之所以進行這樣的修改,是因為知識庫中實體的信息有多種不同的來源。有的實體來源于通用領域百科,有的實體來源于垂類領域網站等。甚至同一個實體內部,不同的屬性信息也會有不同的來源。由此,實體之間的鏈接關系也會屬于不同的來源。比如“劉德華”與“朱麗倩”之間的“夫妻”關系可能抽取自百科,而與“無間道”之間的“參演”關系可能來自于電影網站。不同來源的信息有著不同的可信度,有的經過人工的審核編輯,可信度很高;而有的則屬于算法自動生成,會有不同程度的錯誤。
因此鏈接關系之間也有可信度的差別,無法做到將它們一視同仁地看待。其次,有的鏈接關系即使在可靠性方面完全正確,但它們對于 popularity 的正確計算不僅沒有太大幫助,反而會導致 popularity 的計算結果與預期不符。修改后的 pagerank 算法的計算過程與基礎 pagerank 算法基本一致,只是在進行分布概率的流轉時有所區(qū)別。
下面進行舉例說明:
圖30 多類型邊的PageRank算法說明
實體 A 指向實體 B、C、D。其與 B 之間的鏈接類型為 X,與 C 之間的鏈接類型為 Y,與 D 之間的為 Z。通過先驗知識或實驗總結,我們認為鏈接類型 Y 可信性不高,相比于 X,對 rank 值的流轉有擬制作用,因此對其賦予一個系數 0.8,Z 的可信度很準確,但其性質與上述的音樂網站的關系類似,因此對于其賦予一個系數 0.2,而 X 類型的完全可行,其系數則為 1.0。在某一迭代階段,實體 A 的 rank 值為 3,B、C、D 的 rank 值分別為 4、2、3。由于 A 有 3 條出邊,因此到 B、C、D 的初始流出值均為 3/ 3 = 1。加上系數的影響,實際到 C、D 的流出值分別為 0.8 和 0.2,未流出的剩余值為(1 -0.8) + (1 - 0.2) = 1.0。
因此迭代過后,B、C、D 的 rank 值分別為 4 + 1.0 = 5,2 + 0.8= 2.8,3 + 0.2 =3.2,而 A 的 rank 值需要在所有指向它的實體流入到它的值之和的基礎上,再加上未流出的 1.0。
新熱實體的 Popularity 調整:
新熱實體的含義為最新出現的熱門實體。這類實體需要較高的 popularity 值。但由于是新近出現的實體,其與其它實體的鏈接關系非常匱乏,因此無法通過基于實體鏈接關系的這類方法來計算。對此我們采取的方案側重于對新熱實體的發(fā)現,然后對發(fā)現的新熱實體的 popularity 進行調整,使其 popularity 值在同名實體中處于最高的位置。新熱實體的發(fā)現目前基于兩類方法:一類方法發(fā)現的熱門實體可以直接對應到知識庫中的某個實體,另一個方法只能發(fā)現熱門的實體名,需要通過一些對齊方法與知識庫中的某個實體關聯起來。
第一種方法從 Topbase 監(jiān)控的重點網站頁面中直接獲取最近熱門的實體。這種方法獲取的實體可以直接通過 url 與知識庫中的某個實體準確無誤地關聯起來。第二類方法首先發(fā)現一些熱門的實體名,包括:一、從微博熱搜榜中爬取熱門話題,通過命名實體識別方法識別其中的人名和機構名,將其作為熱門實體名;二、將新聞中每天曝光的高頻次標簽作為實體名。以上兩種方法發(fā)現的實體名帶有一定的附加信息,通過實體鏈接可以將其對齊到知識庫中的某個實體。
十、知識庫的存儲和查詢
知識圖譜是一種典型的圖結構數據集合,實體是圖中的節(jié)點,關系(屬性)是帶有標簽的邊。因此,基于圖結構的存儲方式能夠直接正確地反映知識圖譜的內部結構,有利于知識的查詢。如下圖所示,紅色圈代表實體,實線是邊(妻子),表示實體間的關系,如“劉德華的妻子是朱麗倩”,虛線是屬性(出生日期),表示實體具有的屬性,如“劉德華的出生日期是 1961 年 9 月 27 日”。
圖31 圖數據說明
Topbase 知識圖譜的存儲是基于分布式圖數據庫 JanusGraph,選擇 JanusGraph 的主要理由有:1)JanusGraph 完全開源,像 Neo4j 并非完全開源;2)JanusGraph 支持超大圖,圖規(guī)模可以根據集群大小調整;3)JanusGraph 支持超大規(guī)模并發(fā)事務和可操作圖運算,能夠毫秒級的響應在海量圖數據上的復雜的遍歷查詢操作等。
Topbase基于JanusGraph存儲查詢架構如下:
圖32 基于JanusGraph的存儲查詢系統
Graph_Loader 模塊主要是將上述數據生產流程得到的圖譜數據轉換為 JanusGraph 存儲要求的格式,批量的將圖譜數據寫入圖數據庫存儲服務中,以及相關索引建立。
圖數據庫存儲服務:JanusGraph數據存儲服務可以選用 ScyllaDb、HBase 等作為底層存儲,topbase 選用的是 ScyllaDb。Graph_loader 會每天定時的將數據更新到圖數據庫存儲服務。
圖數據庫索引:由于 JanusGraph 圖數據庫存儲服務只支持一些簡單查詢,如:“劉德華的歌曲”,但是無法支持復雜查詢,如多條件查詢:“劉德華的 1999 年發(fā)表的粵語歌曲”。所以我們利用 Es 構建復雜查詢的數據索引,graph_loader 除了批量寫入數據到底層存儲之外,還會建立基于復雜查詢的索引。
圖數據庫主服務:主服務通過 Gremlin 語句對圖數據庫的相關內容進行查詢或者改寫等操作。
十一、總結
由于知識圖譜的構建是一項龐大的數據工程,其中各環(huán)節(jié)涉及的技術細節(jié)無法在一篇文檔中面面俱到。本文主要梳理 Topbase 構建過程中的技術經驗,從 0 到 1 的介紹了圖譜構建流程,希望對圖譜建設者有一定的借鑒意義。

請輸入評論內容...
請輸入評論/評論長度6~500個字
最新活動更多
-
7月8日立即報名>> 【在線會議】英飛凌新一代智能照明方案賦能綠色建筑與工業(yè)互聯
-
7月22-29日立即報名>> 【線下論壇】第三屆安富利汽車生態(tài)圈峰會
-
7.30-8.1火熱報名中>> 全數會2025(第六屆)機器人及智能工廠展
-
7月31日免費預約>> OFweek 2025具身智能機器人產業(yè)技術創(chuàng)新應用論壇
-
免費參會立即報名>> 7月30日- 8月1日 2025全數會工業(yè)芯片與傳感儀表展
-
即日-2025.8.1立即下載>> 《2024智能制造產業(yè)高端化、智能化、綠色化發(fā)展藍皮書》
推薦專題