知識圖譜不復(fù)雜,我來幫你理一理!
原創(chuàng)【51CTO.com原創(chuàng)稿件】隨著互聯(lián)網(wǎng)業(yè)務(wù)的發(fā)展,產(chǎn)生了大量的數(shù)據(jù),數(shù)據(jù)經(jīng)過分析會推動業(yè)務(wù)的發(fā)展。將數(shù)據(jù)中蘊含的知識用圖的結(jié)構(gòu)表示出來,就形成了知識圖譜。
圖片來自 Pexels
知識圖譜可以應(yīng)用到智能搜索,自動文檔,推薦,決策支持等領(lǐng)域。例如:WordNet,F(xiàn)reebase,Wikidata。
今天和大家一起了解知識圖譜構(gòu)建的方法和基本原理。
知識圖譜概括
知識圖譜是一個較大的話題。從發(fā)展,特點,分類和生命周期等不同的方面都有很多需要講的東西。
知識領(lǐng)域示意圖
這里我們主要從知識圖譜的生命周期作為切入點,講講在其形成和使用過程中用到的原理和方法。
①知識體系構(gòu)建。根據(jù)分類,可以把知識圖譜分為通用型和領(lǐng)域型。無論是什么類型的知識圖譜都需要對其服務(wù)的領(lǐng)域進(jìn)行知識建模。也就是說,采用什么樣的方式來表達(dá)知識。
②知識融合。一個知識庫可以和其他知識庫進(jìn)行融合。在不同領(lǐng)域知識圖庫進(jìn)行融合時,會發(fā)現(xiàn)來自不同領(lǐng)域,不同語言,甚至不同結(jié)構(gòu)的知識需要做“補(bǔ)充,更新和去重的操作”。
這就是知識融合,一般分為:知識體系融合和實例融合。這部分的操作也可以在構(gòu)建知識體系的時候統(tǒng)籌考慮。
③知識獲取。知識獲取的目的是從海量的信息(文本)中抽取知識。本文中提到的“獲取信息”多為文本信息,因此這里的“獲取信息”也是從文本中獲取信息的過程。
獲取信息結(jié)構(gòu)上劃分為三類,分別是結(jié)構(gòu)化信息,半結(jié)構(gòu)化信息和非結(jié)構(gòu)化信息。
從獲取信息內(nèi)容上又分為,實體識別,實體消歧,關(guān)系抽取和事件抽取。知識存儲在完成了知識抽取和融合之后,就需要將知識存儲下來了。
有 RDF(Resource Description Framework,資源描述框架)格式和圖數(shù)據(jù)庫兩種方式。
因為圖數(shù)據(jù)庫對于查詢友好,因此被廣泛使用,例如:Neo4j。
④知識推理。識別并抽取知識以及存儲知識以后,我們會試圖挖掘?qū)嶓w(知識)之間隱含的語義關(guān)系。
這個過程就是知識推理。例如:已知 A 是 B 的兒子,又知道 B 是 C 的兒子。那么可以推理出 A 是 C 的孫子。
⑤知識應(yīng)用。識別,抽取,存儲和推理的最終目的還是為了應(yīng)用。知識圖譜在搜索,問答,推薦,決策方面被廣泛應(yīng)用。
后面會將上述過程展開講解,由于知識圖譜中包括的內(nèi)容比較豐富,因此會著重介紹前面幾個部分的內(nèi)容,關(guān)于知識推理和知識應(yīng)用的部分會放到以后的文章中介紹。
知識體系構(gòu)建
我們常說的知識是人類對現(xiàn)實世界的認(rèn)識,如何將這種認(rèn)識轉(zhuǎn)化為一種標(biāo)準(zhǔn)的形式呢?因此,需要有一種模型,對其進(jìn)行描述,從而能夠存儲到計算機(jī)中。
知識表示
知識圖譜的表示方式有多種,有語義網(wǎng)絡(luò),框架,腳本。使用比較多的是語義網(wǎng)絡(luò)模型。
它是通過語義關(guān)系連接的概念網(wǎng)絡(luò),將知識表示為互相連接的點和邊。其中,節(jié)點表示為實體,時間,值等信息;邊表示實體之間的關(guān)系。
例如:馬是一種動物,可以表示為如下:
這里的馬和動物表示為實體,“是一種”表示它們之間的關(guān)系。這也是我們常說的三元組的表現(xiàn)形式。
用 RDF(Resource Description Framework,資源描述框架)可以表述為:
- (節(jié)點 1,關(guān)系,節(jié)點 1)
- (馬,是一種,動物)
針對關(guān)系來說有多種類型的定義:
- 實例關(guān)系:“是一個”。表示一個事物是另一個事物的一個實例。例如:小明是一個人。
- 分類關(guān)系:“是一種”。表示一個事物是另一個事物的種類。例如:籃球是一種球。
- 成員關(guān)系:“個人與集體”。表示一個事物是另一個事物的成員。例如:小王是三年級一班的學(xué)生。
- 屬性關(guān)系:“一個節(jié)點具有另一個節(jié)點所表示的屬性”。例如:猴子會爬樹。
- 聚合關(guān)系:“部分與整體”。例如:手是身體的一部分。
- 位置關(guān)系:事物的方位關(guān)系。例如:蘋果在桌子上。
- 相近關(guān)系:事物在形狀,內(nèi)容等方面相似。例如:獅子和老虎在森林中都有霸主的地位。
如果將實體通過上述描述,用三元組的方式表示出來,就形成了知識的圖狀結(jié)構(gòu),我們把這種結(jié)構(gòu)的表現(xiàn)就叫做知識表現(xiàn)。
知識圖譜的表現(xiàn)形式
知識體系構(gòu)建
上面講了知識表示,通過三元組表示現(xiàn)實世界的知識。由于知識領(lǐng)域的不同,對事物的概念和定義也會不相同。
例如:“運維”這個詞,在軟件領(lǐng)域是指對軟件的運行維護(hù);在基礎(chǔ)設(shè)施領(lǐng)域,是指對供配電,空調(diào)的運行和維護(hù)。
因此,知識圖譜是針對具體知識領(lǐng)域而言的。需要根據(jù)具體的知識領(lǐng)域,進(jìn)行“知識體系構(gòu)建”。
知識體系主要包括三個方面的核心內(nèi)容:對概念的分類,概念屬性的描述以及概念之間相互關(guān)系的定義。
知識領(lǐng)域示意圖
知識領(lǐng)域(知識體系結(jié)構(gòu))就好像知識圖譜的框架,它定義了知識的概念,概念的屬性以及概念之間的關(guān)系。
只有先定義了它,才能再構(gòu)建知識圖譜。如果把知識領(lǐng)域(知識體系結(jié)構(gòu))理解成 Class 的話,知識圖譜就是 Object;如果把知識領(lǐng)域(知識體系結(jié)構(gòu))理解成骨架的話,知識圖譜就是肉體。
Ontology 對知識進(jìn)行定義(Concept),根據(jù)定義生成實體(Instance)
骨架和肉體
說完知識領(lǐng)域(知識體系結(jié)構(gòu))的概念,再來看看通過人工構(gòu)建需要哪幾個步驟。
①確定領(lǐng)域以及任務(wù)。這里需要明確幾個問題,為什么需要這個領(lǐng)域的知識圖譜?其中包括哪些知識?它所服務(wù)的人群?以及誰來維護(hù)它?
②知識體系整合。由于知識圖譜,需要包括海量的知識數(shù)據(jù),所以從 0 開始建設(shè)成本很高。
因此,需要借助通用知識圖譜,領(lǐng)域詞典,語言學(xué)資源,開源知識圖譜的資源。在它們的基礎(chǔ)上建立,大大降低成本。
③羅列要素。針對要建立的知識圖譜,列出這個領(lǐng)域知識的概念,屬性,以及關(guān)系等要素。
例如:建立一個人物知識圖譜,就要列出科學(xué)家,演員,老師,運動員等概念分類。
針對每個分類,定義姓名,年齡,國籍,出生地等屬性。以及父母,子女,朋友等關(guān)系。
④確定分類體系。就是概念之間的層級關(guān)系,類似樹狀結(jié)構(gòu)。例如體育分類,下面包括體育組織,體育賽事,體育院校等等??梢酝ㄟ^由上至下,或者由下至上的方式建立。
分類體系示意圖
⑤定義屬性以及關(guān)系。這里的屬性和關(guān)系的定義具有繼承性。例如:演藝人員擁有“年齡”,“畢業(yè)院校”,“經(jīng)紀(jì)公司”等屬性。演藝人員分類下面包括了歌手和演員。
那么歌手和演員的屬性中,除了包括“年齡”,“畢業(yè)院校”,“經(jīng)紀(jì)公司”等屬性以外,還可能包括其他屬性,例如:歌手包括“低/中/高音“;演員包括:”國內(nèi)/國際影星“。
⑥定義約束。針對上面屬性關(guān)系的約束關(guān)系。例如:年齡為正整數(shù)。每個人只有一個母親(生理學(xué)意義上的)。
知識融合
各個領(lǐng)域知識圖譜的構(gòu)建,導(dǎo)致存在各個垂直領(lǐng)域的知識庫。每個知識庫為了擴(kuò)大自身的廣度和深度,就需要和其他庫做融合。
知識融合示例圖
知識庫的融合有兩種模式:
- 豎直方向的知識融合,將通用知識庫與專業(yè)知識庫進(jìn)行融合。專業(yè)知識庫中需要一些通用知識庫中的通用知識定義,例如:著名人物,地名,公理。
- 水平方向的知識融合,將相同領(lǐng)域的知識庫進(jìn)行融合。讓兩個知識庫進(jìn)行數(shù)據(jù)互補(bǔ)。
知識體系能夠在認(rèn)知和語義層次上對領(lǐng)域知識進(jìn)行建模和表達(dá),確定領(lǐng)域內(nèi)共同認(rèn)可的詞匯,通過概念之間的關(guān)系來描述概念的語義,提供對領(lǐng)域知識的共同理解。
多個知識體系在融合過程中會產(chǎn)生重疊,會產(chǎn)生許多不同的知識體系。這些不同的知識體系會導(dǎo)致不同的知識圖譜難以聯(lián)合使用。
因此,下面要介紹幾種融合的方法:
- 元素級匹配,將一個詞表示為語義向量空間中的一個點,如果詞與詞之間的相似度高,那么兩個點之間的距離就近。表明兩個詞可以融合。
- 結(jié)構(gòu)級匹配,通過判斷元素屬性的定義域和值域匹配度,推斷屬性的匹配度。
- 實體對齊,通過判斷相同或不同知識庫中的兩個實體是否表示同一個物理對象的過程。
知識獲取
定義了知識領(lǐng)域和領(lǐng)域之間的融合,就搭建了知識圖譜的框架,接下來就要填充內(nèi)容了。根據(jù)三元組理論,知識圖譜是由(實體 1,關(guān)系,實體 2)組成的。
所以,接下來就要介紹知識獲取,它包括實體識別,實體消歧,關(guān)系抽取,事件抽取。
知識獲取示意圖
實體識別
實體(Entity)是知識圖譜的基本單元,也是本文中承載信息的重要語言單位。實體識別是抽取文本中命名性指稱項。
例如:人名,地名,機(jī)構(gòu)名,產(chǎn)品名。通常意義上分為三大類:實體類,時間類和數(shù)字類;七小類:人名,地名,機(jī)構(gòu)名,時間,日期,貨幣和百分比。
例如:紅利小學(xué)籃球教練張平出席了會議,他在會議上分享了執(zhí)教心得。
實體“張平”就有三個指稱項,“紅利小學(xué)籃球教練”是名詞性指稱項;“張平”是命名性指稱項;“他”是代詞性指稱項。
實體識別抽取有以下幾種方法:
①基于規(guī)則的方法,通過建立命名實體詞典的方法,每次抽取都從文本中查找詞典的內(nèi)容。
- 中文人名識別:<姓氏><名字>。例如:張平。
- 中文組織名識別:<人名><組織名><地名><核心名>。例如:中國軟件信息協(xié)會。
- 中文地名的識別:<名字部分><指示詞>。例如:武漢市。
②基于特征的方法,通過機(jī)器學(xué)習(xí)的方法利用預(yù)先標(biāo)注好的語料訓(xùn)練模型,使模型學(xué)習(xí)到某個字或者詞作為命名實體組成部分的概率,計算出一個候選字段作為命名實體的概率值。如果大于某個設(shè)定的閥值,就抽取命名實體。
③基于神經(jīng)網(wǎng)絡(luò)的方法:
- 特征表示:利用神經(jīng)網(wǎng)絡(luò)模型將文字符號特征表示為分布式特征信息。
- 模型訓(xùn)練:利用標(biāo)注數(shù)據(jù),優(yōu)化網(wǎng)絡(luò)參數(shù),訓(xùn)練網(wǎng)絡(luò)模型。
- 模型分類:利用訓(xùn)練的模型對新樣本進(jìn)行分類,完成識別。
實體消歧
實體識別完成以后,我們遇到一些問題。兩個實體名字一模一樣,但在不同的語境下面,表達(dá)的內(nèi)容完全不同。
例如:實體指稱項,邁克爾·喬丹(Michael Jordan)在不同的文本中,有可能是籃球明星,也有可能是一位機(jī)器學(xué)習(xí)的研究員。
實體消歧示例圖
在介紹如何進(jìn)行實體消歧之前,先介紹幾個相關(guān)概念,以上圖為例:
- 實體名:邁克爾·喬丹(Michael Jordan)
- 目標(biāo)實體列表:邁克爾·喬丹(研究員),邁克爾·喬丹(運動員)
- 實體指稱項:“邁克爾·喬丹” 是 “邁克爾·喬丹(研究員)”的實體指稱項。同樣,“邁克爾·喬丹”也是 “邁克爾·喬丹(運動員)”的實體指稱項。
那么如何消除這種歧義呢?這里有兩種歧義消除系統(tǒng)推薦。
聚類的消歧系統(tǒng):將同一實體指稱項分配到同一類別下面,聚類結(jié)果中每個類別對應(yīng)一個目標(biāo)實體。
聚類示意圖
實體鏈接的消歧系統(tǒng):將實體指稱項與目標(biāo)實體列表中對應(yīng)的實體進(jìn)行連接實現(xiàn)消歧。
實體鏈接示意圖
關(guān)系抽取
上面可以將文本中的實體抽取出來,并且消除它們之間的歧義。接下來,要知道實體之間的關(guān)系,就需要用到關(guān)系抽取。
關(guān)系抽取就是,識別實體之間的語義關(guān)系??梢苑譃槎P(guān)系抽取(兩個實體)和多元關(guān)系抽取(三個及以上實體)。通常表示為(實體 1, 關(guān)系, 實體 2)三元組。
根據(jù)處理數(shù)據(jù)源的不同,關(guān)系抽取可以分為以下三種:
- 面向結(jié)構(gòu)化文本的關(guān)系抽取:包括表格文檔、XML文檔、數(shù)據(jù)庫數(shù)據(jù)等。
- 面向非結(jié)構(gòu)化文本的關(guān)系抽?。杭兾谋尽?/li>
- 面向半結(jié)構(gòu)化文本的關(guān)系抽?。航橛诮Y(jié)構(gòu)化和非結(jié)構(gòu)化之間。
根據(jù)抽取文本的范圍不同,關(guān)系抽取可以分為以下兩種:
- 句子級關(guān)系抽?。簭囊粋€句子中判別兩個實體間是何種語義關(guān)系。
- 語料級關(guān)系抽?。翰幌薅▋蓚€目標(biāo)實體所出現(xiàn)的上下文。
根據(jù)所抽取領(lǐng)域的劃分,關(guān)系抽取又可以分為以下兩種:
- 限定域關(guān)系抽?。涸谝粋€或者多個限定的領(lǐng)域內(nèi)對實體間的語義關(guān)系進(jìn)行抽取,限定關(guān)系的類別,可看成是一個文本分類任務(wù)。
- 開放域關(guān)系抽?。翰幌薅P(guān)系的類別。
由于篇幅關(guān)系,這里對具體關(guān)系抽取的方法不展開描述。有興趣可以自行查找,每個算法都可以單獨成為一篇文章。這里我們只需要對關(guān)系抽取的分類和方法有基本認(rèn)識就好。
事件抽取
和關(guān)系抽取類似,事件抽取是從文本中抽取出事件并以結(jié)構(gòu)化的形式呈現(xiàn)出來。
首先識別事件及其類型,其次識別出事件所涉及的實體,最后需要確定實體在事件中扮演的角色。
通過一個例子,來介紹幾個概念。例如:“小明和小紅于 2019 年 12 月 30 日在北京舉行婚禮。”
事件指稱:具體事件的自然語言描述,通常是一個句子或句群。就是上面這句話的描述。
事件觸發(fā)詞:代表事件發(fā)生的詞,是決定事件類別的特征,一般是動詞或名詞。例如:“舉行婚禮”。
事件元素:事件中的參與者,主要由實體、時間和屬性值組成。例如:“小明”,“小紅”, “2019 年 12 月 30 日”。
事件元素類型
元素角色:事件元素在事件中扮演的角色。例如:“小明”與“小紅”扮演的是“夫妻角色”。
事件類別:事件元素和觸發(fā)詞決定了事件的類別,每個分類下面還有子分類。例如:生命,結(jié)婚。
事件類型示意圖
事件抽取的方法比較多,基本上分為限定域事件抽取和開放域事件抽取兩大類。
在兩類中又分為若干小類。這里針對限定域中給予模式匹配的方法給大家做簡單介紹。
限定域事件抽?。涸谶M(jìn)行抽取之前,預(yù)先定義好目標(biāo)事件的類型及每種類型的具體結(jié)構(gòu)(包含哪些具體的事件元素),通常會給出一定數(shù)量的標(biāo)注數(shù)據(jù)。通過這些標(biāo)注數(shù)據(jù)引導(dǎo)事件的抽取。
比較有代表的是基于模式匹配的方法,首先通過人工標(biāo)注語料,再通過學(xué)習(xí)模型來抽取模式,最后將“待抽取文檔”與模式庫中的模式進(jìn)行匹配,生成抽取結(jié)果。
事件抽取,匹配流程圖
另外,關(guān)于事件抽取的方法和關(guān)系還有很多,這里不展開描述,放出思維導(dǎo)圖供大家參考。
事件抽取思維導(dǎo)圖
知識存儲與檢索
前面提到了知識圖譜的架構(gòu),知識的抽取,接下來就需要將這些知識(數(shù)據(jù))存儲下來。并且可以將存儲的數(shù)據(jù)進(jìn)行檢索。
知識存儲示意圖
談到存儲,需要回到前面說的三元組。知識圖譜中的知識是通過 RDF(Resource Description Framework,資源描述框架)構(gòu)成的。
每個事實被表示為一個形如(subject,predicate,object)的三元組:
- subject:主體(也稱主語),其取值通常是實體、事件。
- predicate:謂詞(也稱謂語),其取值通常是關(guān)系或?qū)傩浴?/li>
- object:客體(也稱賓語),其取值既可以是實體、 事件、概念,也可以是普通的值(如數(shù)字、字符串等) 。
基于表數(shù)據(jù)的介紹
知識圖譜的表存放方式有兩種,分別是三元組表,類型表。來看看前兩種存儲的方式。例如:有下圖關(guān)系。
知識圖譜存儲示例圖
用三元組方式存儲:
用類型表存儲:
基于圖數(shù)據(jù)庫的介紹
圖數(shù)據(jù)庫基于有向圖,其理論基礎(chǔ)是圖論。節(jié)點、邊和屬性是圖數(shù)據(jù)庫的核心概念。
節(jié)點,用于表示實體、事件等對象,可以類比于關(guān)系數(shù)據(jù)庫中的記錄。例如人物、 地點、電影等都可以作為圖中的節(jié)點。
邊,是指圖中連接節(jié)點的有向線條,用于表示不同節(jié)點之間的關(guān)系。例如:夫妻關(guān)系、同事關(guān)系等。
屬性,用于描述節(jié)點或者邊的特性。例如:姓名、夫妻關(guān)系的起止時間等。
來看個例子:
用節(jié)點表示實體:劉德華、劉青云、Film:暗戰(zhàn) 。
用邊表示實體間的關(guān)系:劉德華和暗戰(zhàn)之間的參演關(guān)系、劉德華和劉青云之間的朋友關(guān)系等 。
節(jié)點可以定義屬性:劉德華性別男、身高 174cm、出生地香港等。
邊上也可以定義屬性:劉德華參演暗戰(zhàn)的時間是 1999 年,參演角色是張彼得等。
無向關(guān)系需要轉(zhuǎn)化為兩條對稱的有向關(guān)系:劉德華和劉青云之間互為朋友關(guān)系。
知識圖譜的檢索
上面說了按照表方式和圖方式的存儲,再來看看存儲之后如何檢索知識信息。知識圖譜信息可以通過 SQL 和 SPARQL 搜索來獲得。
這里著重介紹 SPARQL,它是 Simple Protocol and RDF Query Language 的縮寫,是由 W3C 為 RDF 數(shù)據(jù)開發(fā)的一種查詢語言和數(shù)據(jù)獲取協(xié)議,被圖數(shù)據(jù)庫廣泛支持。
和 SQL 類似,SPARQL 也是一種結(jié)構(gòu)化的查詢語言,用于對數(shù)據(jù)的獲取與管理。
①數(shù)據(jù)插入
INSERT DATA { } 包含三元組,不同的三元組通過”.”分割,連續(xù)的三元組用”;” 分割。
②數(shù)據(jù)刪除
DELETE DATA {} 包括的三元組,不同的三元組通過”.”分割。

刪除劉德華參演電影的關(guān)系
如果想刪除所有劉德華對應(yīng)節(jié)點的關(guān)系,用如下語句。
這里的 s,p,o 分別對應(yīng)的是 subject,predicate 和 object。這樣和劉德華這個節(jié)點的相關(guān)信息都刪除了。但是劉青云和暗戰(zhàn)對應(yīng)的節(jié)點和關(guān)系依舊存在。
刪除劉德華節(jié)點以及對應(yīng)的關(guān)系
③查詢語句
和上面兩個語句類似,例如要查詢身高為 174cm 的男演員。

得出的結(jié)果就是“s:劉德華”。
總結(jié)
如果說知識圖譜本身就是一個知識的數(shù)據(jù)庫,那么知識領(lǐng)域(知識體系結(jié)構(gòu))就是這個數(shù)據(jù)庫的框架。
在建立知識圖譜之前我們需要對知識體系進(jìn)行搭建,同時要解決知識融合的問題。
有了知識體系結(jié)構(gòu),就可以進(jìn)行知識獲取,這里包括實體識別,實體消岐,關(guān)系抽取和事件抽取。
實體識別有基于規(guī)則,特征和神經(jīng)網(wǎng)絡(luò)的識別方法。實體消岐可以通過聚類和實體連接的方法搞定。
關(guān)系抽取和事件抽取,根據(jù)數(shù)據(jù)源,文本范圍和領(lǐng)域劃分的不同,方法各有千秋。知識抽取以后需要做知識的存儲,其中有表存儲和圖存儲兩種方式。
目前比較流行的是圖存儲的方式。并且基于圖存儲的方式,還提供了 SPARQL 查詢語言對數(shù)據(jù)進(jìn)行管理。
PS:知識圖譜的內(nèi)容比較廣博,本文只是對最基本的概念進(jìn)行了描述。很多觀點來自于趙軍老師的知識圖譜一書。如果需要深入了解,建議閱讀。
作者:崔皓
簡介:十六年開發(fā)和架構(gòu)經(jīng)驗,曾擔(dān)任過惠普武漢交付中心技術(shù)專家,需求分析師,項目經(jīng)理,后在創(chuàng)業(yè)公司擔(dān)任技術(shù)/產(chǎn)品經(jīng)理。善于學(xué)習(xí),樂于分享。目前專注于技術(shù)架構(gòu)與研發(fā)管理。
【51CTO原創(chuàng)稿件,合作站點轉(zhuǎn)載請注明原文作者和出處為51CTO.com】