本文介紹知識圖譜,首先會講一段知識圖譜的綜述做爲開場,而後就知識圖譜的構建,存儲,還有應用進行具體說明。 前端
知識圖譜和咱們的資源頁比較相似,都是須要先構建,而後存儲,以後應用。
知識圖譜應用普遍,我會以推薦系統爲例子,說明知識圖譜在推薦系統中的應用。 git
咱們首先對知識圖譜作一個簡短的綜述。 github
計算機爲何須要知識?
好比數字110,對機器來講,110就是一個字符串,與其餘數字沒有太大的差異。
固然能夠藉助關聯分析,分析出110跟警察,搶劫等相關。可是關聯分析比較複雜,須要藉助數據挖掘等相關技術。
若是採用知識庫,只須要構建一條知識,即110是報警電話。算法
人工智能分爲三個層次,分別是運算智能,感知智能和認知智能。
運算智能是讓機器能存會算;感知智能是讓機器能聽會說、能看會認;認知智能是解決機器能理解會思考的問題。數據庫
認知智能須要知識圖譜。 微信
知識圖譜是一個大規模語義網,包含實體和關係,好比章子怡的丈夫是汪峯;
也包含實體和屬性,好比章子怡的出生日期是1979年2月9日。
還包含實體和概念,好比章子怡是一個女演員;
還包含概念之間的關係,好比女演員是演員的子類。演員是人物的子類。 網絡
百科圖譜通常由標題,摘要,信息框,標籤,圖片等部分組成。
可抽取信息框的內容構建知識圖譜,並進行可視化展現。
其中,對於題目理解來說,函數的提出者,提出時間這些屬性不是咱們所關心的。
表達式,表示法,三要素是咱們關心的屬性。 框架
知識圖譜可使能搜索與問答,好比搜索函數的三要素,能夠直接獲得結果:定義域,值域,對應法則。 dom
知識圖譜還可使能Query補全,好比輸入函數的,推薦的候選Queries爲函數的定義,函數的三種表示方法等。 ide
知識圖譜強調世界是由實體而不是字符串組成的,好比題目中的函數,f(x), 定義域等在知識圖譜中都是一個個實體,而不是字符串。
那麼什麼是知識圖譜呢?
知識圖譜是一個大規模語義網,由實體,概念等節點和屬性,關係,類型等邊構成。
是許多三元組的集合。每個三元組是由主語(subject),謂語(predicate),賓語(object)構成。
好比中國,上海,姚明,葉莉等是實體。
好比地理位置,人物是概念。
好比姚明的身高226釐米,身高是屬性。
好比姚明的配偶是葉莉,配偶是關係。
知識圖譜三元組基本類型有四種,分別是實體,關係,實體,好比好將來,創始人,張邦鑫老師;
還有實體,屬性,屬性值,好比好將來,成立時間,2003年;
仍是實體,is-a,概念,好比好將來,is-a,上市公司;
還有子概念,subclass-of,父概念,好比上市公式,subclass-of,公司;
不能把is-a和subclass-of進行混淆,就好像不能把集合的屬於和包含進行混淆同樣。
知識圖譜分爲模式層和數據層。
模式層是數據的模式,是對數據層的提煉。
數據層是具體的數據。
模式層是知識圖譜的數據模型,是對數據層的約束。
咱們以教學圖譜爲例,能夠有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.
接下來,咱們介紹知識圖譜的構建。
知識圖譜的構建,從數據來源來講,包括從結構化,半結構化和非結構化的海量數據中抽取知識,構建圖譜。
按構建者分,能夠分爲衆包構建和自動化構建。衆包構建,就是利用許多人進行編輯,構建知識圖譜,維基百科,百度百科都是衆包構建的。
自動化構建,就是利用機器進行自動構建。
按構建方式分,能夠分爲自上而下的構建和自下而上的構建。
自上而下的構建先肯定模式層,而後添加實體數據到知識庫。
自下而上的構建先肯定知識圖譜的數據層,而後提取數據的模式。
行業知識圖譜規模小,好比容易肯定模式層,多采用自上而下的構建方式。
通用知識圖譜規模大,數據模式隨數據的增加而變化,多采用自下而上的構建方式。
知識圖譜能夠只有數據層,沒有模式層。
知識圖譜模式層構建,也叫本體(ontology)構建。須要先肯定知識圖譜的領域,好比大學領域。
而後列出領域內的術語,好比教職工,行政人員,技術支持人員,本科生,研究生等術語。
而後肯定類和類之間的層級關係,好比教職工是在職教師和研究人員的父類。學生是本科生,研究生的父類。
而後定義術語外延的規則。好比概念的屬性,概念之間的關係,屬性或者關係的定義域(domain)和值域(range)等。
知識圖譜的構建分爲衆包構建和自動化構建。因爲衆包構建涉及技術較少。咱們這裏主要介紹自動化構建。
這是知識圖譜自動化構建的流程。
首先從數據庫,百科網站,垂直網站等數據來源獲取結構化,半結構化,和非結構化數據。
對非結構化數據和半結構化數據進行實體抽取,關係抽取,屬性抽取,並與結構化數據進行整合,造成初步的三元組知識。
而後經過實體消歧獲得標準知識表示。
對標準知識構建本體,造成數據模型。
對知識進行推理,發現新的知識。
對知識進行質量評估,從而進行質量控制。
對知識圖譜添加新的實體,或者修改舊的實體,對知識圖譜進行更新。
對構建好的知識圖譜進行存儲,方便下游應用。
對知識圖譜進行表示學習,將知識圖譜離散的符號轉化爲連續的數值。
對知識圖譜進行應用,主要包括內容理解,搜索,推薦,問答等應用。
這裏描述了從半結構化數據抽取三元組的例子,主要涉及網頁爬取與解析。這裏根據信息框(infobox)和標籤(tags)來抽取三元組。
對於非結構化數據,先通過預處理,好比全角轉半角等,而後進行分詞,詞性標註,語法解析,依存分析等NLP工具對文本進行解析,進一步進行實體識別,而後關係抽取,實體消歧,事件抽取等構成三元組知識。
好比文本:已知函數f(x)的定義域,抽取出函數,f(x), 定義域等實體,而後對實體對進行關係分類;好比函數和f(x)分類爲表達式,好比函數和定義域分類爲要素。
造成三元組知識:函數,表達式,f(x),函數,要素,定義域。
因爲函數多是數學中的函數,也多是計算機中的函數,還須要進行實體消歧。根據上下文判斷函數爲數學中的函數。
實體識別是識別出文本中的人名,地名,組織機構名,時間,日期,貨幣等類型的字符串。
好比左邊這條新聞,識別出時間3月23日0時50分,識別出人名特朗普等。
對於學科圖譜來說,須要識別出相關術語。好比函數,數集等術語。
實體識別通常建模成序列標註任務。輸入一個序列,通過詞嵌入,和雙向LSTM編碼,而後用CRF進行解碼。
其中函數預測的標籤是B-Noun, E-Noun, B和E分別表示mention的開始和結束,Noun表示類型。
f(x)預測爲表達式,其中I-Expr, I表示Inside, Expr表示表達式。
當BERT出現後,因爲BERT效果好,常採用BERT來對句子進行編碼。
當識別出了文本中的實體,還須要對文本中的實體,兩兩進行關係分類。
通常咱們會收集並標註一個關係分類的訓練集,來訓練一個模型,而後用模型對測試數據進行預測。
好比咱們訓練好模型後,對測試數據,集合中的元素有多種特性,包括肯定性,互異性,無序性進行預測。
咱們須要預測元素與肯定性之間的關係,預測結果爲特性。也就是集合有一個特性是肯定性。
因爲BERT的興起,經常使用BERT來作關係分類。
識別出文本中的mention後,好比識別出函數,定義域等mention,還須要對mention進行實體消歧(entity disambiguation)。也就是這個mention說起的是哪個實體。
好比函數能夠是數學術語,也能夠是計算機中的函數,根據上下文,判斷指代的是數學中的函數。
注意到實體連接就是先識別出來文本中的mention,而後將識別出來mention連接到知識庫中實體,因此說實體連接=實體識別+實體消歧。
除了實體連接之外,還能夠有公式連接。好比題目或者解析中某個公式使用了某個定理,能夠將這個公式連接到它運用的定理上。
構建好了知識圖譜後,咱們須要對構建好的知識圖譜進行規模和質量的評估。
規模通常用知識圖譜中有多少個實體,有多少個關係來描述。
質量通常能夠用準確率來衡量。因爲知識圖譜三元組數量多,咱們通常抽取若干個三元組,好比500個,對每個三元組進行真假判斷,而後統計準確率。
右表展現了抽取8個三元組,計算準確率的過程。
通常來說,衆包構建的準確率較高,自動化構建的準確率相對較低。
領域知識圖譜準確率較高,通用知識圖譜準確率相對較低。
接下來咱們介紹知識圖譜存儲與查詢。
知識圖譜存儲和查詢能夠分爲兩類,一類是基於圖數據庫的,一類是基於關係型數據庫的。
咱們先介紹基於圖數據庫的管理系統。
屬性圖(property graph)是圖數據庫中最經常使用的數據模型,由節點和邊構成。
好比下面這幅圖,有三個節點,每一個節點表示一個對象。
第一個節點的標籤是Employee,這個節點的屬性用鍵值對存儲,好比姓名爲Amy peters, 出生日期爲1984年3月1日,ID爲1。
Company 和 Employee之間有邊HAS_CEO,邊上也能夠有屬性,好比Company has CEO 開始日期爲2008年。
下面是一個圖數據庫查詢1號節點認識的節點中,年齡大於30的節點參加過的項目。
其中Gremlin和Cypher是圖數據庫兩種查詢語言。
Gremlin是過程式(procedural)語言;用戶需指明具體的導航步驟,也就是在圖上怎麼走;它是業界標準查詢語言,除了Neo4j外,幾乎全部圖數據庫均支持。
Cypher是Neo4j專用語言,它是聲明式(declarative)語言;用戶只需聲明「查什麼」, 無需關心「怎麼查」;
固然咱們也能夠利用關係型數據庫對知識圖譜進行存儲。咱們能夠將圖數據用三元組表示,將每個三元組做爲表中的一行記錄。
下面是查詢生於1850年,死於1934年,建立過公司的人。
採用關係型數據庫存儲,多跳查詢會產生自鏈接(self-join)操做。
好比A->B爲一跳,A->B->C爲兩跳。
也能夠採用水平表的方式進行存儲,每一行存儲一個主語對應的全部的謂語和賓語。
這種存儲方式適合於謂詞較少的知識圖譜。
主語通常只在極少的列上有值,致使存儲空間浪費。
而且這種存儲方式很難存儲多值屬性或者一對多關係。
好比函數的三要素是定義域、值域和對應法則,用水平表存儲這種多值屬性,須要對值拼接後才能存儲。
也能夠按照實體的類型對知識圖譜進行劃分,這種方式適合於實體類別較少的狀況。
一樣地,存儲多值屬性或一對多關係須要對值進行拼接。
也能夠根據謂詞對知識圖譜進行劃分。對每個謂詞建立一張表。這種方式解決了數據存儲稀疏性問題,也能夠存儲多值屬性。
可是涉及多個謂詞的查詢會致使多表鏈接操做。
知識圖譜的應用有不少,咱們主要介紹知識圖譜在推薦系統中的應用。
如圖是一個新聞推薦的例子,假設某個用戶看過一條新聞,這個新聞的內容是:
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條新聞的單詞都不同,利用知識圖譜能夠發現他們底層之間的關聯。
KG能給推薦系統帶來什麼?
首先知識圖譜能夠提升推薦系統的精度(Precision),更準確地發現item之間的關聯,好比Cast Away 和 Forrest Gump 都是Tom Hanks 主演的。
知識圖譜還能夠提升推薦系統的多樣性(Diversity)。電影能夠經過主演擴展,也能夠經過電影類型擴展,還能夠經過導演來擴展,找到類似的電影。
知識圖譜還能夠提升推薦系統的可解釋性(Explainability),知識圖譜中的路徑能夠用來解釋爲何會推薦這部電影。好比某個用戶喜歡Cast Away這部電影,系統推薦了The Terminal這部電影,由於他們有相同的主演。
已知一個用戶的集合Users,一個物品的集合Items,用戶和物品的交互矩陣YYY,yuv=1y_{uv}=1yuv=1表示用戶點擊過某個物品,0表示未點擊。
每一個物品vvv在KG中對應一個實體。物品是實體的一個子集。
目標是學習一個函數FFF,給定uuu,vvv,預測點擊率y^uv\hat y_{uv}y^uv,Θ\ThetaΘ是模型的參數。
DKN方法是給出一段新聞,提取新聞中的實體,根據這些實體,構建一個知識圖譜子圖,對子圖作embedding,獲得每一個實體的embedding。
另外,實體的鄰居節點能夠做爲該實體的上下文信息。將這些鄰居實體的embedding求平均,獲得該實體的上下文表示。如上圖公式中e¯\bar ee¯就是實體eie_iei的上下文embedding。
前面介紹了實體表示,實體上下文表示,另外結合詞向量,造成三個通道,進行卷積和池化,獲得這個句子的表示,咱們管這個方法叫KCNN。
假設用戶點擊過3條新聞,來了一個候選新聞,須要預測用戶對候選新聞的點擊機率。
用KCNN對這4條新聞作embedding,獲得4個特徵向量。
用Attention Net計算用戶看過的每一條新聞與候選新聞之間的類似性。
用類似性得分對觀看記錄求加權平均,獲得用戶表示(User embedding)。
將用戶表示和候選新聞表示拼接,用多層感知機(MLP)預測的點擊率。
剛纔DKN模型僅融入了實體的一跳信息,RippleNet除了融入一跳信息外,還融入了實體的兩跳,三跳信息。Ripple是水波的意思。
另外還有直接利用**圖神經網絡(GNN)**對知識圖譜進行表示。
用圖神經網絡處理知識圖譜須要先將知識圖譜中的關係轉化爲數值。對於每個用戶,引入一個打分函數,用於對知識圖譜中每個關係進行打分。不一樣用戶同一個關係打分不同,分值高低跟用戶的偏好相關。
而後利用圖神經網絡進行前向傳播。其中AuA_uAu是某個用戶uuu對應的鄰接矩陣。
DuD_uDu是頂點的度矩陣,這是一個對角矩陣。
WlW_lWl是訓練參數矩陣。
HlH_lHl,Hl+1H_{l+1}Hl+1是實體對應的embedding矩陣。
σσσ是一個非線性函數。
咱們總結一下。
謝謝閱讀!若有錯誤,請批評指正~
做者簡介
嶽祥爲好將來天然語言處理高級工程師
招聘信息
好將來技術團隊正在熱招前端、算法、後臺開發等各個方向高級開發工程師崗位,你們可掃描下方二維碼或微信搜索「好將來技術」,點擊本公衆號「技術招聘」欄目瞭解詳情,歡迎感興趣的夥伴加入咱們!
也許你還想看