知识图谱技术发展详解(一)
一、萬維網現狀
1、當前的Web是一種面向人的網絡,很多繁瑣的過程依舊需要人工的參與。
2、以搜索引擎為例,目前的搜索引擎主要依靠關鍵字匹配,因此存在如下問題:
(1)高匹配、低精度,搜索出來的內容中往往參雜著大量不相關文檔。
(2)檢索結果對詞匯高度敏感,不同的關鍵字會返回不同的搜索結果,即使是語義上相似的關鍵字。
(3)檢索結果是單一的網頁,搜索返回結果以網頁為單位,分布在不同網頁的信息往往需要用戶給出多個查詢來收集相關信息。
(4)即使搜索引擎返回了用戶期望的內容,用戶仍然需要自己瀏覽網頁,從中提取需要的信息。
注意:所有的傳統Web應用在面對越來越大的網頁數量、越來越復雜的Web數據結構時,都顯得力不從心。
3、問題原因:是因為Web上的內容是面向人而不是面向機器的,因而機器無法理解Web上的內容。在機器看來,Web上的內容都只是普通的二進制數據,數據背后的含義機器無法理解,因此無法實現Web內容的自動處理。
4、搜索引擎的出現,在一定程度上解決了用戶從互聯網中獲取信息的難題,但由于它們是基于關鍵詞或字符串的,并沒有對查詢的目標(通常為網頁)和用戶的查詢輸入進行理解。同時,它們在搜索準確度方面存在明顯的缺陷,即由于HTML形式的網頁缺乏語義,難以被計算機理解。
二、語義Web背景和概念
1、目前我們使用的Web是面向人的網絡,Web更多的是組織、呈現、共享信息的媒介,Web并不能理解數據表達的含義,因此很多繁瑣的過程都需要人類參與。面對目前網頁爆炸式增長,人們快速準確地獲取有價值信息的難度越來越大。在信息爆炸的當今時代,Web上的網頁數量呈指數級增長,傳統Web人機交互性弱的缺點被無限放大。語義Web的提出為這一問題的解決提供了出路。
2、語義Web是萬維網的擴展,提供了一個通用框架,允許在應用程序,企業和社區之間共享和重用數據。提供了整合不同來源的數據的通用格式和記錄數據與現實世界對象對應關系的語言,其目標是使得機器能夠理解Web上的內容,并能夠進行一定的推理,促進高效的信息共享和機器智能協同。
3、語義web的一個比較重要的作用就是數據共享,共享的前提是數據要整合成統一的表示形式,如利用本體語言OWL或資源描述框架RDF。
(1)關系數據庫(RDB)是語義web最大的數據來源之一,大多數網站都習慣于使用關系數據庫來存儲數據。幸運的是,RDF和OWL(網絡本體語言,Web Ontology Language)都適用于對實體--關系(ER)模型(大多數關系數據庫都使用ER模型來進行建模)中所表達的信息進行建模。
(2)目前已經有多種工具可以用于將關系數據庫中的數據公開為虛擬RDF圖,從而作為一個SPARQL(為RDF開發的一種查詢語言和數據獲取協議)端點被用戶瀏覽和訪問。
注意:SPARQL (SPARQL Protocol and RDF Query Language),是為RDF開發的一種查詢語言和數據獲取協議,它是為W3C所開發的RDF數據模型所定義,但是可以用于任何可以用RDF來表示的信息資源。
3、RDB2RDF轉化常用工具有:
(1)D2RQ;
(2)SquirrelRDF;
(3)OpenLink Virtuoso;
三、語義Web的實現的關鍵技術
1、語義Web的實現依賴于三大關鍵技術:XML、RDF和Ontology。
2、為解決互聯網信息的語義問題,2008年Tim Berners-Lee等人提出了下一代互聯網——語義網(The Semantic Web)的概念。在語義Web中,所有的信息都具備一定的結構,這些結構的語義通常使用本體(Ontology)來描述。
(1)當信息結構化并且具備語義后,計算機就能理解其含義了,此時用戶再進行檢索時,搜索引擎在理解互聯網中信息含義的基礎上,尋找用戶真實需要的信息。
(2)本體(Ontology)描述了特定領域(領域本體)或所有領域(通用本體)中的概念以及概念之間的關聯關系,并且這些概念和關系是明確的、被共同認可的。
(3)本體中主要包括概念、概念的其他稱謂(即同義關系)、概念之間的上下位關系、概念的屬性關系(分為對象屬性和數值屬性)、屬性的定義域(Domain)和值域(Range),以及在這些內容上的公理、約束等。
(一)XML
1、XML(eXtensible Marked Language,即可擴展標記語言)是一種標記語言,用于傳輸和存儲數據。XML不僅能描述了文檔的每一成分,也描述了文檔成分之間的結構信息。與HTML不同,XML沒有固定的標簽集,由用戶自定義適用于特定應用的標簽,這大大提高了XML的可擴展性。代碼1是一個XML文檔的實例:
<?xml version="1.0" encoding="UTF-8"?>
<note>
?? <to>George</to>
?? <from>John</from>
?? <body>Hello world!</body>
</note>
(1)第一行是XML聲明,定義了XML的版本(1.0)和使用的編碼(UTF-8)。
(2)下一行開始是對文檔的描述,其中標簽是根元素,包含3個子元素(to,from,body);
(3)最后一行定義了根元素的結尾。
(4)元素note、to、from和body完全由用戶自行定義,但我們依舊能輕松的理解其表達的含義,同時其清晰的嵌套結構也非常適合機器自動處理,比如利用XPath對XML進行查詢,利用DOM和SAX對XML進行解析。
2、自定義標簽集提高了XML的可擴展性,但不同應用之間的交互必須對標簽集進行約定。XML允許用戶通過XML模式來定義標簽集,XML模式為XML文檔提供了一種約束機制,限定XML文檔所能使用的元素名和屬性名,同時也對文檔結構進行了約束,限定屬性的取值范圍,元素之間的嵌套關系。
3、常用的XML模式主要有DTD(Document Type Definition)和XML Schema。DTD相對陳舊,并且限制較多,XML Schema基于XML語法,并且提供了擴展的可能性,也因此XML Schema應用更為廣泛。代碼例子展示了XML Schema的一個實例:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note">
?? <xs:complexType>
????? <xs:sequence>
???????? <xs:element name="to" type="xs:string"/>
???????? <xs:element name="from" type="xs:string"/>
???????? <xs:element name="body" type="xs:string"/>
????? </xs:sequence>
?? </xs:complexType>
</xs:element>
</xs:schema>
(1)元素是每一個XML Schema的根元素,元素定義的語法是:“name”指定了元素的名稱,“type”指定了元素的類型,XML Schema擁有很多內置數據類型,同時也可以自定義數據類型,如例子所示,自定義了一個complexType類型,包含3個元素(to,from,body),每個元素的類型都是內置類型”string”。
(2)標簽指定了3個元素必須按序出現。
(3)為了解決命名沖突的問題,XML引入了命名空間(Name Space),即在每個元素名前加上前綴,構成如下格式:“前綴:元素名”,其中“前綴”就代表命名空間,所以需要首先對命名空間進行聲明,形式如下:“xmlns:前綴=”位置””,如例子所示,我們聲明了命名空間”xs”并在每個元素中使用。
(二)RDF(資源描述框架)
1、XML通過標簽和標簽的嵌套結構給用戶提供了一種良好的組織數據的方式,因為其強大的可擴展性和可解讀性,XML逐漸成為數據存儲和傳輸的第一選擇,成為語義Web的支撐。
2、然而,XML并不具有語義描述能力。為此,W3C于1999年提出了RDF(Resource Description Framework,即資源描述框架)用來解決XML的局限,2004年2月RDF正式成為W3C推薦標準,目前最新的RDF版本是2014年推出的RDF 1.1。
3、RDF是一種描述資源信息的框架,資源可以是任何東西,包括文檔、人、物理對象和抽象概念。
4、RDF由三部分組成:RDF Data Model、RDF Schema和RDF Syntax。
(1)RDF Data Model允許用戶用陳述(statement)的方式對資源進行描述;
(2)一個RDF陳述描述了兩個資源之間的關系,主語(subject)和賓語(object)分別指兩個資源,“predicate”表達了這個資源之間的關系,關系以有向的方式表達(從主語到賓語),因此在RDF中關系也被稱作屬性(property)。
5、因為每個RDF陳述包含三個元素,因此RDF陳述也被稱作RDF三元組(triples)。下表1展示了RDF的一些實例:
<Bob> <is a> <person>
<Bob> <is a friend of> <Alice>
<Bob> <is born on> <the 4th of July 1990>
<Bob> <is interested in> <the Mona Lisa>
<the Mona Lisa> <was created by> <Leonardo da Vinci>
<the video 'La Joconde à Washington'> <is about> <the Mona Lisa>
(1)同一個資源通常會在多個三元組中出現,一個資源可能在某一三元組中是主語,但在另一個三元組中可能是賓語,這使得三元組之間可以進行連接。
(2)我們可以通過有向圖可視化各個三元組,有向圖中,節點表達主語或謂語,有向邊表示謂語,下圖2以圖的形式展示了表1中展示的各RDF三元組。
?
6、一旦我們構建如圖所示的圖,我們就可以采用SPARQL進行語義查詢,比如“people interested in paintings by Leonardo da Vinci”。
7、RDF Data Model提供了一種描述資源的方式,但是RDF Data Model沒有對用于資源描述的詞匯做出任何定義,也就是依舊沒有提供資源的語義信息,為此RDF Data Model常和一組詞匯表結合使用。
8、為了支持詞匯表定義,RDF提供了RDF Schema語言,RDF Schema允許用戶定義RDF data的語義特征。RDF Schema采用面向對象的思想對詞匯表進行組織,RDF Schema的作用是:
(1)定義資源和屬性的類型;
(2)定義屬性所能應用的資源類以及屬性的類型;
(3)定義上述類別聲明的語法;
(4)申明一些由其他機構或組織定義的元數據標準的屬性類。
9、RDF定義了如下表2所示的核心類、核心屬性。
10、存在許多不同的序列化方法來描述RDF陳述,這些序列化方法稱之為RDF Syntax,不同的RDF Syntax描述的RDF陳述在邏輯上完全等價。這些RDF Syntax大致分為四類:
(1)Turtle類RDF語言(N-Triples、Turtle、TriG和N-Quads);
(2)JSON-LD(基于JSON的RDF Syntax);
(3)RDFa(HTML和XML相嵌);
(4)RDF/XML(用XML語法描述RDF)。
(三)OWL(Web Ontology Language,網絡本體語言)
1、RDF和RDF Schema能夠描述一定的語義信息,但表達能力依舊有限,為了更好的描述語義Web上的信息,需要更加強大的本體建模語言。
2、術語Ontology(本體)是一個哲學上的概念,是對客觀世界的抽象。目前,Ontology已經被廣泛應用到計算機科學領域,用以描述概念和概念之間關系。Geuber關于本體的定義最為廣發認可,他將本體定義為:
“An ontology is an explicit(明確的) specification(規范) of a conceptualization(概念).”
(1)概念化(conceptualization)的數學定義為:C=<D,W,Rc>,其中C代表概念化對象,D表示一個領域,W是該領域相關事物狀態的集合,Rc是域空間<D,W>上概念關系的集合。
(2)規范(specification)是為了形成對領域內概念、知識及概念間關系的統一認知與推理,以利于共享和重用。
注意:本體概念:本體(Ontology)描述了特定領域(領域本體)或所有領域(通用本體)中的概念以及概念之間的關聯關系,并且這些概念和關系是明確的、被共同認可的。通常,本體中主要包括概念、概念的其他稱謂(即同義關系)、概念之間的上下位關系、概念的屬性關系(分為對象屬性和數值屬性)、屬性的定義域(Domain)和值域(Range),以及在這些內容上的公理、約束等。
3、本體語言用于對本體進行顯示的形式化描述,目前存在多種本體語言,W3C的推薦標準是建立在RDF與RDF Schema基礎上的OWL(Web Ontology Language),OWL為需要處理信息內容的應用程序設計,而不僅僅是向人類呈現信息,通過提供額外的詞匯和形式化的語義,OWL提供了比XML,RDF和RDF Schema更高的機器對Web內容的可解釋性。
(1)OWL提供了三種表達能力越來越強的子語言:OWL Lite,OWL DL和OWL Full。
(2)OWL Full是完整的OWL語言,即使用了OWL所有的原語,適合于那些希望獲得RDF最大表現能力和RDF語法自由度且無計算效率要求的用戶;
(3)OWL Full允許引入本體來擴展預定義的RDF/OWL詞匯的含義。
(4)OWL DL是OWL Full的子語言,包含了OWL所有的語言結構,但對其使用進行了限制,適用于那些希望獲得最大表現力,同時保持計算完整性和可判定性的用戶。
(5)OWL Lite對OWL DL的語法進行了進一步限制,因而容易掌握和實現,適用于那些只需要分類層次和簡單約束的用戶。
4、采用OWL的本體開發人員需要考慮哪種子語言最適合其需求。
(1)選擇OWL Lite還是OWL DL取決于用戶多大程度上需要OWL DL提供的更具表現力的構造。
(2)OWL DL和OWL Full之間的選擇主要取決于用戶多大程度上需要RDF Schema的元建模機制。與OWL DL相比,當使用OWL Full時,推理支持是難以預測的,因為完整的OWL Full實現是不可能的。
5、OWL使用基于XML的RDF語法,OWL Lite除了兼容RDF Schema的語義特征外,進一步將屬性進行細化為:ObjectProperty、DatatypeProperty、inverseOf、TransitiveProperty、SymmetricProperty、FunctionalProperty、InverseFunctionalProperty,同時對屬性取值方式進行了約束:allValuesFrom、someValuesFrom,也可以對屬性取值進行基數約束:minCardinality 、maxCardinality。對類的(不)等價關系也進行了定義:equivalentClass、equivalentProperty、sameAs、differentFrom、AllDifferent、distinctMembers。OWL DL和OWL Full在OWL Lite的基礎上額外增加了布爾組合擴展:unionOf、complementOf、intersectionOf。
四、語義Web挑戰
1、語義Web的發展依舊面臨很多問題和挑戰,主要可以歸結為三類:
(1)數據問題。目前萬維網上的絕大多數內容尚未加上符合語義Web規范的標記。因此,如何自動化地給現有的Web內容加上符合語義Web規范的標記是語義Web走向實用化面臨的難題之一。這涉及到一系列技術,包括信息抽取、分類、表達、存儲、查詢等。
(2)智能問題。如何讓計算機或其它設備具備“思考”和“推斷”能力是另一個技術難題,這涉及到本體、邏輯和規則等方面技術。如何應對本體變化帶來的問題是當前面臨的挑戰。另外,描述邏輯語言在表達能力上存在一定的不足,某些應用可能需要研究表達能力更強的描述邏輯。
(3)安全問題。借助語義Web技術所構建的數據互聯網絡,人們能夠迅速、準確地找到實體幾乎全部的信息,一旦某些實體的信息,如個人私密信息、機構涉密信息等遭到泄露將導致嚴重的后果。因此語義Web的安全性同樣需要格外重視。
五、知識圖譜
(一)知識圖譜概念
1、知識圖譜是一種基于圖的數據結構,由節點(point)和邊(Edge)組成,每個節點表示一個“實體”,每條邊為實體與實體之間的“關系”,知識圖譜本質上是語義網絡。是結構化的語義知識庫,用于迅速描述物理世界中的概念及其相互關系,通過將數據粒度從document級別降到data級別,聚合大量知識,從而實現知識的快速響應和推理。包括實體、屬性和關系。
(1)知識圖譜是語義Web技術發展的一次揚棄與升華,最早由Google于2012年提出,用以提高搜索引擎的能力。較為出名的知識圖譜產品有Google的Knowledge Vault,蘋果的Wolfram Alpha,微軟的Satori,國內知識圖譜產品包括百度知心,搜狗知立方。
(2)實體指的可以是現實世界中的事物,比如人、地名、公司、電話、動物等;關系則用來表達不同實體之間的某種聯系。
2、知識圖譜數據類型:知識圖譜的原始數據類型一般來說有三類(也是互聯網上的三類原始數據):
(1)結構化數據(Structed Data),如關系數據庫
(2)非結構化數據,如圖片、音頻、視頻
(3)半結構化數據 如XML、JSON、百科
3、存儲知識圖譜的三種數據類型有兩種方式:
(1)第一種方式:是通過RDF(資源描述框架)這樣的規范存儲格式來進行存儲,比較常用的有Jena等。
(2)第二種方式:是使用圖數據庫來進行存儲,常用的有Neo4j等。
4、Jena是一個java 的API,用來支持語義網的有關應用。
5、Neo4j是一個高性能的,NOSQL圖形數據庫(面向網絡的數據庫),它將結構化數據存儲在網絡(從數學角度叫做圖)上而不是表中。
6、Neo4j是一個嵌入式,基于磁盤的,支持完整事務的Java持久化引擎,它在圖(網絡)中而不是表中存儲數據。Neo4j提供了大規模可擴展性,在一臺機器上可以處理數十億節點/關系/屬性的圖,可以擴展到多臺機器并行運行。相對于關系數據庫來說,圖數據庫善于處理大量復雜、互連接、低結構化的數據,這些數據變化迅速,需要頻繁的查詢——在關系數據庫中,這些查詢會導致大量的表連接,因此會產生性能上的問題。
(1)關系模型很不適合表達半結構化的數據,網絡是一種非常高效的數據存儲結構。人腦是一個巨大的網絡,萬維網也同樣構造成網狀。但是,關系模型可以表達面向網絡的數據,但是在遍歷網絡并抽取信息的能力上關系模型是非常弱的。
(2)通過圍繞圖進行數據建模,Neo4j會以相同的速度遍歷節點與邊,其遍歷速度與構成圖的數據量沒有任何關系。同時,Neo4j還提供了非??斓膱D算法、推薦系統和OLAP風格的分析,而這一切在目前的RDBMS系統中都是無法實現的。
(3)在該模型中,以“節點空間”來表達領域數據——相對于傳統的模型表、行和列來說,節點空間是很多節點、關系和屬性(鍵值對)構成的網絡。關系是第一級對象,可以由屬性來注解,而屬性則表明了節點交互的上下文。
(4)關系型數據庫的缺點:不能適應數據的擴展,不能對擴展的信息進行檢索,對項目設計階段沒有考慮到的同時又是系統關心的信息的存儲不能很好的處理。
(二)知識圖譜架構
1、知識圖譜架構主要分為:邏輯架構和技術架構。
(三)邏輯架構
1、邏輯架構:在邏輯上,我們通常將知識圖譜劃分為兩個層次:數據層和模式層。
(1)模式層:在數據層之上,是知識圖譜的核心,存儲經過提煉的知識,通過本體庫來管理這一層這一層(本體庫可以理解為面向對象里的“類”這樣一個概念,本體庫就儲存著知識圖譜的類)。
(2)數據層:存儲真實的數據。
2、舉例說明模式層和數據層:
(1)模式層(對應本體):實體-關系-實體,實體-屬性-性值;
(2)數據層(對應實體):比爾蓋茨-妻子-梅琳達·蓋茨,比爾蓋茨-總裁-微軟;
(四)技術架構
1、知識圖譜構建過程:有一大堆的數據,這些數據可能是結構化的、非結構化的以及半結構化的,然后我們基于這些數據來構建知識圖譜,這一步主要是通過一系列自動化或半自動化的技術手段,來從原始數據中提取出知識要素,即一堆實體關系,并將其存入我們的知識庫的模式層和數據層。
2、構建知識圖譜是一個迭代更新的過程,根據知識獲取的邏輯,每一輪迭代包含三個階段:
(1)信息抽取:從各種類型的數據源中提取出實體、屬性以及實體間的相互關系,在此基礎上形成本體化的知識表達;
(2)知識融合:在獲得新知識之后,需要對其進行整合,以消除矛盾和歧義,比如某些實體可能有多種表達,某個特定稱謂也許對應于多個不同的實體等;
(3)知識加工:對于經過融合的新知識,需要經過質量評估之后(部分需要人工參與甄別),才能將合格的部分加入到知識庫中,以確保知識庫的質量。
(五)知識圖譜存儲方式
1、知識圖譜主要有兩種存儲方式:
(1)一種是基于RDF的存儲;
(2)另一種是基于圖數據庫的存儲。
2、RDF一個重要的設計原則是數據的易發布以及共享,另外,RDF以三元組的方式來存儲數據而且不包含屬性信息。
3、圖數據庫主要把重點放在了高效的圖查詢和搜索上,一般以屬性圖為基本的表示形式,所以實體和關系可以包含屬性。
4、RDF和圖數據庫的特點:
?
(五)知識圖譜應用(重點)
1、知識圖譜應用舉例:當用戶搜索“劉德華的年齡”時:
(1)首先,搜索引擎需要知道用戶輸入中的“劉德華”代表的是一個人;
(2)其次,需要同時明白“年齡”一詞所代表什么含義;
(3)最后,還需要在后臺有豐富的知識圖譜數據的支撐,才能回答用戶問題。
1、智能搜索——也是知識圖譜最成熟的一個場景,自動給出搜索結果和相關人物;
2、構建人物關系圖,查看更多維度的數據;
3、反欺詐:這主要有兩部分原因,一個是反欺詐的數據來源多樣,結構化和非結構化,二是不少欺詐案件會涉及到復雜的關系網絡;
4、不一致性驗證(類似交叉驗證)——關系推理;
5、異常分析(運算量大,一般離線);
6、靜態分析:給定一個圖形結構(元素信息)和某個時間點,從中去發現一些異常點(比如有異常的子圖);
7、動態分析:分析其結構隨時間變化的趨勢。(假設短時間內知識圖譜結構的變化不會太大,如果它的變化很大,就說明可能存在異常,需要進一步的關注。會涉及到時序分析技術和圖相似性計算技術)
8、失聯客戶管理 挖掘出更多的新聯系人,提高催收的成功率。
9、融入業務系統,從“人找事”變為“事找人”;
(1)根據我們和客戶一起從業務中總結出來的各種風險與營銷事件規則,圖譜自動將每個客戶經理必須關注的風險信息和營銷信息融入行內業務系統并推送到相關責任人的手機客戶 端。讓這些過去需要客戶經理和相關數據分析人員辛苦挖掘尋找的信號,成為推動一線業務人員行動的簡潔指令與參考,并實時進行監督和反饋。
10、可視化技術:符合人類直覺的可視化展現與交互,幫助終端用戶理解復雜關聯,通過直觀的拖拽操作即可完成高復雜度的分析挖掘。
?
六、知識圖譜技術架構詳解
(一)信息抽取
1、信息抽取(infromation extraction)是知識圖譜構建的第1步,其中的關鍵問題是:如何從異構數據源中自動抽取信息得到候選指示單元,是一種自動化地從半結構化和無結構數據中抽取實體、關系以及實體屬性等結構化信息的技術。
2、涉及的關鍵技術包括:實體抽取、關系抽取和屬性抽取。
(一)實體抽取
1、實體抽取,也稱為命名實體識別(named entity recognition,NER),是指從文本數據集中自動識別出命名實體。
2、實體抽取的研究歷史主要是從面向單一領域進行實體抽取,逐步跨步到面向開放域(open domain)的實體抽取。
(二)關系抽取
1、文本語料經過實體抽取之后,得到的是一系列離散的命名實體,為了得到語義信息,還需要從相關語料中提取出實體之間的關聯關系,通過關系將實體聯系起來,才能夠形成網狀的知識結構。
注意:關系具有方向性。
2、關系抽取的研究歷史:
(1)人工構造語法和語義規則(模式匹配);
(2)統計機器學習方法;
(3)基于特征向量或核函數的有監督學習方法;
(4)研究重點轉向半監督和無監督;
(5)開始研究面向開放域的信息抽取方法;
(6)將面向開放域的信息抽取方法和面向封閉領域的傳統方法結合。
(三)屬性抽取
1、屬性抽取的目標是從不同信息源中采集特定實體的屬性信息,如針對某個公眾人物,可以從網絡公開信息中得到其昵稱、生日、國籍、教育背景等信息。
2、屬性抽取的研究歷史:
(1)將實體的屬性視作實體與屬性值之間的一種名詞性關系,將屬性抽取任務轉化為關系抽取任務;
(2)基于規則和啟發式算法,抽取結構化數據;
(3)基于百科類網站的半結構化數據,通過自動抽取生成訓練語料,用于訓練實體屬性標注模型,然后將其應用于對非結構化數據的實體屬性抽取;
(4)采用數據挖掘的方法直接從文本中挖掘實體屬性和屬性值之間的關系模式,據此實現對屬性名和屬性值在文本中的定位。
(二)知識融合
1、通過信息抽取,從原始的非結構化和半結構化數據中獲取到了實體、關系以及實體的屬性信息。但是,這些信息還存在很多問題:
(1)信息之間的關系是扁平化的,缺乏層次和邏輯;
(2)還存在大量冗雜和錯誤的實體、關系和屬性信息;
2、知識融合好比拼圖,信息抽取的信息好比拼圖碎片,散亂無章,甚至還有從其他拼圖里跑來的碎片、本身就是用來干擾我們拼圖的錯誤碎片。
3、知識融合涉及的推理:實體對齊(Entity Alignment)和關系對齊/屬性對齊(Relation/Property Alignment)。
4、知識融合主要包括兩個步驟:實體鏈接和知識合并。
(一)實體鏈接
1、實體鏈接(entity linking)是指對于從文本中抽取得到的實體對象,將其鏈接到知識庫中對應的正確實體對象的操作。
2、基本思想是首先根據給定的實體指稱項,從知識庫中選出一組候選實體對象,然后通過相似度計算將指稱項鏈接到正確的實體對象。
注意:指稱表示某些代詞名詞在文章中的具體稱述對象。
3、實體鏈接流程:
(1)從文本中通過實體抽取得到實體指稱項;
(2)進行實體消歧和實體匹配,判斷知識庫中的同名實體與之是否代表不同的含義以及知識庫中是否存在其他命名實體與之表示相同的含義;
(3)在確認知識庫中對應的正確實體對象之后,將該實體指稱項鏈接到知識庫中對應實體。
4、實體消歧和實體匹配的含義:
(一)實體消歧
(1)實體消歧是專門用于解決同名實體產生歧義問題的技術,通過實體消歧,就可以根據當前的語境,準確建立實體鏈接,實體消歧主要采用聚類法(主要根據實體屬性)。其實也可以看做基于上下文的分類問題,類似于詞性消歧和詞義消歧。
注意:聚類法:俗話說:“物以類聚,人以群分”,在自然科學和社會科學中,存在著大量的分類問題。所謂類,通俗地說,就是指相似元素的集合。它是研究(樣品或指標)分類問題的一種統計分析方法,同時也是數據挖掘的一個重要算法。
(二)實體匹配(實體對齊)
(2)實體匹配(實體對齊)主要用于解決多個指稱對應同一實體對象的問題。在一次會話中,多個指稱可能指向的是同一實體對象。利用實體匹配技術,可以將這些指稱項關聯(合并)到正確的實體對象,由于該問題在信息檢索和自然語言處理等領域具有特殊的重要性,吸引了大量的研究努力。
(二)知識合并
1、知識鏈接實現將從半結構化數據和非結構化數據抽取的信息鏈接到知識庫中正確的實體對象上。
2、除了半結構化數據和非結構化數據以外,還有結構化數據即外部知識庫和關系數據庫需要處理,知識合并就是處理結構化數據:
(1)合并外部知識庫,主要處理數據層和模式層的沖突;
(2)合并關系數據庫,有RDB2RDF(RDB關系數據庫轉化為RDF資源描述框架)等方法;
(一)RDB2RDF轉化標準
1、RDB2RDF有兩個轉化標準:direct mapping即直接映射和R2RML;
2、direct mapping,即直接映射規則十分簡單:
(1)數據庫的表作為本體中的類(Class)。比如我們在mysql中保存的數據,一共有5張表。那么通過映射后,我們的本體就有5個類了,而不是我們自己定義的三個類。
(2)表的列作為屬性(Property)。
(3)表的行作為實例/資源。
(4)表的單元格值為字面量
(5)如果單元格所在的列是外鍵,那么其值為IRI(國際化資源標識符),或者說實體/資源。
注意:國際化資源標識符(Internationalized Resource Identifiers,簡稱IRI),與其相提并論的是URI(Uniform Resource Identifier,統一資源標志符)。
3、R2RML,可以讓用戶更靈活的編輯和設置映射規則??梢园阉斪鲆粋€工具,用的時候再查文檔即可,不用把所有的特性和語法都記下來,只需要知道它是什么,能干什么即可。
(三)知識加工
1、通過信息抽取,從原始語料中提取出了實體、關系與屬性等知識要素,并且經過知識融合,消除實體指稱項與實體對象之間的歧義,得到一系列基本的事實表達。
2、事實本身并不等于知識。要想最終獲得結構化,網絡化的知識體系,還需要經歷知識加工的過程。知識加工主要包括3方面內容:本體構建、知識推理和質量評估。
?
(一)本體構建
?????? 本體概念:本體(Ontology)描述了特定領域(領域本體)或所有領域(通用本體)中的概念以及概念之間的關聯關系,并且這些概念和關系是明確的、被共同認可的。通常,本體中主要包括概念、概念的其他稱謂(即同義關系)、概念之間的上下位關系、概念的屬性關系(分為對象屬性和數值屬性)、屬性的定義域(Domain)和值域(Range),以及在這些內容上的公理、約束等。
注意:本體和實體的區別:知識圖譜并不是本體的替代品,相反,它是在本體的基礎上進行了豐富和擴充,這種擴充主要體現在實體(Entity)層面,知識圖譜則是在本體的基礎上,增加了更加豐富的關于實體的信息。
1、本體(ontology):國內一般將其譯為“本體”,實質上應該譯為“存在”,表示概念集合、概念框架,如“人”、“事”、“物”等。
(1)本體可以采用人工編輯的方式手動構建(借助本體編輯軟件),也可以以數據驅動的自動化方式構建本體。
(2)因為人工方式工作量巨大,且很難找到符合要求的專家,因此當前主流的全局本體庫產品,都是從一些面向特定領域的現有本體庫出發,采用自動構建技術逐步擴展得到的。
2、自動化本體構建過程包含三個階段:(聚類法)
(1)實體并列關系相似度計算;
(2)實體上下位關系抽取;
注意:實體上下位關系舉例:電影-》勵志電影-》喜劇之王
(3)本體的生成;
3、舉例說明:當知識圖譜剛得到“阿里巴巴”、“騰訊”、“手機”這三個實體的時候,可能會認為它們三個之間并沒有什么差別,但當它去計算三個實體之間的相似度后,就會發現,阿里巴巴和騰訊之間可能更相似,和手機差別更大一些。
(1)這就是第一步的作用,但這樣下來,知識圖譜實際上還是沒有一個上下層的概念,它還是不知道,阿里巴巴和手機,根本就不隸屬于一個類型,無法比較。
(2)因此我們在實體上下位關系抽取這一步,就需要去完成這樣的工作,從而生成第三步的本體。
(3)當三步結束后,這個知識圖譜可能就會明白,“阿里巴巴和騰訊,其實都是公司這樣一個實體下的細分實體。它們和手機并不是一類。”
(二)知識推理
1、完成了本體構建這一步之后,一個知識圖譜的雛形便已經搭建好了。但這時,知識圖譜之間大多數關系都是殘缺的,缺失值非常嚴重,可以使用知識推理技術,去完成進一步的知識發現。
2、知識推理的對象也并不局限于實體間的關系,也可以是實體的屬性值,本體的概念層次關系等。
(1)推理屬性值:已知某實體的生日屬性,可以通過推理得到該實體的年齡屬性;
(2)推理概念:已知(老虎,科,貓科)和(貓科,目,食肉目)可以推出(老虎,目,食肉目);
3、知識推理的的算法主要可以分為3大類,基于邏輯的推理、基于圖的推理和基于深度學習的推理。
4、邏輯推理:
(1)演繹推理:自上而下,給定一個或者多個前提的情況下,推斷出一個必然成立的結論的過程;
(2)歸納推理:自下而上,即便是最理想的歸納推理,如果作為推理前提的部分已有觀察為真,也不能保證結論一定成立。包括溯因推理(Abductive Reasoning)和類比推理(Analogy Reasoning);
(三)質量評估
1、質量評估可以對知識的可信度進行量化,通過舍棄置信度較低的知識來保障知識庫的質量。
(四)知識更新
1、從邏輯上看,知識庫的更新包括概念層的更新和數據層的更新。
(1)概念層的更新是指新增數據后獲得了新的概念,需要自動將新的概念添加到知識庫的概念層中;
(2)數據層的更新主要是新增或更新實體、關系、屬性值,對數據層進行更新需要考慮數據源的可靠性、數據的一致性(是否存在矛盾或冗雜等問題)等可靠數據源,并選擇在各數據源中出現頻率高的事實和屬性加入知識庫。
2、知識圖譜的內容更新有兩種方式:
(1)全面更新:指以更新后的全部數據為輸入,從零開始構建知識圖譜。這種方法比較簡單,但資源消耗大,而且需要耗費大量人力資源進行系統維護;
(2)增量更新:以當前新增數據為輸入,向現有知識圖譜中添加新增知識。這種方式資源消耗小,但目前仍需要大量人工干預(定義規則等),因此實施起來十分困難。
七、非結構化數據
1、像圖片、聲音、視頻等等。這類信息我們通常無法直接知道他的內容,數據庫也只能將它保存在一個BLOB字段中,對以后檢索非常麻煩。一般的做法是,建立一個包含三個字段的表(編號 number、內容描述 varchar(1024)、內容 blob)。引用通過編號,檢索通過內容描述。
2、非結構化數據的處理工具:內容管理器。
3、對于非結構化的文本數據,我們抽取的知識包括實體、關系、屬性。關系反映實體的外部聯系,屬性體現實體的內部特征。
4、非結構化數據的抽取問題,研究的人比較多,對于具體的語料環境,采取的技術也不盡相同。
(1)舉個例子,比如關系抽取,有的人采用深度學習的方法,將兩個實體,他們的關系,以及出處的句子作為訓練數據,訓練出一個模型,然后對于測試數據進行關系抽取,測試數據需要提供兩個實體和出處的句子,模型在訓練得到的已知關系中查找,得出測試數據中兩個實體之間的關系。這是一種關系抽取的方法。
(2)還有人用句法依存特征,來獲取關系,這種方法認為,實體和實體之間的關系可以組成主謂賓結構,在一個句子中,找出主謂關系和動賓關系,其中的謂詞和動詞如果是一個詞,那么這個詞就是一個關系。比如說“小明吃了一個蘋果”,主謂關系是“小明吃”,動賓關系是“吃蘋果”,那么就認為“吃”是一個關系。
八、半結構化數據
1、半結構化數據具有下述特征:
(1)數據結構自描述性。結構與數據相交融,在研究和應用中不需要區分“元數據”和“一般數據”(兩者合二為一)。
(2)數據結構描述的復雜性。結構難以納入現有的各種描述框架,實際應用中不易進行清晰的理解與把握。
(3)數據結構描述的動態性。數據變化通常會導致結構模式變化,整體上具有動態得結構模式。
2、半結構化數據是“無模式”的。更準確地說,其數據是自描述的。XML或JSON可能是最適合存儲半結構化的數據了。將不同類別的信息保存在XML的不同的節點中就可以了。
(1)優點:能夠靈活的進行擴展,信息進行擴展式只要更改對應的DTD或者XSD就可以了。
(2)缺點:查詢效率比較低,要借助XPATH來完成查詢統計,隨著數據庫對XML的支持的提升性能問題有望能夠很好的解決。
3、半結構化數據通常是由一個由節點集合和弧段集合組成的具根有向圖結構。有向圖中節點集合元素分為三類:
(1)葉結點。此類節點沒有由其出發的弧段,其語義表示與實際數據相關,相應數據取值類型可以是任意原子類型(數值型或字符串型)。
(2)內部節點。此類節點既有由其出發又有由其終止的弧段。
(3)根節點。此節點唯一,其特征是只作為一個或多個弧段的始點,其語義是整個數據文件。
4、半結構化數據,主要是指那些具有一定的數據結構,但需要進一步提取整理的數據。比如百科的數據,網頁中的數據等。對于這類數據,主要采用包裝器的方式進行處理。
(1)包裝器是一個能夠將數據從HTML網頁中抽取出來,并且將它們還原為結構化的數據的軟件程序。網頁數據輸入到包裝器中,通過包裝器的處理,輸出為我們需要的信息。
(2)通過包裝器歸納這種基于有監督學習的方法,自動的從標注好的訓練樣例集合中學習數據抽取規則,用于從其他相同標記或相同網頁模板抽取目標數據。
八、結構化數據
1、針對結構化數據,通常是關系型數據庫的數據,數據結構清晰,把關系型數據庫中的數據轉換為RDF數據,普遍采用的技術是D2R技術。D2R主要包括D2R Server,D2RQ Engine和D2RRQ Mapping語言。
(1)D2R Server 是一個 HTTP Server,它的主要功能提供對RDF數據的查詢訪問接口,以供上層的RDF瀏覽器、SPARQL查詢客戶端以及傳統的 HTML 瀏覽器調用。 (2)D2RQ Engine的主要功能是使用一個可定制的 D2RQ Mapping 文件將關系型數據庫中的數據換成 RDF 格式。D2RQ engine 并沒有將關系型數據庫發布成真實的 RDF 數據,而是使用 D2RQ Mapping 文件將其映射成虛擬的 RDF 格式。該文件的作用是在訪問關系型數據時將 RDF 數據的查詢語言 SPARQL 轉換為 RDB 數據的查詢語言 SQL,并將 SQL 查詢結果轉換為 RDF 三元組或者 SPARQL 查詢結果。
(3)D2RQ Engine 是建立在 Jena(Jena 是一個創建 Semantic Web 應用的 Java 平臺,它提供了基于 RDF,SPARQL 等的編程環境)的接口之上。 D2RQ Mapping 語言的主要功能是定義將關系型數據轉換成 RDF 格式的 Mapping 規則。
九、圖數據庫
(一)圖數據庫概念及分類
1、圖由兩個元素組成:節點和關系:
(1)每個節點代表一個實體(人,地,事物,類別或其他數據);
(2)每個關系代表兩個節點的關聯方式。
(3)這種通用結構可以對各種場景進行建模 - 從道路系統到設備網絡,到人口的病史或由關系定義的任何其他事物。
2、圖數據庫(Graph database)并非指存儲圖片的數據庫,而是以圖這種數據結構存儲和查詢數據。
(1)圖形數據庫是一種在線數據庫管理系統,具有處理圖形數據模型的創建,讀取,更新和刪除(CRUD)操作。
3、Neo4J就是屬于原生圖數據庫,它使用的后端存儲是專門為Neo4J這種圖數據庫定制和優化的,理論上說能更有利于發揮圖數據庫的性能。
4、JanusGraph是一個Linux基金會下的開源分布式圖數據庫 。
5、阿里云圖數據庫GraphDB;
6、HugeGraph百度開源圖數據庫;
(二)標記屬性圖模型
(一)節點
1、節點是主要的數據元素
2、節點通過關系連接到其他節點
3、節點可以具有一個或多個屬性(即,存儲為鍵/值對的屬性)
4、節點有一個或多個標簽,用于描述其在圖表中的作用
(1)示例:人員節點與Car節點
(二)關系
1、關系連接兩個節點
2、關系是方向性的
3、節點可以有多個甚至遞歸的關系
4、關系可以有一個或多個屬性(即存儲為鍵/值對的屬性)
(三)屬性
1、屬性是命名值,其中名稱(或鍵)是字符串
2、屬性可以被索引和約束
3、可以從多個屬性創建復合索引
(四)標簽
1、標簽用于將節點分組
2、一個節點可以具有多個標簽
3、對標簽進行索引以加速在圖中查找節點
4、本機標簽索引針對速度進行了優化
(三)NOSQL
1、NoSQL,指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。
(1)NoSQL用于超大規模數據的存儲。
2、今天我們可以通過第三方平臺(如:Google,Facebook等)可以很容易的訪問和抓取數據。用戶的個人信息,社交網絡,地理位置,用戶生成的數據和用戶操作日志已經成倍的增加。我們如果要對這些用戶數據進行挖掘,那SQL數據庫已經不適合這些應用了, NoSQL 數據庫的發展卻能很好的處理這些大的數據。
(一)NoSQL的優點和缺點
1、NoSQL的優點:
(1)高可擴展性
(2)分布式計算
(3)低成本
(4)架構的靈活性,半結構化數據
(5)沒有復雜的關系
2、NoSQL的缺點:
(1)沒有標準化
(2)有限的查詢功能(到目前為止)
(3)最終一致是不直觀的程序
(二)橫向擴展和縱向擴展
1、橫向擴展:也叫水平擴展,用更多的節點支撐更大量的請求。比如:擴展服務器的數量進行高并發的處理(增強處理業務的能力)。
2、縱向擴展:又叫垂直擴展,擴展(增強)一個點的能力支撐更大的請求。比如:是增加單機的處理能力,一般增加cpu的處理能力。
(三)CAP定理
1、CAP原則又稱CAP定理,指的是在一個分布式系統中,一致性(Consistency)、可用性(Availability)、分區容錯性(Partition tolerance)。CAP 原則指的是,這三個要素最多只能同時實現兩點,不可能三者兼顧。
(1)一致性(C):在分布式系統中的所有數據備份,在同一時刻是否同樣的值。(等同于所有節點訪問同一份最新的數據副本)
(2)可用性(A):在集群中一部分節點故障后,集群整體是否還能響應客戶端的讀寫請求。(對數據更新具備高可用性)
(3)分區容忍性(P):以實際效果而言,分區相當于對通信的時限要求。系統如果不能在時限內達成數據一致性,就意味著發生了分區的情況,必須就當前操作在C和A之間做出選擇。
十、Hbase
(一)Hbase概念
1、HBase是一個開源的非關系型分布式數據庫,主要用來存儲非結構化和半結構化的松散數據。它參考了谷歌的BigTable建模,實現的編程語言為Java。它是Apache軟件基金會的Hadoop項目的一部分,運行于HDFS文件系統之上,為 Hadoop 提供類似于BigTable 規模的服務。
(二)Hbase與關系型數據庫對比
1、數據類型:關系數據庫采用關系模型,具有豐富的數據類型和存儲方式,HBase則采用了更加簡單的數據模型,它把數據存儲為未經解釋的字符串。
2、數據操作:關系數據庫中包含了豐富的操作,其中會涉及復雜的多表連接。HBase操作則不存在復雜的表與表之間的關系,只有簡單的插入、查詢、刪除、清空等,因為HBase在設計上就避免了復雜的表和表之間的關系。
3、存儲模式:關系數據庫是基于行模式存儲的。HBase是基于列存儲的,每個列族都由幾個文件保存,不同列族的文件是分離的。
4、數據索引:關系數據庫通??梢葬槍Σ煌袠嫿◤碗s的多個索引,以提高數據訪問性能。HBase只有一個索引——行鍵,通過巧妙的設計,HBase中的所有訪問方法,或者通過行鍵訪問,或者通過行鍵掃描,從而使得整個系統不會慢下來。
5、數據維護:在關系數據庫中,更新操作會用最新的當前值去替換記錄中原來的舊值,舊值被覆蓋后就不會存在。而在HBase中執行更新操作時,并不會刪除數據舊的版本,而是生成一個新的版本,舊有的版本仍然保留。
6、可伸縮性:關系數據庫很難實現橫向擴展,縱向擴展的空間也比較有限。相反,HBase和BigTable這些分布式數據庫就是為了實現靈活的水平擴展而開發的,能夠輕易地通過在集群中增加或者減少硬件數量來實現性能的伸縮。
?
(三)Hadoop
1、Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。Hadoop的框架最核心的設計就是:HDFS和MapReduce。
(1)HDFS為海量的數據提供了存儲;
(2)MapReduce則為海量的數據提供了計算。
2、Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有著超大數據集(large data set)的應用程序。
(四)Hadoop已經有了HDFS和MapReduce,為什么需要HBase?
1、Hadoop可以很好地解決大規模數據的離線批量處理問題,但是,受限于HadoopMapReduce編程框架的高延遲數據處理機制,使得Hadoop無法滿足大規模數據實時處理應用的需求。
2、HDFS面向批量訪問模式,不是隨機訪問模式。
3、傳統的通用關系型數據庫無法應對在數據規模劇增時導致的系統擴展性和性能問題(分庫分表也不能很好解決)。
4、傳統關系數據庫在數據結構變化時一般需要停機維護;
5、空列浪費存儲空間。
?
總結
以上是生活随笔為你收集整理的知识图谱技术发展详解(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android基础入门教程——4.1.1
- 下一篇: 华为设备路由策略原理与实验