摘要:超鏈接關聯是 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. 針對熱門實體信息的更新策略主要有:

  • 從各大站點主頁更新,定時遍歷重點網站種子頁,採用廣搜的方式層層下載實體頁面信息;

  • 從新聞語料中更新,基於新聞正文文本中挖掘新實體,然後拼接實體名稱生成百科 URL 下載;

  • 從搜索 query log 中更新,通過挖掘 querylog 中的實體,然後拼接實體生成百科 URL 下載。基於 querylog 的實體挖掘算法主要是基於實體模板庫和我們的 QQSEG-NER 工具;

  • 從知識圖譜已有數據中更新,知識圖譜已有的重要度高的實體定期重新下載;

  • 從人工運營中更新,將人工(業務)獲得的 URL 送入下載平臺獲取實體信息;

  • 從相關實體中更新,如果某個熱門實體信息變更,則其相關實體信息也有可能變更,所以需要獲得熱門實體的相關實體,進行相應更新。

表 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 所示,其主要包括離線模型構建部分以及在線服務部分。離線模型構建的重點主要在於如何利用遠監督的方式構建抽取模型的訓練數據以及訓練抽取模型。在線流程重點是如何針對輸入的文本進行預處理,走不同的抽取策略,以及抽取結果的後處理。針對不同屬性信息的特點,抽取策略主要可以簡單歸納爲三大類方法:

  • 基於規則的抽取模塊:有些屬性具有很強的模板(規則)性質,所以可以通過人工簡單的配置一些模板規則就可以獲得高準確率的三元組結果。一般百科摘要文本內容描述規範,適合於規則抽取的輸入數據源。此外,適用於規則抽取的屬性主要有上位詞,別名,地理位置,人物描述 tag 等。當然,規則模塊召回有限往往還得搭配模型抽取模塊,但是規則模塊結果適合直接入庫,無需標註人員審覈。

  • 基於 mention 識別+關係分類模塊:基本思想是先用 NER 或者詞典匹配等方式識別出句子中的 mention,然後利用已有的實體信息以及識別出來的 mention 進行屬性分類。舉例:給定識別出 mention 的句子“<org>騰訊</org>公司是由<per>馬化騰</per>創立的。”,用 schema 對輸入進行調整,一種情況是 org 作爲頭實體,per 作爲尾實體,那麼該樣本的分類結果是關係“創始人”,另一種情況是 per 作爲頭實體,org 作爲尾實體,那麼該樣本的分類結果是“所屬公司”,所以最終可以得到三元組<騰訊,創始人,馬化騰>和<馬化騰,所屬公司,騰訊>。一般人物,地點,機構,影視劇,時間等實體可以利用 qqseg-ner 識別。詞典性質的實體如:職業,名族,國籍,性別等適合於詞典匹配的方式識別。

  • 基於序列標註模塊:此外,還有許多屬性值是無法進行 mention 識別,因此針對這類屬性,我們採用一種序列標註的聯合抽取方式來同時識別實體的屬性值以及屬性。這類屬性主要有人物的“主要成就”信息,人物的描述 tag 信息,以及一些數值型屬性信息。

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

3. 專項抽取

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

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

圖7 上位詞抽取流程

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

圖8  描述tag的示列說明

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

圖9  Topbase的事件抽取流程框圖
  • 預處理階段主要是對新聞流數據按照實體進行分堆處理。

  • 事件聚類階段主要是對每一堆的新聞數據進行關鍵詞的提取等操作,將堆內的新聞進一步的聚類。

  • 事件融合主要包括同批次事件融合和增量事件融合。事件抽取流程是分批次對輸入數據進行處理。同批次事件融合主要解決不同實體屬於同一事件的情況,將前一步得到的類簇進行合併處理。增量事件融合是將新增的新聞數據和歷史 Base 的事件庫進行增量融合。

  • 最後,我們需要識別每一個事件類簇中的事件元素,過濾無效事件,生成事件的描述。

六、知識規整 - 實體分類

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

圖10 數據規整的示列說明

1. 實體分類的挑戰:

  • 概念類別多(200+類),具有層次性,細分類別差異小(電影,電視劇);

  • 實體屬性存在歧義:

圖11 實體分類中屬性歧義問題
  • 實體名稱或者實體簡介信息具有迷惑性:例如實體"菅直人"是一個政治家,其名稱容易和民族類別混淆,電影“寄生蟲”簡介如下圖所示,其內容和人物概念極其相似。

圖12 實體分類中簡介迷惑性問題

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

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

圖13 實體分類訓練數據構建流程
  • 屬性規則模塊:每個實體頁面包含了實體結構化屬性信息,利用這些屬性字段可以對實體進行一個規則的分類。如:人物類別的實體大多包含民族,出生日期,職業等字段,歌手類實體的職業字段中可能有“歌手”的屬性值。通過構建正則式規則,可以批量對實體頁面進行分類。基於規則模塊得到的類別信息準確率高,但是泛化能力弱,它的結果既可以作爲後續分類模型的訓練數據 1 也可以作爲實體分類的一路重要分類結果。

圖14 Topbase中用於實體分類的屬性規則配置頁面
  • 簡介分類模塊:簡介分類模塊以規則模塊的數據作爲訓練數據,可以得到一個以簡介爲實體分類依據的分類模型,然後基於該模型預測屬性規則模塊無法識別的實體,選擇高置信度的結果作爲訓練數據 2。

  • 自動構建的訓練數據去噪模塊:基於規則和簡介分類模塊可以得到部分分類樣本,但是這些訓練樣本不可避免的會引入噪聲,所以我們引入 N-折交叉訓練預測自清洗數據,進一步保留高置信的訓練樣本,清洗思路如下圖所示。

圖15 實體分類訓練數據自清洗流程
  • 運營模塊:運營模塊主要包括日常 badcase 收集以及標註人員審覈的預測置信度不高的樣本。運營數據會結合自動構建數據,聯合訓練最終的實體分類模型。

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

  • 屬性名稱:除了通用類的屬性名稱,如:中文名,別名,正文,簡介等,其他屬性名稱都作爲特徵;

  • 屬性值:不是所有的屬性值都是有助於實體分類,如性別的屬性值“男”或者“女”對區分該實體是“商業人物”和“娛樂人物”沒有幫助,但是職業的屬性值如“歌手”“CEO”等對於實體的細類別則有很強的指示作用,這些屬性值可以作爲實體細分類的重要特徵。一個屬性值是否需要加入他的屬性值信息,我們基於第一部分得到的訓練數據,利用特徵選擇指標如卡方檢驗值,信息增益等進行篩選。

  • 簡介:由於簡介內容相對較長且信息冗餘,並非用得越多越好。針對簡介的利用我們主要採用百科簡介中頭部幾句話中的主語是該實體的句子。

3) 實體分類模型

  • 模型架構:基於 bert 預訓練語言模型的多 Label 分類模型

圖16 實體分類基礎模型
  • 模型輸入:我們針對上述特徵進行拼接作爲 bert 的輸入,利用[sep]隔開實體的兩類信息,每一類信息用逗號隔開不同部分。第一類信息是實體名稱和實體簡介,刻畫了實體的一個基本描述內容,第二類信息是實體的各種屬性,刻畫了實體的屬性信息。例如,劉德華的輸入形式如下:

    圖17  實體分類模型的輸入形式
  • 模型 loss:基於層次 loss 方式,實體 Label 是子類:父類 Label 要轉換爲正例計算 loss;實體 Label 是父類:所有子類 label 以一定概率 mask 不產生負例 loss,避免訓練數據存在的細類別漏召回問題。

七、知識融合 - 實體對齊

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

圖18  知識融合示列說明

1.實體對齊挑戰

  • 不同來源實體的屬性信息重疊少,導致相似度特徵稀疏,容易欠融合;

圖19  來自於百科和旅遊網站的武夷山頁面信息
  • 同系列作品(電影,電視劇)相似度高,容易過融合,如兩部還珠格格電視劇

圖20  兩部還珠格格的信息內容
  • 多路來源的實體信息量很大(億級別頁面),如果每次進行全局融合計算複雜度高,而且會產生融合實體的 ID 漂移問題。

2.實體對齊的解決思路

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

圖21  Topbase實體對齊流程圖

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

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

  • 異構網絡向量化表示特徵:每個來源的數據可以構建一個同源實體關聯網絡,邊是兩個實體頁面之間的超鏈接,如下圖所示,百科空間可以構建一個百科實體關聯網絡,影視劇網站可以構建一個影視劇網站的實體關聯網絡。不同空間的兩個實體,如果存在高重合度信息,容易判別二者相似度的兩個實體,可以建立映射關係(如影視劇網站的梁朝偉頁面和百科的梁朝偉頁面信息基本一致,則可以認爲二者是同一個實體,建立鏈接關係),這樣可以將多源異構網絡進行合併,梁朝偉和劉德華屬於連接節點,兩個無間道重合信息少,則作爲兩個獨立的節點。然後基於 deepwalk 方式得到多源異構網絡的節點向量化表示特徵。

圖22 多源異構網絡關聯圖
  • 文本相似特徵:主要是針對存在簡介信息的實體,利用 bert 編碼得到向量,如果兩個實體都存在簡介信息,則將兩個簡介向量進行點乘得到他們的文本相似度特徵;

  • 基本特徵:其他屬性的相似度特徵,每一維表示屬性,每一維的值表示該屬性值的一個 Jaccard 相似度;

  • 互斥特徵:主要解決同系列作品及其相似的問題,人工設定的重要區分度特徵,如電視劇的集數,系列名,上映時間。

  • 最後,按照下圖結構將上述相似度特徵進行融合預測兩兩實體是否是同一實體;

圖23 實體對相似度打分模塊

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

  • Base 融合:在上述步驟的基礎上,我們採用層次聚類算法,對每一個桶的實體進行對齊合併,得到 base 版的融合數據,然後賦予每一個融合後的實體一個固定的 ID 值,這就得到了一個 Base 的融合庫;

  • 增量融合:對於每日新增的實體頁面信息,我們不再重新進行聚類處理,而是採用“貼”的模式,將每一個新增實體頁面和已有的融合實體進行相似度計算,判斷該實體頁面應該歸到哪一個融合實體中,如果相似度都低於設置的閾值,則該新增實體獨立成一堆,並設置一個新的融合實體 ID。增量融合的策略可以避免每次重複計算全量實體頁面的融合過程,方便數據及時更新,同時保證各個融合實體的穩定性,不會輕易發生融合實體 ID 的漂移問題;

  • 融合拆解:由於 Base 融合可能存在噪聲,所以我們增加了一個融合的修復模塊,針對發現的 badcase,對以融合成堆的實體進行拆解重新融合,這樣可以局部修復融合錯誤,方便運營以及批量處理 badcase。

八、 知識關聯和推理

知識關聯(鏈接預測)是將實體的屬性值鏈接到知識庫的實體中,構建一條關係邊,如圖 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 的知識推理主要以規則推理爲主,具體的規則方法可以歸納爲以下幾類:

  • 伴隨推理是在已經被鏈接的兩個實體之間,根據兩個實體的屬性信息,發現兩者間蘊含的其它關係。例如實體 A 已經通過“配偶”關係與實體 B 相連,實體 A 的性別爲“男”,實體 B 的性別爲“女”,則伴隨推理會生成一條“妻子”關係邊,將實體 A 與實體 B 鏈接在一起,代表 B 爲 A 的妻子。伴隨推理的規則可以通過統計同時關聯起兩個實體的屬性共現比例得到。

圖26  伴隨推理的示列說明
表2 Topbase的伴隨推理規則庫示列
  • 反向推理是依據邊之間的互反關係,爲已經鏈接的兩個實體再添加一條邊。比如實體 A 通過“作者”邊與實體 B 相連,代表實體 B 是實體 A 的作者,則可以直接生成一條從實體 B 指向實體 A 的“作品”邊,代表實體 A 是實體 B 的作品,因爲“作品”與“作者”是一條互反關係。反向推理與伴隨推理類似,都是在已經存在邊關係的實體之間,挖掘新的邊關係,不同的是,伴隨推理在生成邊關係時需要滿足一定的屬性條件,如上例中的“性別”限制,而反向推理直接通過已有的邊關係,無需參考其它屬性值,直接生成一條互反邊關係。反向推理規則可以通過統計 A-B,B-A 的屬性共現數量篩選。

圖27  反向推理的示列說明
表3 Topbase的反向關聯規則庫示列
  • 多實體推理是在多個實體之間挖掘蘊含的邊關係,是一種更復雜的關聯規則,如第一種形式:A 的父親是 B,B 的母親是 C,則 A 的奶奶是 C,該形式通過統計 A+PATH = C,A+R0=C,情況得到規則  [PATH(R1R2)=R0];第二種形式是 A 的母親是 B,A 的兒子 C,則 B 的孫子是 C,該形式通過統計:A+R1 = B,A+R2=C,B+R0=C 的情況,得到規則[R1 &R2 = R0]。

圖28 多實體推理的兩種形式示列說明

九、 實體知名度計算

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

圖29  Topbase實體知名度計算流程
  • 多類型邊關係的 pagerank 算法:基於鏈接關係的 popularity 計算方法的出發點在於:一個實體 A 對另一個實體 B 的引用(鏈接),表示實體 A 對於實體 B 的認可,鏈接到 B 的實體越多,表示 B 受到的認可越多,由此推斷它的知名度也就越高。但實際上有很多的鏈接關係並不是出於“認可”而產生的,只是簡單的表示它們之間有某種關係。比如歌手與專輯、音樂之間的各種關係。一個專業的音樂網站會收錄歌手、專輯、音樂之間的完整從屬關係,這會導致同一個歌手或同一張專輯之內的熱門歌曲與其它歌曲之間沒有任何區分性。並且由於這幾類實體之間高密度的鏈接關係,會導致它們的計算結果比其它類別的實體的都高出很多。

    因此有必要對實體之間不同的鏈接關係進行區別對待。與最基礎的 pagerank 算法的不同在於:實體之間可以有多條邊,且有多種類型的邊。在進行迭代計算的過程中,不同類型的邊對流經它的概率分佈會有不同程度的擬製作用。之所以進行這樣的修改,是因爲知識庫中實體的信息有多種不同的來源。有的實體來源於通用領域百科,有的實體來源於垂類領域網站等。甚至同一個實體內部,不同的屬性信息也會有不同的來源。由此,實體之間的鏈接關係也會屬於不同的來源。比如“劉德華”與“朱麗倩”之間的“夫妻”關係可能抽取自百科,而與“無間道”之間的“參演”關係可能來自於電影網站。不同來源的信息有着不同的可信度,有的經過人工的審覈編輯,可信度很高;而有的則屬於算法自動生成,會有不同程度的錯誤。

    因此鏈接關係之間也有可信度的差別,無法做到將它們一視同仁地看待。其次,有的鏈接關係即使在可靠性方面完全正確,但它們對於 popularity 的正確計算不僅沒有太大幫助,反而會導致 popularity 的計算結果與預期不符。修改後的 pagerank 算法的計算過程與基礎 pagerank 算法基本一致,只是在進行分佈概率的流轉時有所區別。下面進行舉例說明:

圖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 值。但由於是新近出現的實體,其與其它實體的鏈接關係非常匱乏,因此無法通過基於實體鏈接關係的這類方法來計算。對此我們採取的方案側重於對新熱實體的發現,然後對發現的新熱實體的 popularity 進行調整,使其 popularity 值在同名實體中處於最高的位置。新熱實體的發現目前基於兩類方法:一類方法發現的熱門實體可以直接對應到知識庫中的某個實體,另一個方法只能發現熱門的實體名,需要通過一些對齊方法與知識庫中的某個實體關聯起來。

    第一種方法從 Topbase 監控的重點網站頁面中直接獲取最近熱門的實體。這種方法獲取的實體可以直接通過 url 與知識庫中的某個實體準確無誤地關聯起來。第二類方法首先發現一些熱門的實體名,包括:一、從微博熱搜榜中爬取熱門話題,通過命名實體識別方法識別其中的人名和機構名,將其作爲熱門實體名;二、將新聞中每天曝光的高頻次標籤作爲實體名。以上兩種方法發現的實體名帶有一定的附加信息,通過實體鏈接可以將其對齊到知識庫中的某個實體。

十、 知識庫的存儲和查詢

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

圖31 圖數據說明

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

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

圖32  基於JanusGraph的存儲查詢系統
  • Graph_Loader 模塊主要是將上述數據生產流程得到的圖譜數據轉換爲 JanusGraph 存儲要求的格式,批量的將圖譜數據寫入圖數據庫存儲服務中,以及相關索引建立。

  • 圖數據庫存儲服務: JanusGraph 數據存儲服務可以選用 ScyllaDb、HBase 等作爲底層存儲,topbase 選用的是 ScyllaDb。Graph_loader 會每天定時的將數據更新到圖數據庫存儲服務。

  • 圖數據庫索引:由於 JanusGraph 圖數據庫存儲服務只支持一些簡單查詢,如:“劉德華的歌曲”,但是無法支持複雜查詢,如多條件查詢:“劉德華的 1999 年發表的粵語歌曲”。所以我們利用 Es 構建複雜查詢的數據索引,graph_loader 除了批量寫入數據到底層存儲之外,還會建立基於複雜查詢的索引。

  • 圖數據庫主服務:主服務通過 Gremlin 語句對圖數據庫的相關內容進行查詢或者改寫等操作。

十一、總結

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

相關文章