天天看點

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

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

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

知識圖譜( knowledge graph)以結構化的形式描述客觀世界中概念、實體及其關系,便于計算機更好的管理、計算和了解網際網路海量資訊。通常結構化的知識是以圖形式進行表示,圖的節點表示語義符号(實體,概念),圖的邊表示符号之間的語義關系(如圖 1 所示),此外每個實體還有一些非實體級别的邊(通常稱之為屬性),如:人物的出生日期,主要成就等。

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

圖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 雙料冠軍),相關實體推薦等。

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

圖2 知識圖譜topbase的技術架構

下載下傳平台-知識更新:下載下傳平台是知識圖譜擷取源資料平台,其主要任務包括新實體的發現和新實體資訊的下載下傳。

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

知識規整:通過抽取平台以及合作夥伴提供的資料我們可以得到大量的多源異構資料。為了友善對多源資料進行融合,知識規整環節需要對資料進行規整處理,将各路資料映射到我們的知識體系中。

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

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

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

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

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

其次是定義關系和屬性:定義了概念類别體系之後我們還需要為每一個類别定義關系和屬性。關系用于描述不同實體間的聯系,如:夫妻關系(連接配接兩個人物實體),作品關系(連接配接人物和作品實體)等;屬性用于描述實體的内在特征,如人物類實體的出生日期,職業等。關系和屬性的定義需要受概念類别體系的限制,下層需要繼承上層的關系屬性,例如所有歌手類實體應該都具有人物類的關系和屬性。我們采用半自動的方式生成每個概念類别體系下的關系屬性。我們通過擷取百科 infobox 資訊,然後将實體分類到概念類别體系下,再針對各類别下的實體關系屬性進行統計分析并人工稽核之後确定該概念類别的關系屬性。關系屬性的定義也是一個不斷完善積累的過程。

定義限制:定義關系屬性的限制資訊可以保證資料的一緻性,避免出現異常值,比如:年齡必須是 int 類型且唯一(單值),演員作品的值是 string 類型且是多值。

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

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

圖3 topbase知識更新流程圖

針對熱門實體資訊的更新政策主要有:

從各大站點首頁更新,定時周遊重點網站種子頁,采用廣搜的方式層層下載下傳實體頁面資訊;

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

從搜尋 query log 中更新,通過挖掘 querylog 中的實體,然後拼接實體生成百科 url 下載下傳。基于 querylog 的實體挖掘算法主要是基于實體模闆庫和我們的 qqseg-ner 工具;

從知識圖譜已有資料中更新,知識圖譜已有的重要度高的實體定期重新下載下傳;

從人工營運中更新,将人工(業務)獲得的 url 送入下載下傳平台擷取實體資訊;

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

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

表 1  最近 7 日下載下傳資料統計情況

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

topbase 的抽取平台主要包括結構化抽取,非結構化抽取和專項抽取。其中結構化抽取主要負責抽取網頁編輯者整理好的規則化知識,其準确率高,可以直接入庫。由于結構化知識的局限性,大量的知識資訊蘊含在純文字内容中,是以非結構化抽取主要是從純文字資料中挖掘知識彌補結構化抽取資訊的不足。此外,某些重要的知識資訊需要額外的設計專項政策進行抽取,比如:事件資訊,上位詞資訊(概念),描述資訊,别名資訊等。這些重要的知識抽取我們統稱專項抽取,針對不同專項的特點設計不同的抽取子產品。

1.  結構化抽取平台

許多網站提供了大量的結構化資料,如(圖 4 左)所示的百科 infobox 資訊。這種結構化知識很容易轉化為三元組,如:“<姚明,妻子,葉莉>”。針對結構化資料的抽取,我們設計了基于 xpath 解析的抽取平台,如(圖 4 右)所示,我們隻需要定義好抽取網頁的種子頁面如:baike.com,然後從網頁源碼中拷貝 infobox 中屬性的 xpath 路徑即可實作結構化知識的自動抽取,入庫。通過結構化抽取平台生成的資料準确率高,是以無需人工參與稽核即可直接入庫,它是知識圖譜的重要資料來源。

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

圖4 topbase結構化抽取平台的xpath配置界面

非結構化抽取平台

由于大量的知識是蘊含在純文字中,為了彌補結構化抽取資訊的不足,我們設計了非結構化抽取平台。非結構化抽取流程如圖 5 所示:

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

圖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 資訊,以及一些數值型屬性資訊。

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

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

3. 專項抽取

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

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

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

圖7 上位詞抽取流程

2) 實體描述 tag 抽取: 實體描述 tag 是指能夠描述實體某個标簽的短句,圖 7 是從新聞文本資料中挖掘到的實體“李子柒”的部分描述 tag。描述 tag 目前主要用于相關實體推薦理由生成,以及搜尋場景中實體資訊展示。描述 tag 抽取的核心子產品以 qa-bert 為主的序列标注模型,query 是給定的實體資訊,答案是句子中的描述片段。此外,還包括一系列的預處理過濾子產品和後處理規整過濾子產品。

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

圖8  描述tag的示列說明

3)事件抽取:  事件抽取的目的是合并同一事件的新聞資料并從中識别出事件的關鍵資訊生成事件的描述。事件抽取的基本流程如圖 8 所示。

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

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

預處理階段主要是對新聞流資料按照實體進行分堆處理。

事件聚類階段主要是對每一堆的新聞資料進行關鍵詞的提取等操作,将堆内的新聞進一步的聚類。

事件融合主要包括同批次事件融合和增量事件融合。事件抽取流程是分批次對輸入資料進行處理。同批次事件融合主要解決不同實體屬于同一事件的情況,将前一步得到的類簇進行合并處理。增量事件融合是将新增的新聞資料和曆史 base 的事件庫進行增量融合。

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

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

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

圖10 資料規整的示列說明

1. 實體分類的挑戰:

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

實體屬性存在歧義:

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

圖11 實體分類中屬性歧義問題

實體名稱或者實體簡介資訊具有迷惑性:例如實體"菅直人"是一個政治家,其名稱容易和民族類别混淆,電影“寄生蟲”簡介如下圖所示,其内容和人物概念極其相似。

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

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

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

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

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

圖13 實體分類訓練資料建構流程

屬性規則子產品:每個實體頁面包含了實體結構化屬性資訊,利用這些屬性字段可以對實體進行一個規則的分類。如:人物類别的實體大多包含民族,出生日期,職業等字段,歌手類實體的職業字段中可能有“歌手”的屬性值。通過建構正則式規則,可以批量對實體頁面進行分類。基于規則子產品得到的類别資訊準确率高,但是泛化能力弱,它的結果既可以作為後續分類模型的訓練資料 1 也可以作為實體分類的一路重要分類結果。

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

圖14 topbase中用于實體分類的屬性規則配置頁面

簡介分類子產品:簡介分類子產品以規則子產品的資料作為訓練資料,可以得到一個以簡介為實體分類依據的分類模型,然後基于該模型預測屬性規則子產品無法識别的實體,選擇高置信度的結果作為訓練資料 2。

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

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

圖15 實體分類訓練資料自清洗流程

營運子產品:營運子產品主要包括日常 badcase 收集以及标注人員稽核的預測置信度不高的樣本。營運資料會結合自動建構資料,聯合訓練最終的實體分類模型。

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

屬性名稱:除了通用類的屬性名稱,如:中文名,别名,正文,簡介等,其他屬性名稱都作為特征;

屬性值:不是所有的屬性值都是有助于實體分類,如性别的屬性值“男”或者“女”對區分該實體是“商業人物”和“娛樂人物”沒有幫助,但是職業的屬性值如“歌手”“ceo”等對于實體的細類别則有很強的訓示作用,這些屬性值可以作為實體細分類的重要特征。一個屬性值是否需要加入他的屬性值資訊,我們基于第一部分得到的訓練資料,利用特征選擇名額如卡方檢驗值,資訊增益等進行篩選。

簡介:由于簡介内容相對較長且資訊備援,并非用得越多越好。針對簡介的利用我們主要采用百科簡介中頭部幾句話中的主語是該實體的句子。

3) 實體分類模型

模型架構:基于 bert 預訓練語言模型的多 label 分類模型

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

圖16 實體分類基礎模型

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

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

圖17  實體分類模型的輸入形式

模型 loss:基于層次 loss 方式,實體 label 是子類:父類 label 要轉換為正例計算 loss;實體 label 是父類:所有子類 label 以一定機率 mask 不産生負例 loss,避免訓練資料存在的細類别漏召回問題。

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

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

圖18  知識融合示列說明

1. 實體對齊挑戰

不同來源實體的屬性資訊重疊少,導緻相似度特征稀疏,容易欠融合;

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

圖19  來自于百科和旅遊網站的武夷山頁面資訊

同系列作品(電影,電視劇)相似度高,容易過融合,如兩部還珠格格電視劇

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

圖20  兩部還珠格格的資訊内容

多路來源的實體資訊量很大(億級别頁面),如果每次進行全局融合計算複雜度高,而且會産生融合實體的 id 漂移問題。

2. 實體對齊的解決思路

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

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

圖21  topbase實體對齊流程圖

1)資料分桶:資料分桶的目的是對所有的多源實體資料進行一個粗聚類,粗聚類的方法基于簡單的規則對資料進行分桶,具體規則主要是同名(原名或者别名相同)實體分在一個桶内,除了基于名稱比對,我們還采用一些專有的屬性值進行分桶,如出生年月和出生地一緻的人物分在一個桶。

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

異構網絡向量化表示特征:每個來源的資料可以建構一個同源實體關聯網絡,邊是兩個實體頁面之間的超連結,如下圖所示,百科空間可以建構一個百科實體關聯網絡,影視劇網站可以建構一個影視劇網站的實體關聯網絡。不同空間的兩個實體,如果存在高重合度資訊,容易判别二者相似度的兩個實體,可以建立映射關系(如影視劇網站的梁朝偉頁面和百科的梁朝偉頁面資訊基本一緻,則可以認為二者是同一個實體,建立連結關系),這樣可以将多源異構網絡進行合并,梁朝偉和劉德華屬于連接配接節點,兩個無間道重合資訊少,則作為兩個獨立的節點。然後基于 deepwalk 方式得到多源異構網絡的節點向量化表示特征。

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

圖22 多源異構網絡關聯圖

文本相似特征:主要是針對存在簡介資訊的實體,利用 bert 編碼得到向量,如果兩個實體都存在簡介資訊,則将兩個簡介向量進行點乘得到他們的文本相似度特征;

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

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

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

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

圖23 實體對相似度打分子產品

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

base 融合:在上述步驟的基礎上,我們采用層次聚類算法,對每一個桶的實體進行對齊合并,得到 base 版的融合資料,然後賦予每一個融合後的實體一個固定的 id 值,這就得到了一個 base 的融合庫;

增量融合:對于每日新增的實體頁面資訊,我們不再重新進行聚類處理,而是采用“貼”的模式,将每一個新增實體頁面和已有的融合實體進行相似度計算,判斷該實體頁面應該歸到哪一個融合實體中,如果相似度都低于設定的門檻值,則該新增實體獨立成一堆,并設定一個新的融合實體 id。增量融合的政策可以避免每次重複計算全量實體頁面的融合過程,友善資料及時更新,同時保證各個融合實體的穩定性,不會輕易發生融合實體 id 的漂移問題;

融合拆解:由于 base 融合可能存在噪聲,是以我們增加了一個融合的修複子產品,針對發現的 badcase,對以融合成堆的實體進行拆解重新融合,這樣可以局部修複融合錯誤,友善營運以及批量處理 badcase。

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

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

圖24  基于超連結關聯的示列說明

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

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

目前采用的嵌入模型是 textenhanced+transe,模型結構如圖 25 所示。transe 是将實體與關系映射到同一向量空間下,它是依據已有的邊關系結構對實體之間的邊關系進行預測,對孤立實體或連結邊較少的實體預測效果較差。為了引入文本資訊,解決模型對孤立實體預測的難題,模型使用 textenhanced 對文本資訊進行嵌入。textenhanced 通過 nn 模型對文本資訊嵌入後,利用 attention 機制将文本資訊嵌入到 trans 系列的實體向量中,進而對尾實體進行預測。

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

圖25  textenhanced+transe結構圖

由于知識關聯是在已知屬性值的前提下,通過名稱比對的方式得到關聯實體的候選集,是以知識關聯無法補充缺失屬性值的連結關系。如上圖中“三國演義”的資訊中并沒有“關羽”,知識推理目的是希望能夠挖掘“三國演義”和“關羽”的潛在關系。為了保證圖譜資料的準确率,topbase 的知識推理主要以規則推理為主,具體的規則方法可以歸納為以下幾類:

伴随推理是在已經被連結的兩個實體之間,根據兩個實體的屬性資訊,發現兩者間蘊含的其它關系。例如實體 a 已經通過“配偶”關系與實體 b 相連,實體 a 的性别為“男”,實體 b 的性别為“女”,則伴随推理會生成一條“妻子”關系邊,将實體 a 與實體 b 連結在一起,代表 b 為 a 的妻子。伴随推理的規則可以通過統計同時關聯起兩個實體的屬性共現比例得到。

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

圖26  伴随推理的示列說明

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

表2 topbase的伴随推理規則庫示列

反向推理是依據邊之間的互反關系,為已經連結的兩個實體再添加一條邊。比如實體 a 通過“作者”邊與實體 b 相連,代表實體 b 是實體 a 的作者,則可以直接生成一條從實體 b 指向實體 a 的“作品”邊,代表實體 a 是實體 b 的作品,因為“作品”與“作者”是一條互反關系。反向推理與伴随推理類似,都是在已經存在邊關系的實體之間,挖掘新的邊關系,不同的是,伴随推理在生成邊關系時需要滿足一定的屬性條件,如上例中的“性别”限制,而反向推理直接通過已有的邊關系,無需參考其它屬性值,直接生成一條互反邊關系。反向推理規則可以通過統計 a-b,b-a 的屬性共現數量篩選。

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

圖27  反向推理的示列說明

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

表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]。

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

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

實體的知名度(popularity)名額可以用于量化不同實體的重要性程度,友善我們更好的使用圖譜資料。topbase 知識庫的 popularity 計算以基于實體連結關系的 pagerank 算法為核心,以對新熱實體的 popularity 調整為輔,并配以直接的人工幹預來快速解決 badcase。具體地,首先抽取實體頁面之間的超連結關系,以此為基礎通過修改後的 pagerank 算法來計算所有實體的 popularity;對于難以通過 pagerank 算法計算的新熱實體的 popularity,再進行規則幹預。最後對于仍然難以解決的 case,則直接對其 popularity 值進行人工指派。popularity 計算子產品的整體流程如下圖所示:

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

圖29  topbase實體知名度計算流程

多類型邊關系的 pagerank 算法: 基于連結關系的 popularity 計算方法的出發點在于:一個實體 a 對另一個實體 b 的引用(連結),表示實體 a 對于實體 b 的認可,連結到 b 的實體越多,表示 b 受到的認可越多,由此推斷它的知名度也就越高。但實際上有很多的連結關系并不是出于“認可”而産生的,隻是簡單的表示它們之間有某種關系。比如歌手與專輯、音樂之間的各種關系。一個專業的音樂網站會收錄歌手、專輯、音樂之間的完整從屬關系,這會導緻同一個歌手或同一張專輯之内的熱門歌曲與其它歌曲之間沒有任何區分性。并且由于這幾類實體之間高密度的連結關系,會導緻它們的計算結果比其它類别的實體的都高出很多。

是以有必要對實體之間不同的連結關系進行差別對待。與最基礎的 pagerank 算法的不同在于:實體之間可以有多條邊,且有多種類型的邊。在進行疊代計算的過程中,不同類型的邊對流經它的機率分布會有不同程度的拟制作用。之是以進行這樣的修改,是因為知識庫中實體的資訊有多種不同的來源。有的實體來源于通用領域百科,有的實體來源于垂類領域網站等。甚至同一個實體内部,不同的屬性資訊也會有不同的來源。由此,實體之間的連結關系也會屬于不同的來源。比如“劉德華”與“朱麗倩”之間的“夫妻”關系可能抽取自百科,而與“無間道”之間的“參演”關系可能來自于電影網站。不同來源的資訊有着不同的可信度,有的經過人工的稽核編輯,可信度很高;而有的則屬于算法自動生成,會有不同程度的錯誤。

是以連結關系之間也有可信度的差别,無法做到将它們一視同仁地看待。其次,有的連結關系即使在可靠性方面完全正确,但它們對于 popularity 的正确計算不僅沒有太大幫助,反而會導緻 popularity 的計算結果與預期不符。修改後的 pagerank 算法的計算過程與基礎 pagerank 算法基本一緻,隻是在進行分布機率的流轉時有所差別。下面進行舉例說明:

萬字詳解:騰訊如何自研大規模知識圖譜 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。

新熱實體的 popularity 調整:新熱實體的含義為最新出現的熱門實體。這類實體需要較高的 popularity 值。但由于是新近出現的實體,其與其它實體的連結關系非常匮乏,是以無法通過基于實體連結關系的這類方法來計算。對此我們采取的方案側重于對新熱實體的發現,然後對發現的新熱實體的 popularity 進行調整,使其 popularity 值在同名實體中處于最高的位置。新熱實體的發現目前基于兩類方法:一類方法發現的熱門實體可以直接對應到知識庫中的某個實體,另一個方法隻能發現熱門的實體名,需要通過一些對齊方法與知識庫中的某個實體關聯起來。

第一種方法從 topbase 監控的重點網站頁面中直接擷取最近熱門的實體。這種方法擷取的實體可以直接通過 url 與知識庫中的某個實體準确無誤地關聯起來。第二類方法首先發現一些熱門的實體名,包括:一、從微網誌熱搜榜中爬取熱門話題,通過命名實體識别方法識别其中的人名和機構名,将其作為熱門實體名;二、将新聞中每天曝光的高頻次标簽作為實體名。以上兩種方法發現的實體名帶有一定的附加資訊,通過實體連結可以将其對齊到知識庫中的某個實體。

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

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

圖31 圖資料說明

topbase 知識圖譜的存儲是基于分布式圖資料庫 janusgraph,選擇 janusgraph 的主要理由有:1)janusgraph 完全開源,像 neo4j 并非完全開源;2)janusgraph 支援超大圖,圖規模可以根據叢集大小調整;3)janusgraph 支援超大規模并發事務和可操作圖運算,能夠毫秒級的響應在海量圖資料上的複雜的周遊查詢操作等。

topbase基于janusgraph存儲查詢架構如下:

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

圖32  基于janusgraph的存儲查詢系統

graph_loader 子產品主要是将上述資料生産流程得到的圖譜資料轉換為 janusgraph 存儲要求的格式,批量的将圖譜資料寫入圖資料庫存儲服務中,以及相關索引建立。

圖資料庫存儲服務:janusgraph資料存儲服務可以選用 scylladb、hbase 等作為底層存儲,topbase 選用的是 scylladb。graph_loader 會每天定時的将資料更新到圖資料庫存儲服務。

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

圖資料庫主服務:主服務通過 gremlin 語句對圖資料庫的相關内容進行查詢或者改寫等操作。

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

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

繼續閱讀