知識圖譜 綜述,構建,存儲與應用

本文介紹知識圖譜,首先會講一段知識圖譜的綜述做爲開場,而後就知識圖譜的構建,存儲,還有應用進行具體說明。
幻燈片1.JPG前端

知識圖譜和咱們的資源頁比較相似,都是須要先構建,而後存儲,以後應用。
知識圖譜應用普遍,我會以推薦系統爲例子,說明知識圖譜在推薦系統中的應用。
幻燈片2.JPGgit

知識圖譜綜述

咱們首先對知識圖譜作一個簡短的綜述。
幻燈片3.JPGgithub

計算機爲何須要知識?
好比數字110,對機器來講,110就是一個字符串,與其餘數字沒有太大的差異。
固然能夠藉助關聯分析,分析出110跟警察,搶劫等相關。可是關聯分析比較複雜,須要藉助數據挖掘等相關技術。
若是採用知識庫,只須要構建一條知識,即110是報警電話。算法

人工智能分爲三個層次,分別是運算智能,感知智能和認知智能。
運算智能是讓機器能存會算;感知智能是讓機器能聽會說、能看會認;認知智能是解決機器能理解會思考的問題。數據庫

認知智能須要知識圖譜。
幻燈片4.JPG微信

知識圖譜是一個大規模語義網,包含實體和關係,好比章子怡的丈夫是汪峯;
也包含實體和屬性,好比章子怡的出生日期是1979年2月9日。
還包含實體和概念,好比章子怡是一個女演員;
還包含概念之間的關係,好比女演員是演員的子類。演員是人物的子類。
幻燈片5.JPG網絡

百科圖譜通常由標題,摘要,信息框,標籤,圖片等部分組成。
可抽取信息框的內容構建知識圖譜,並進行可視化展現。
其中,對於題目理解來說,函數的提出者,提出時間這些屬性不是咱們所關心的。
表達式,表示法,三要素是咱們關心的屬性。
幻燈片6.JPG框架

知識圖譜可使能搜索與問答,好比搜索函數的三要素,能夠直接獲得結果:定義域,值域,對應法則。
幻燈片7.JPGdom

知識圖譜還可使能Query補全,好比輸入函數的,推薦的候選Queries爲函數的定義,函數的三種表示方法等。
幻燈片8.JPGide

知識圖譜強調世界是由實體而不是字符串組成的,好比題目中的函數,f(x), 定義域等在知識圖譜中都是一個個實體,而不是字符串。
幻燈片9.JPG

那麼什麼是知識圖譜呢?
知識圖譜是一個大規模語義網,由實體,概念等節點和屬性,關係,類型等邊構成。
是許多三元組的集合。每個三元組是由主語(subject),謂語(predicate),賓語(object)構成。
好比中國,上海,姚明,葉莉等是實體。
好比地理位置,人物是概念。
好比姚明的身高226釐米,身高是屬性。
好比姚明的配偶是葉莉,配偶是關係。
幻燈片10.JPG

知識圖譜三元組基本類型有四種,分別是實體,關係,實體,好比好將來,創始人,張邦鑫老師;
還有實體,屬性,屬性值,好比好將來,成立時間,2003年;
仍是實體,is-a,概念,好比好將來,is-a,上市公司;
還有子概念,subclass-of,父概念,好比上市公式,subclass-of,公司;

不能把is-a和subclass-of進行混淆,就好像不能把集合的屬於和包含進行混淆同樣。
幻燈片11.JPG

知識圖譜分爲模式層數據層
模式層是數據的模式,是對數據層的提煉。
數據層是具體的數據。
幻燈片12.JPG

模式層是知識圖譜的數據模型,是對數據層的約束。
咱們以教學圖譜爲例,能夠有staff, professor, course, laborary, student, PhD student等概念,以及professor 和course之間的聯繫,professor teach course。
還有professor 和PhD student之間的聯繫 Professor supervise PhD student。
這些概念以及概念之間的關係,構成了知識圖譜的模式層。
而後在模式層下添加實體,好比Professor Xu和PhD student Wang,以及實體之間的關係,好比Xu supervise Wang.
幻燈片13.JPG

知識圖譜的構建

接下來,咱們介紹知識圖譜的構建。
幻燈片14.JPG

知識圖譜的構建,從數據來源來講,包括從結構化,半結構化和非結構化的海量數據中抽取知識,構建圖譜。
構建者分,能夠分爲衆包構建和自動化構建。衆包構建,就是利用許多人進行編輯,構建知識圖譜,維基百科,百度百科都是衆包構建的。
自動化構建,就是利用機器進行自動構建。
構建方式分,能夠分爲自上而下的構建和自下而上的構建。
幻燈片15.JPG

自上而下的構建先肯定模式層,而後添加實體數據到知識庫。
自下而上的構建先肯定知識圖譜的數據層,而後提取數據的模式。
行業知識圖譜規模小,好比容易肯定模式層,多采用自上而下的構建方式。
通用知識圖譜規模大,數據模式隨數據的增加而變化,多采用自下而上的構建方式。
知識圖譜能夠只有數據層,沒有模式層。
幻燈片16.JPG

知識圖譜模式層構建,也叫本體(ontology)構建。須要先肯定知識圖譜的領域,好比大學領域。
而後列出領域內的術語,好比教職工,行政人員,技術支持人員,本科生,研究生等術語。
而後肯定類和類之間的層級關係,好比教職工是在職教師和研究人員的父類。學生是本科生,研究生的父類。
而後定義術語外延的規則。好比概念的屬性,概念之間的關係,屬性或者關係的定義域(domain)和值域(range)等。
幻燈片17.JPG

知識圖譜的構建分爲衆包構建和自動化構建。因爲衆包構建涉及技術較少。咱們這裏主要介紹自動化構建。
這是知識圖譜自動化構建的流程。
首先從數據庫,百科網站,垂直網站等數據來源獲取結構化,半結構化,和非結構化數據。
對非結構化數據和半結構化數據進行實體抽取,關係抽取,屬性抽取,並與結構化數據進行整合,造成初步的三元組知識。
而後經過實體消歧獲得標準知識表示。
對標準知識構建本體,造成數據模型。
對知識進行推理,發現新的知識。
對知識進行質量評估,從而進行質量控制。
對知識圖譜添加新的實體,或者修改舊的實體,對知識圖譜進行更新。
對構建好的知識圖譜進行存儲,方便下游應用。
對知識圖譜進行表示學習,將知識圖譜離散的符號轉化爲連續的數值。
對知識圖譜進行應用,主要包括內容理解,搜索,推薦,問答等應用。
幻燈片18.JPG

這裏描述了從半結構化數據抽取三元組的例子,主要涉及網頁爬取與解析。這裏根據信息框(infobox)和標籤(tags)來抽取三元組。
幻燈片19.JPG

對於非結構化數據,先通過預處理,好比全角轉半角等,而後進行分詞,詞性標註,語法解析,依存分析等NLP工具對文本進行解析,進一步進行實體識別,而後關係抽取,實體消歧,事件抽取等構成三元組知識。
好比文本:已知函數f(x)的定義域,抽取出函數,f(x), 定義域等實體,而後對實體對進行關係分類;好比函數和f(x)分類爲表達式,好比函數和定義域分類爲要素。
造成三元組知識:函數,表達式,f(x),函數,要素,定義域。
因爲函數多是數學中的函數,也多是計算機中的函數,還須要進行實體消歧。根據上下文判斷函數爲數學中的函數。
幻燈片20.JPG

實體識別是識別出文本中的人名,地名,組織機構名,時間,日期,貨幣等類型的字符串。
好比左邊這條新聞,識別出時間3月23日0時50分,識別出人名特朗普等。
對於學科圖譜來說,須要識別出相關術語。好比函數,數集等術語。
幻燈片21.JPG

實體識別通常建模成序列標註任務。輸入一個序列,通過詞嵌入,和雙向LSTM編碼,而後用CRF進行解碼。
其中函數預測的標籤是B-Noun, E-Noun, B和E分別表示mention的開始和結束,Noun表示類型。
f(x)預測爲表達式,其中I-Expr, I表示Inside, Expr表示表達式。
幻燈片22.JPG

當BERT出現後,因爲BERT效果好,常採用BERT來對句子進行編碼。
幻燈片23.JPG

當識別出了文本中的實體,還須要對文本中的實體,兩兩進行關係分類。
通常咱們會收集並標註一個關係分類的訓練集,來訓練一個模型,而後用模型對測試數據進行預測。
好比咱們訓練好模型後,對測試數據,集合中的元素有多種特性,包括肯定性,互異性,無序性進行預測。
咱們須要預測元素與肯定性之間的關係,預測結果爲特性。也就是集合有一個特性是肯定性。
幻燈片24.JPG

因爲BERT的興起,經常使用BERT來作關係分類。
幻燈片25.JPG

識別出文本中的mention後,好比識別出函數,定義域等mention,還須要對mention進行實體消歧(entity disambiguation)。也就是這個mention說起的是哪個實體。
好比函數能夠是數學術語,也能夠是計算機中的函數,根據上下文,判斷指代的是數學中的函數。
幻燈片26.JPG

注意到實體連接就是先識別出來文本中的mention,而後將識別出來mention連接到知識庫中實體,因此說實體連接=實體識別+實體消歧
幻燈片27.JPG

除了實體連接之外,還能夠有公式連接。好比題目或者解析中某個公式使用了某個定理,能夠將這個公式連接到它運用的定理上。
幻燈片28.JPG

構建好了知識圖譜後,咱們須要對構建好的知識圖譜進行規模和質量的評估。
規模通常用知識圖譜中有多少個實體,有多少個關係來描述。
質量通常能夠用準確率來衡量。因爲知識圖譜三元組數量多,咱們通常抽取若干個三元組,好比500個,對每個三元組進行真假判斷,而後統計準確率。
右表展現了抽取8個三元組,計算準確率的過程。
通常來說,衆包構建的準確率較高,自動化構建的準確率相對較低。
領域知識圖譜準確率較高,通用知識圖譜準確率相對較低。
幻燈片29.JPG

知識圖譜存儲與查詢

接下來咱們介紹知識圖譜存儲與查詢。
知識圖譜存儲和查詢能夠分爲兩類,一類是基於圖數據庫的,一類是基於關係型數據庫的。
幻燈片30.JPG

咱們先介紹基於圖數據庫的管理系統。
屬性圖(property graph)是圖數據庫中最經常使用的數據模型,由節點和邊構成。
好比下面這幅圖,有三個節點,每一個節點表示一個對象。
第一個節點的標籤是Employee,這個節點的屬性用鍵值對存儲,好比姓名爲Amy peters, 出生日期爲1984年3月1日,ID爲1。
Company 和 Employee之間有邊HAS_CEO,邊上也能夠有屬性,好比Company has CEO 開始日期爲2008年。
幻燈片31.JPG

下面是一個圖數據庫查詢1號節點認識的節點中,年齡大於30的節點參加過的項目。
其中Gremlin和Cypher是圖數據庫兩種查詢語言。
Gremlin是過程式(procedural)語言;用戶需指明具體的導航步驟,也就是在圖上怎麼走;它是業界標準查詢語言,除了Neo4j外,幾乎全部圖數據庫均支持。
Cypher是Neo4j專用語言,它是聲明式(declarative)語言;用戶只需聲明「查什麼」, 無需關心「怎麼查」;
幻燈片32.JPG

固然咱們也能夠利用關係型數據庫對知識圖譜進行存儲。咱們能夠將圖數據用三元組表示,將每個三元組做爲表中的一行記錄。
下面是查詢生於1850年,死於1934年,建立過公司的人。
採用關係型數據庫存儲,多跳查詢會產生自鏈接(self-join)操做。
好比A->B爲一跳,A->B->C爲兩跳。
幻燈片33.JPG

也能夠採用水平表的方式進行存儲,每一行存儲一個主語對應的全部的謂語和賓語。
這種存儲方式適合於謂詞較少的知識圖譜。
主語通常只在極少的列上有值,致使存儲空間浪費。
而且這種存儲方式很難存儲多值屬性或者一對多關係。
好比函數的三要素是定義域、值域和對應法則,用水平表存儲這種多值屬性,須要對值拼接後才能存儲。
幻燈片34.JPG

也能夠按照實體的類型對知識圖譜進行劃分,這種方式適合於實體類別較少的狀況。
一樣地,存儲多值屬性或一對多關係須要對值進行拼接。
幻燈片35.JPG

也能夠根據謂詞對知識圖譜進行劃分。對每個謂詞建立一張表。這種方式解決了數據存儲稀疏性問題,也能夠存儲多值屬性。
可是涉及多個謂詞的查詢會致使多表鏈接操做。
幻燈片36.JPG

知識圖譜的應用

知識圖譜的應用有不少,咱們主要介紹知識圖譜在推薦系統中的應用。
幻燈片37.JPG

如圖是一個新聞推薦的例子,假設某個用戶看過一條新聞,這個新聞的內容是:
Boris Johnson Has Warned Donald Trump To Stick To The Iran Nuclear Deal(鮑里斯·約翰遜警告唐納德·特朗普堅持伊朗核協議)。
從這條新聞中提取出4個實體,而後對這些實體作一跳,兩跳,三跳擴展,會發現這些實體都指向另一條新聞:
North Korean EMP Attack Would Cause Mass U.S. Starvation, Says Congressional Report(國會報告稱,朝鮮電磁脈衝攻擊將致使美國大規模饑荒)。
這2條新聞的單詞都不同,利用知識圖譜能夠發現他們底層之間的關聯。
幻燈片38.JPG

KG能給推薦系統帶來什麼?
首先知識圖譜能夠提升推薦系統的精度(Precision),更準確地發現item之間的關聯,好比Cast Away 和 Forrest Gump 都是Tom Hanks 主演的。
幻燈片39.JPG

知識圖譜還能夠提升推薦系統的多樣性(Diversity)。電影能夠經過主演擴展,也能夠經過電影類型擴展,還能夠經過導演來擴展,找到類似的電影。
幻燈片40.JPG

知識圖譜還能夠提升推薦系統的可解釋性(Explainability),知識圖譜中的路徑能夠用來解釋爲何會推薦這部電影。好比某個用戶喜歡Cast Away這部電影,系統推薦了The Terminal這部電影,由於他們有相同的主演。
幻燈片41.JPG

已知一個用戶的集合Users,一個物品的集合Items,用戶和物品的交互矩陣YYY,yuv=1y_{uv}=1yuv​=1表示用戶點擊過某個物品,0表示未點擊。
每一個物品vvv在KG中對應一個實體。物品是實體的一個子集。
目標是學習一個函數FFF,給定uuu,vvv,預測點擊率y^uv\hat y_{uv}y^​uv​,Θ\ThetaΘ是模型的參數。
幻燈片42.JPG

DKN方法是給出一段新聞,提取新聞中的實體,根據這些實體,構建一個知識圖譜子圖,對子圖作embedding,獲得每一個實體的embedding。
幻燈片43.JPG

另外,實體的鄰居節點能夠做爲該實體的上下文信息。將這些鄰居實體的embedding求平均,獲得該實體的上下文表示。如上圖公式中e¯\bar ee¯就是實體eie_iei​的上下文embedding。
幻燈片44.JPG

前面介紹了實體表示,實體上下文表示,另外結合詞向量,造成三個通道,進行卷積和池化,獲得這個句子的表示,咱們管這個方法叫KCNN。
幻燈片45.JPG

假設用戶點擊過3條新聞,來了一個候選新聞,須要預測用戶對候選新聞的點擊機率。
用KCNN對這4條新聞作embedding,獲得4個特徵向量。
用Attention Net計算用戶看過的每一條新聞與候選新聞之間的類似性。
用類似性得分對觀看記錄求加權平均,獲得用戶表示(User embedding)。
將用戶表示和候選新聞表示拼接,用多層感知機(MLP)預測的點擊率。
幻燈片46.JPG

剛纔DKN模型僅融入了實體的一跳信息,RippleNet除了融入一跳信息外,還融入了實體的兩跳,三跳信息。Ripple是水波的意思。
幻燈片47.JPG

另外還有直接利用**圖神經網絡(GNN)**對知識圖譜進行表示。
用圖神經網絡處理知識圖譜須要先將知識圖譜中的關係轉化爲數值。對於每個用戶,引入一個打分函數,用於對知識圖譜中每個關係進行打分。不一樣用戶同一個關係打分不同,分值高低跟用戶的偏好相關。
而後利用圖神經網絡進行前向傳播。其中AuA_uAu​是某個用戶uuu對應的鄰接矩陣。
DuD_uDu​是頂點的度矩陣,這是一個對角矩陣。
WlW_lWl​是訓練參數矩陣。
HlH_lHl​,Hl+1H_{l+1}Hl+1​是實體對應的embedding矩陣。
σσσ是一個非線性函數。
幻燈片48.JPG

咱們總結一下。
幻燈片49.JPG

謝謝閱讀!若有錯誤,請批評指正~

資源推薦

做者簡介

嶽祥爲好將來天然語言處理高級工程師

招聘信息

好將來技術團隊正在熱招前端、算法、後臺開發等各個方向高級開發工程師崗位,你們可掃描下方二維碼或微信搜索「好將來技術」,點擊本公衆號「技術招聘」欄目瞭解詳情,歡迎感興趣的夥伴加入咱們!

也許你還想看

DStack--基於flutter的混合開發框架

WebRTC源碼分析——視頻流水線創建(上)

"考試"背後的科學:教育測量中的理論與模型(IRT篇)

相關文章
相關標籤/搜索