雪花新聞

萬字詳解:騰訊如何自研大規模知識圖譜 Topbase

摘要:超鏈接關聯是 Topbase 進行關聯和推理的第一步,它是利用網頁中存在的超鏈接對知識圖譜中的實體進行關聯,如百科“三國演義”頁面中,其“作者”屬性鏈接到“羅貫中”的百科頁面(如圖 24 所示),基於這種超鏈接的跳轉關係,可以在 Topbase 的實體之間建立起一條邊關係,如該示列會在實體“三國演義”與“羅貫中”之間生成一條“作者”關係,而“曹操”並沒有該超鏈接,所以三國演義的主要人物屬性中的字符串“曹操”不會關聯到具體的實體頁面中。知識規整目的是將實體數據映射到知識體系,並對其關係屬性等信息進行去噪,歸一化等預處理。

作者:鄭孫聰,騰訊 TEG 應用研究員

Topbase 是由 TEG-AI 平臺部構建並維護的一個專注於通用領域知識圖譜,其涉及 226 種概念類型,共計 1 億多實體,三元組數量達 22 億。在技術上,Topbase 支持圖譜的自動構建和數據的及時更新入庫。此外,Topbase 還連續兩次獲得過知識圖譜領域頂級賽事 KBP 的大獎。目前,Topbase 主要應用在微信搜一搜,信息流推薦以及智能問答產品。本文主要梳理 Topbase 構建過程中的技術經驗,從 0 到 1 的介紹了構建過程中的重難點問題以及相應的解決方案,希望對圖譜建設者有一定的借鑑意義。

一、簡介

知識圖譜( Knowledge Graph)以結構化的形式描述客觀世界中概念、實體及其關係,便於計算機更好的管理、計算和理解互聯網海量信息。通常結構化的知識是以圖形式進行表示,圖的節點表示語義符號(實體,概念),圖的邊表示符號之間的語義關係(如圖 1 所示),此外每個實體還有一些非實體級別的邊(通常稱之爲屬性),如:人物的出生日期,主要成就等。

圖1 知識圖譜的示列

TEG-AI 平臺部的 Topbase 是專注於通用領域知識。數據層面,TopBase 覆蓋 51 個領域的知識,涉及 226 種概念類型,共計 1 億多個實體,三元組數量達 22 億多。技術層面,Topbase 已完成圖譜自動構建和更新的整套流程,支持重點網站的監控,數據的及時更新入庫,同時具備非結構化數據的抽取能力。此外,Topbase 還連續兩次獲得過知識圖譜領域頂級賽事 KBP 的大獎,分別是 2017 年 KBP 實體鏈接的雙項冠軍,以及 2019 年 KBP 大賽第二名。在應用層面,Topbase 主要服務於微信搜一搜,信息流推薦以及智能問答產品。本文主要梳理 Topbase 構建過程中的重要技術點,介紹如何從 0 到 1 構建一個知識圖譜,內容較長,建議先收藏。

二、知識圖譜技術架構

TopBase 的技術框架如圖 2 所示,主要包括知識圖譜體系構建,數據生產流程,運維監控系統以及存儲查詢系統。其中知識圖譜體系是知識圖譜的骨架,決定了我們採用什麼樣的方式來組織和表達知識,數據生產流程是知識圖譜構建的核心內容,主要包括下載平臺,抽取平臺,知識規整模塊,知識融合模塊,知識推理模塊,實體重要度計算模塊等。Topbase 應用層涉及知識問答(基於 topbase 的 KB-QA 準確率超 90%),實體鏈接(2017 圖譜頂級賽事 KBP 雙料冠軍),相關實體推薦等。

圖2 知識圖譜Topbase的技術框架
  1. 下載平臺-知識更新:下載平臺是知識圖譜獲取源數據平臺,其主要任務包括新實體的發現和新實體信息的下載。

  2. 抽取平臺-知識抽取:下載平臺只負責爬取到網頁的源代碼內容,抽取平臺需要從這些源碼內容中生成結構化的知識,供後續流程進一步處理。

  3. 知識規整:通過抽取平臺以及合作伙伴提供的數據我們可以得到大量的多源異構數據。爲了方便對多源數據進行融合,知識規整環節需要對數據進行規整處理,將各路數據映射到我們的知識體系中。

  4. 知識融合:知識融合是對不同來源,不同結構的數據進行融合,其主要包括實體對齊和屬性融合。

  5. 知識推理:由於處理數據的不完備性,上述流程構建的知識圖譜會存在知識缺失現象(實體缺失,屬性缺失)。知識推理目的是利用已有的知識圖譜數據去推理缺失的知識,從而將這些知識補全。此外,由於已獲取的數據中可能存在噪聲,所以知識推理還可以用於已有知識的噪聲檢測,淨化圖譜數據。

  6. 實體知名度計算:最後,我們需要對每一個實體計算一個重要性分數,這樣有助於更好的使用圖譜數據。比如:名字叫李娜的人物有網球運動員,歌手,作家等,如果用戶想通過圖譜查詢“李娜是誰”那麼圖譜應該返回最知名的李娜(網球運動員)。

三、知識體系構建

知識體系的構建是指採用什麼樣的方式來組織和表達知識,核心是構建一個本體(或 schema)對目標知識進行描述。在這個本體中需要定義:1)知識的類別體系(如:圖 1 中的人物類,娛樂人物,歌手等);2)各類別體系下實體間所具有的關係和實體自身所具有的屬性;3)不同關係或者屬性的定義域,值域等約束信息(如:出生日期的屬性值是 Date 類型,身高屬性值應該是 Float 類型,簡介應該是 String 類型等)。我們構建 Topbase 知識體系主要是以人工構建和自動挖掘的方式相結合,同時我們還大量借鑑現有的第三方知識體系或與之相關的資源,如:Schema.org、Dbpedia、大詞林、百科(搜狗)等。知識體系構建的具體做法:

  1. 首先是定義概念類別體系:概念類別體系如圖 1 的概念層所示,我們將知識圖譜要表達的知識按照層級結構的概念進行組織。在構建概念類別體系時,必須保證上層類別所表示的概念完全包含下層類別表示的概念,如娛樂人物是人物類的下層類別,那麼所有的娛樂人物都是人物。在設計概念類別體系時,我們主要是參考 schema.org、DBpedia 等已有知識資源人工確定頂層的概念體系。同時,我們要保證概念類別體系的魯棒性,便於維護和擴展,適應新的需求。除了人工精心維護設計的頂層概念類別體系,我們還設計了一套上下位關係挖掘系統,用於自動化構建大量的細粒度概念(或稱之爲上位詞),如:《不能說的祕密》還具有細粒度的概念:“青春校園愛情電影”,“穿越電影”。

  2. 其次是定義關係和屬性:定義了概念類別體系之後我們還需要爲每一個類別定義關係和屬性。關係用於描述不同實體間的聯繫,如:夫妻關係(連接兩個人物實體),作品關係(連接人物和作品實體)等;屬性用於描述實體的內在特徵,如人物類實體的出生日期,職業等。關係和屬性的定義需要受概念類別體系的約束,下層需要繼承上層的關係屬性,例如所有歌手類實體應該都具有人物類的關係和屬性。我們採用半自動的方式生成每個概念類別體系下的關係屬性。我們通過獲取百科 Infobox 信息,然後將實體分類到概念類別體系下,再針對各類別下的實體關係屬性進行統計分析並人工審覈之後確定該概念類別的關係屬性。關係屬性的定義也是一個不斷完善積累的過程。

  3. 定義約束:定義關係屬性的約束信息可以保證數據的一致性,避免出現異常值,比如:年齡必須是 Int 類型且唯一(單值),演員作品的值是 String 類型且是多值。

四、下載平臺-知識更新

知識更新主要包括兩方面內容,一個是新出現的熱門實體,需要被及時發現和下載其信息,另一個是關係屬性變化的情況需要對其值進行替換或者補充,如明星的婚姻戀愛關係等。知識更新的具體流程如下圖所示:

圖3 Topbase知識更新流程圖
  1. 針對熱門實體信息的更新策略主要有:

表 1  最近 7 日下載數 據統計情況

2.針對其他關係屬性易變的情況,我們針對某些重要關係屬性進行專項更新。如明星等知名人物的婚姻感情關係我們主要通過事件挖掘的方式及時更新,如:離婚事件會觸發已有關係“妻子”“丈夫”變化爲“前妻”“前夫”,戀愛事件會觸發“男友”“女友”關係等。此外,基於非結構化抽取平臺獲得的三元組信息也有助於更新實體的關係屬性。

五、抽取平臺 - 知識抽取

Topbase 的抽取平臺主要包括結構化抽取,非結構化抽取和專項抽取。其中結構化抽取主要負責抽取網頁編輯者整理好的規則化知識,其準確率高,可以直接入庫。由於結構化知識的侷限性,大量的知識信息蘊含在純文本內容中,因此非結構化抽取主要是從純文本數據中挖掘知識彌補結構化抽取信息的不足。此外,某些重要的知識信息需要額外的設計專項策略進行抽取,比如:事件信息,上位詞信息(概念),描述信息,別名信息等。這些重要的知識抽取我們統稱專項抽取,針對不同專項的特點設計不同的抽取模塊。

1.  結構化抽取平臺

許多網站提供了大量的結構化數據,如(圖 4 左)所示的百科 Infobox 信息。這種結構化知識很容易轉化爲三元組,如:“<姚明,妻子,葉莉>”。針對結構化數據的抽取,我們設計了基於 Xpath 解析的抽取平臺,如(圖 4 右)所示,我們只需要定義好抽取網頁的種子頁面如:baike.com,然後從網頁源碼中拷貝 Infobox 中屬性的 xpath 路徑即可實現結構化知識的自動抽取,入庫。通過結構化抽取平臺生成的數據準確率高,因此無需人工參與審覈即可直接入庫,它是知識圖譜的重要數據來源。

圖4 Topbase結構化抽取平臺的xpath配置界面
  1. 非結構化抽取平臺

由於大量的知識是蘊含在純文本中,爲了彌補結構化抽取信息的不足,我們設計了非結構化抽取平臺。非結構化抽取流程如圖 5 所示:

圖5 Topbase非結構化抽取平臺的技術框架

首先我們獲取知識圖譜中重要度高的實體名構建 Tri 樹,然後回標新聞數據和百科正文數據,並將包含實體的句子作爲候選抽取語料(新聞和百科數據需要區別對待,新聞數據往往包含最及時和最豐富的三元組信息,百科數據質量高,包含準確的知識,且百科摘要或正文描述相對簡單,抽取結果的準確率高)。

然後,我們利用 Topbase 的實體鏈接服務,將匹配上的實體鏈接到知識庫的已有實體中,避免了後期的數據融合。比如:實體“李娜”匹配到一句話是“歌手李娜最終歸一了佛門”,那麼這句話中的李娜會對應到知識庫中的歌手李娜,而不是網球李娜,從這句話中抽取的結果只會影響歌手李娜的。實體鏈接之後,我們將候選語料送入我們的抽取服務,得到實體的三元組信息。

最後,三元組結果會和知識庫中已有的三元組數據進行匹配並給每一個抽取得到的三元組結果進行置信度打分,如果知識庫已經存在該三元組信息則過濾,如果知識庫中三元組和抽取得到的三元組發生衝突則進入衆包標註平臺,如果三元組是新增的知識則根據他們的分值決定是否可以直接入庫或者送入標註平臺。此外,標註平臺的結果數據會加入到抽取服務中 Fine-tune 模型,不斷提升抽取模型的能力。

上述流程中的核心是抽取服務模塊,它是非結構化抽取策略的集合。抽取服務構建流程如圖 6 所示,其主要包括離線模型構建部分以及在線服務部分。離線模型構建的重點主要在於如何利用遠監督的方式構建抽取模型的訓練數據以及訓練抽取模型。在線流程重點是如何針對輸入的文本進行預處理,走不同的抽取策略,以及抽取結果的後處理。針對不同屬性信息的特點,抽取策略主要可以簡單歸納爲三大類方法:

圖6 Topbase的非結構化抽取服務

3. 專項抽取

專項抽取模塊主要是針對一些重要知識的抽取。目前知識圖譜設計的專項抽取內容主要有:上位詞抽取(概念),實體描述抽取,事件抽取,別名抽取等。

1 ) 上位詞抽取: 上位詞可以理解爲實體細粒度的概念,有助於更好的理解實體含義。圖 7 是構建上位詞圖譜的一個簡要流程圖,其中主要從三路數據源中抽取上位詞數據,主要包括:知識圖譜的屬性數據,百科人工標註 Tag,純文本語料。由於抽取得到的上位詞表述多樣性問題,所以需要在抽取後進行同義上位詞合併。此外,抽取生成的上位詞圖譜也會存在着知識補全的問題,所以需要進一步的進行圖譜的連接預測,進行上位詞圖譜的補全。

圖7 上位詞抽取流程

2) 實體描述 tag 抽取: 實體描述 tag 是指能夠描述實體某個標籤的短句,圖 7 是從新聞文本數據中挖掘到的實體“李子柒”的部分描述 tag。描述 tag 目前主要用於相關實體推薦理由生成,以及搜索場景中實體信息展示。描述 tag 抽取的核心模塊以 QA-bert 爲主的序列標註模型,query 是給定的實體信息,答案是句子中的描述片段。此外,還包括一系列的預處理過濾模塊和後處理規整過濾模塊。

圖8  描述tag的示列說明

3)事件抽取:事件抽取的目的是合併同一事件的新聞數據並從中識別出事件的關鍵信息生成事件的描述。事件抽取的基本流程如圖 8 所示。

圖9  Topbase的事件抽取流程框圖

六、知識規整 - 實體分類

知識規整目的是將實體數據映射到知識體系,並對其關係屬性等信息進行去噪,歸一化等預處理。如圖 9 所示,左側是從百科頁面獲取的武則天人物信息,右側是從電影相關網站中獲得的武則天信息,那麼左側的“武則天”應該被視爲“人物類--歷史人物--帝王”,右側“武則天”應該被視爲“作品--影視作品--電影”。左側人物的“民族”屬性的原始名稱爲“民族族羣”,所以需要將其規整爲 schema 定義的“民族”,這稱之爲屬性歸一。此外,由於不同來源的數據對實體名稱會有不同的註釋,如豆瓣的“武則天”這部電影后面加了一個年份備註,所以我們還需要對實體名進行還原處理等各種清洗處理。知識規整的核心模塊是如何將實體映射到知識體系,即實體分類。

圖10 數據規整的示列說明

1. 實體分類的挑戰:

圖11 實體分類中屬性歧義問題
圖12 實體分類中簡介迷惑性問題

2.實體分類方法:實體分類本質是一個多分類問題。針對知識庫的特點以及上述挑戰,我們分別從訓練樣本構建,特徵選擇以及模型設計三方面實現實體分類模塊。

1 )實體分類的訓練樣本構建:

圖13 實體分類訓練數據構建流程
圖14 Topbase中用於實體分類的屬性規則配置頁面
圖15 實體分類訓練數據自清洗流程

2) 實體分類的特徵選擇:

3) 實體分類模型

圖16 實體分類基礎模型

七、知識融合 - 實體對齊

知識融合的目的是將不同來源的數據進行合併處理。如從搜狗百科,體育頁面以及 QQ 音樂都獲取到了"姚明"信息,首先需要判斷這些來源的"姚明"是否指同一實體,如果是同一個實體(圖 18 中的搜狗和虎撲的姚明頁面)則可以將他們的信息進行融合,如果不是(QQ 音樂的姚明頁面)則不應該將其融合。知識融合的核心是實體對齊,即如何將不同來源的同一個實體進行合併。

圖18  知識融合示列說明

1.實體對齊挑戰

圖19  來自於百科和旅遊網站的武夷山頁面信息
圖20  兩部還珠格格的信息內容

2.實體對齊的解決思路

實體對齊的整體流程如圖所示,其主要環節包括數據分桶,桶內實體相似度計算,桶內實體的聚類融合。

圖21  Topbase實體對齊流程圖

1)數據分桶:數據分桶的目的是對所有的多源實體數據進行一個粗聚類,粗聚類的方法基於簡單的規則對數據進行分桶,具體規則主要是同名(原名或者別名相同)實體分在一個桶內,除了基於名稱匹配,我們還採用一些專有的屬性值進行分桶,如出生年月和出生地一致的人物分在一個桶。

2)實體相似度計算:實體相似度直接決定了兩個實體是否可以合併,它是實體對齊任務中的核心。爲了解決相似屬性稀疏導致的欠融合問題,我們引入異構網絡向量化表示的特徵,爲了解決同系列作品極其相似的過融合問題,我們引入了互斥特徵。

圖22 多源異構網絡關聯圖
圖23 實體對相似度打分模塊

3) 相似實體的聚類合併:

八、 知識關聯和推理

知識關聯(鏈接預測)是將實體的屬性值鏈接到知識庫的實體中,構建一條關係邊,如圖 24 所示“三國演義”的作者屬性值是“羅貫中”字符串,知識關聯需要將該屬性值鏈接到知識庫中的實體“羅貫中”,這樣實體“三國演義”和“羅貫中”之間存在一條“作者”的關係邊。

圖24  基於超鏈接關聯的示列說明

Topbase 的知識關聯方案分爲基於超鏈接的關聯和基於 embedding 的文本關聯兩種方式。超鏈接關聯是 Topbase 進行關聯和推理的第一步,它是利用網頁中存在的超鏈接對知識圖譜中的實體進行關聯,如百科“三國演義”頁面中,其“作者”屬性鏈接到“羅貫中”的百科頁面(如圖 24 所示),基於這種超鏈接的跳轉關係,可以在 Topbase 的實體之間建立起一條邊關係,如該示列會在實體“三國演義”與“羅貫中”之間生成一條“作者”關係,而“曹操”並沒有該超鏈接,所以三國演義的主要人物屬性中的字符串“曹操”不會關聯到具體的實體頁面中。在進行超鏈接關聯之前,Topbase 中的實體是一個個孤立的個體,超鏈接關聯爲知識圖譜補充了第一批邊關係,但是超鏈接關聯無法保證鏈接的覆蓋率。

基於此,Topbase 提出基於 embedding 的文本關聯。基於 embedding 的文本關聯是在已知頭實體、關係的基礎上,在候選集中對尾實體進行篩選,尾實體的候選集是通過別名匹配召回。如上述百科示列中的“主要人物”屬性,我們利用其屬性值字符串”曹操“去 Topbase 庫裏匹配,召回所有和”曹操”同名稱的實體作爲建立鏈接關係的候選。然後利用知識庫 embedding 的方法從候選實體中選擇最相似的實體作爲他的鏈接實體。基於文本名稱的匹配召回候選可以大大提高知識庫 embeding 方法的鏈接預測效果。基於 embedding 的鏈接關係預測是通過模型將實體和關係的屬性信息、結構信息嵌入到一個低維向量中去,利用低維向量去對缺失的尾實體進行預測。

當前採用的嵌入模型是 TextEnhanced+TransE,模型結構如圖 25 所示。TransE 是將實體與關係映射到同一向量空間下,它是依據已有的邊關係結構對實體之間的邊關係進行預測,對孤立實體或鏈接邊較少的實體預測效果較差。爲了引入文本信息,解決模型對孤立實體預測的難題,模型使用 TextEnhanced 對文本信息進行嵌入。TextEnhanced 通過 NN 模型對文本信息嵌入後,利用 Attention 機制將文本信息嵌入到 Trans 系列的實體向量中,進而對尾實體進行預測。

圖25  TextEnhanced+TransE結構圖

由於知識關聯是在已知屬性值的前提下,通過名稱匹配的方式得到關聯實體的候選集,所以知識關聯無法補充缺失屬性值的鏈接關係。如上圖中“三國演義”的信息中並沒有“關羽”,知識推理目的是希望能夠挖掘“三國演義”和“關羽”的潛在關係。爲了保證圖譜數據的準確率,Topbase 的知識推理主要以規則推理爲主,具體的規則方法可以歸納爲以下幾類:

圖26  伴隨推理的示列說明
表2 Topbase的伴隨推理規則庫示列
圖27  反向推理的示列說明
表3 Topbase的反向關聯規則庫示列
圖28 多實體推理的兩種形式示列說明

九、 實體知名度計算

實體的知名度(Popularity)指標可以用於量化不同實體的重要性程度,方便我們更好的使用圖譜數據。Topbase 知識庫的 popularity 計算以基於實體鏈接關係的 pagerank 算法爲核心,以對新熱實體的 popularity 調整爲輔,並配以直接的人工干預來快速解決 badcase。具體地,首先抽取實體頁面之間的超鏈接關係,以此爲基礎通過修改後的 pagerank 算法來計算所有實體的 popularity;對於難以通過 pagerank 算法計算的新熱實體的 popularity,再進行規則干預。最後對於仍然難以解決的 case,則直接對其 popularity 值進行人工賦值。Popularity 計算模塊的整體流程如下圖所示:

圖29  Topbase實體知名度計算流程
圖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。

十、 知識庫的存儲和查詢

知識圖譜是一種典型的圖結構數據集合,實體是圖中的節點,關係(屬性)是帶有標籤的邊。因此,基於圖結構的存儲方式能夠直接正確地反映知識圖譜的內部結構,有利於知識的查詢。如下圖所示,紅色圈代表實體,實線是邊(妻子),表示實體間的關係,如“劉德華的妻子是朱麗倩”, 虛線 是屬性(出生日期),表示實體具有的屬性,如“劉德華的出生日期是 1961 年 9 月 27 日”。

圖31 圖數據說明

Topbase 知識圖譜的存儲是基於分佈式圖數據庫 JanusGraph,選擇 JanusGraph 的主要理由有:1)JanusGraph 完全開源,像 Neo4j 並非完全開源;2)JanusGraph 支持超大圖,圖規模可以根據集羣大小調整;3)JanusGraph 支持超大規模併發事務和可操作圖運算,能夠毫秒級的響應在海量圖數據上的複雜的遍歷查詢操作等。

Topbase基於 JanusGraph 存儲查詢架構如下:

圖32  基於JanusGraph的存儲查詢系統

十一、總結

由於知識圖譜的構建是一項龐大的數據工程,其中各環節涉及的技術細節無法在一篇文檔中面面俱到。本文主要梳理 Topbase 構建過程中的技術經驗,從 0 到 1 的介紹了圖譜構建流程,希望對圖譜建設者有一定的借鑑意義。

相關文章