【知識圖譜】產品視角下的知識圖譜構建流程與技術理解

9 評論 18710 瀏覽 150 收藏 66 分鐘

編輯導語:隨著人工智能的發展,知識圖譜也變得越來越重要。知識圖譜是一種特殊類型的圖,強調上下文的理解。本文在產品視角下,帶大家一起看看知識圖譜的構建流程與技術理解。感興趣朋友快來看看吧。

一、引言

伴隨著人工智能的逐漸落地,知識圖譜也越來越進入大眾的視野。

或許你并沒有留意,但不論是谷歌搜索人物得到的關聯圖譜,購物網站越來越精確的商品推薦,還是常見的siri,小愛同學等語音助手,或者是金融放貸時的風險控制,智慧醫療的治療方案推薦;所有這些智能應用,背后都少不了知識圖譜的支撐。

如果打個比方的話,知識圖譜就是人工智能的記憶系統,讓機器感知世界,認識世界,并且通過規模龐大的知識圖譜的融合、推理、深度學習等,將這些記憶鏈接、應用、產生智慧。

可以說,知識圖譜已經成了人工智能時代的基礎設施。

以下是我在查閱資料時看到的一句話,覺得很貼切,在此應用:

知識對于人工智能的價值就在于,讓機器具備認知能力和理解能力。

構建知識圖譜這個過程的本質,就是讓機器形成認知能力,理解這個世界。

本文主要想以產品的視角,展示知識圖譜的What,Why和How,即知識圖譜是什么(定義和構成,組成元素和組織規則),知識圖譜的價值(有什么應用場景,應用的效果如何) 以及如何構建一個知識圖譜(技術流程和各個流程的關鍵技術)。

二、知識圖譜是什么

目前學術界對于知識圖譜還沒有較為統一的定義,趙軍老師的《知識圖譜》中做出了如下定義:

知識圖譜是一種比較通用的語義知識的形式化描述框架,用節點表示語義符號,用邊表示符號之間的語義關系。

或者再通俗一點,知識圖譜是一種用圖模型來描述知識和建模世界萬物之間的關聯關系的技術方法,我個人對知識圖譜的理解如下:

知識圖譜基本的組成元素,是圖節點和邊。從生活中的經驗來看,圖節點可以是實例和某個實體,比如建材、水泥等等。

而節點與節點之間的邊,則表示了兩種節點之間的關系,比如建材水泥之間畫出一條邊,標注水泥是建材的子類。

當然,這樣說是不嚴謹的。

為了讓計算機能夠理解和使用,需要一套計算機科學的規范定義,節點對應的是本體(Ontology)和實例,節點和節點間相互的關系可以用圖結構或者相對簡化的三元組來表示。

通過這樣的數據結構,可以完備的表示信息。

有了信息還需要使用,比如查詢、推理等。

要使計算機理解數據,就要按照一定的規則存儲和組織語言,通過各種關鍵字標明每一處信息的含義是什么。

在知識圖譜中,有RDF(Resource Description Frame 資源描述框架)和Owl語言(Ontology Web Language 網絡本體語言)來對本體進行描述,讓計算機理解圖譜中的信息。

會有專門的結構化查詢語言對圖譜進行查詢,比如針對RDF的查詢語言SPARQL或者針對圖結構的查詢語言Cypher(開源圖數據庫Neo4j中實現的圖查詢語言)。

具體怎樣定義與描述,會在知識圖譜構建部分有限的展開。

知識圖譜是一種圖結構,因此可以擺脫傳統關系型數據庫的嚴格限制,在字段和實例的增加、修改等方面都更加隨意和自由,可以加入新的實例,新的節點,新的關系。

還可以把不同的實體建立聯系,把多個圖譜的同一實體建立聯系(實體對齊),這和人類認知世界的方式是類似的。

這也是知識圖譜的優勢,容易建模,有很大的靈活性;結構化的數據和圖結構的組織,使得機器可讀的同時人類也易于理解,這和人腦的神經元及記憶系統很像,也更容易產生人工智能。

三、知識圖譜可以做什么

這個問題的答案是非常寬泛的,如果從一個知識庫或者數據庫的角度來看,知識圖譜可以是任何系統的基礎工程,涉及到存儲、記憶、分析和智能的東西,都可以應用知識圖譜。

直接思考的話,知識圖譜首先是一個規模龐大的數據庫(或者說知識庫),百萬級、億級的數據相互關聯,可以從更多維度對事物進行更精確的分析。

舉個例子,金融知識圖譜可以通過關聯來查找異常、找出團伙、推薦目標客戶等,以往這些關聯業務需要結構化數據庫進行查找,而大部分行業存在著許多非結構化數據,比如表格,文本、圖片等,知識圖譜可以從這些非結構化數據,半結構化數據中提取信息,完成分析,相當于大大擴展了應用的維度和廣度。

這一類對數據的直接應用,就是圖結構消費場景,包括圖數據搜索,路徑分析,關聯分析,圖譜可視化等等,其核心就是對龐大的圖譜數據快速查找、關聯、分析和展現。

除了對數據的直接查找和分析,還可以從自然語言的角度應用知識圖譜。知識圖譜天然的適合人類自然語言的處理,可以用人的思維提出問題,利用圖譜龐大的數據規模,通過算法、推理規則、機器學習和深度學習等產人工智能,實現一些問答和分析。

舉個例子,知識圖譜中存在<砂石,組成,水泥>和<水泥,組成,混凝土>兩個三元組,通過知識推理,可以得到<砂石,組成,混凝土>,即通過一定的知識推理得到未知的事實與關系。

這一類數據應用,就是語義消費場景,包括自然語言檢索、智能分析、知識推理等等,其核心是把圖譜中的知識通過規則或深度學習,形成一定的人工智能。

以上是從技術應用的角度分析知識圖譜的應用,但所有的知識圖譜最終都是要形成產品,提供服務的。

從我們接觸到的各種產品來說,可以分為通用知識圖譜,垂直領域知識圖譜,還有針對企業提供服務的,專門構建知識圖譜的組件和標準化、流程化、自動化工具。

通用的知識圖譜,就是我們常見的搜索引擎,問答系統,或者各種百科。

自2012年谷歌發布知識圖譜項目,并宣布以此為基礎構建下一代智能化搜索引擎后,知識圖譜的應用逐漸深入。

現在使用谷歌,百度等進行搜索,不再僅僅是關鍵字匹配,而是關鍵詞增強檢索,即以檢索詞在圖譜中的的同義詞、上下位詞等詞集合共同搜索,用來拓展或約束搜索。

同時還可以關聯更多的本體及實例,直接找到答案或者展示與檢索詞有關的所有關系。

例如搜索某一個電影,可以看到以圖譜形式展現的電影的所有主要演員,導演,上映日期等信息。

關于關系搜索和結構化展示,更加直觀的例子是天眼查,可以通過搜索一家公司,找到其所有關聯的子公司與法人等,同樣是以圖譜的方式展現的。

問答系統中,用戶直接輸入問題或通過語音識別,將問題轉化為文本,再由自然語言處理找到關鍵信息以及應當采取的操作,將用戶問題轉變為知識圖譜可識別的查詢語句,然后在知識圖譜中檢索得到候選實體集合,通過對不同候選實體進行打分及排序,得到問題的答案。

知識圖譜對于事實類、是非類、定義類等問答效果較好。

百科產品中,知識圖譜也越來越重要。

百科本身就具有龐大且多維度的信息,如果把百科的數據轉化為圖譜,就可以在保證圖譜數據質量的情況下,極大的拓展圖譜規模,其中一個代表就是維基百科的子項目Wikidata。

Wikidata的目標是構建一個免費開放、多語言、任何人或機器都可以編輯修改的大規模鏈接知識庫。Wikidata支持以三元組為基礎的知識條目的自由編輯。

一個三元組代表一個關于該條目的陳述(Statement)。

例如,可以給“土木工程”的條目增加“<土木工程,涉及,工程施工>”的三元組陳述。自2012年啟動到現在,Wikidata已經有多于5000萬條目了。

垂直領域的知識圖譜是相對通用知識圖譜而言的,面向特定領域的知識圖譜,如電商、金融、醫療等。垂直領域的知識圖譜不一定是從互聯網等開放數據抓取,而更可能是企業內部的專業數據。

同時知識表示也不止是三元組等事實性知識,通常由更為復雜的本體知識和規則型知識。

知識抽取的質量也要求更高,往往需要人工校驗,保障質量。

更重要的是,垂直領域的知識圖譜應用形式更全面,除了搜索問答,通常還有決策分析,業務管理等,這些業務對推理的要求更高,并要求更強的可解釋性。

以金融知識圖譜為例,Kensho采用知識圖譜輔助投資顧問和投資研究,圖譜的主要知識來源是于機構已有的結構化數據和公開的公報,研報和新聞的聯合抽取等。

金融概念復雜性較高,并較多的依賴規則型知識進行投資因素的關聯分析。此外,金融知識圖譜還具有高度的時效性,需要對金融知識進行時間維度的建模。

最后一部分是知識圖譜的組件和標準化,這些都是面向B端企業,為了企業更高效高質量的構建知識圖譜所做的工作。

知識圖譜組件是指圍繞知識圖譜的構建一些相關組件產品,比如本體編輯器、關系抽取器、垂直搜索等等,具體工具如斯坦福大學開源的本體編輯工具Protégé,斯坦福大學 InfoLab 實驗室開源的知識抽取的系統Deepdive。

同時,知識圖譜構建的標準化,流程化工作也在進行,如中國電子技術標準化研究院2019年發布的《知識圖譜標準化白皮書》。

綜上,知識圖譜具有廣泛的應用,既是一個規模龐大,查詢靈活的知識庫,也可以通過數據挖掘,深度學習等產生一定程度的人工智能,在可以預見的未來,知識圖譜作為一種重要的人工智能基礎設施,將會持續發展,帶來更多變化。

四、怎么樣構建一個知識圖譜

知識圖譜有廣泛的應用和巨大的應用價值,越來越多的企業也在著手進行知識圖譜的構建。

按流程來說,知識圖譜具有知識表示與建模、知識抽取、知識融合、知識圖譜推理、知識統計與圖挖掘、知識檢索與知識分析等主要的幾步。

以下為知識圖譜技術路線圖。

五、知識表示與建模

要想實現人工智能,首先要做的就是讓人和機器建立起對這個世界的統一認識,即如何把現實世界變成機器能理解,可解釋的知識庫,而答案也正藏在知識圖譜這個名稱中:將知識圖譜化。

這一步也就是對知識的表示與建模。

數據本身是有價值的,但其價值是需要組織和挖掘而產生的,雜亂無章的數據是不能被識別的,也無法產生價值。

數據結構是指相互之間存在一種或多種特定關系的數據元素的集合,是計算機存儲、組織數據的方式。對應到知識圖譜中,主要是圖結構和三元組。

圖結構是很好理解的,圖譜本身就是以圖的結構來存儲和展現的。

我們對現實世界的理解也是如此,先認識到某一個具體的事物或實例,即建立節點,再通過建立節點間的關系完成對事物的認識。

這里需要引入一些概念,首先是本體(Ontology)和實例,本體原本是一個哲學概念,知識圖譜中本體實際上就是對特定領域之中某套概念及其相互之間關系的形式化表達,實例就是本體的具體例子,這就像JAVA中的類和對象,類是本體,new一個對象是實例。

不同對象之間可能存在關系,而這就是一條邊。

實體是本體、實例及關系的整合,比如“手機”是本體框中的一個概念,概念中也規定了相關屬性比如“處理器”,蘋果手機是一個具體的手機,叫做實例,所以蘋果手機也有處理器,蘋果手機以及體現蘋果手機的本體概念“手機”以及相關屬性,叫做一個實體。

大量實體的集合形成了知識庫,例如DBpedia。這些實體通過語義相互連接,就形成了語義網絡,而這也即是知識圖譜的前身。

大部分情況下,人們將實體和概念統稱為實體,將關系和屬性統稱為關系,對知識圖譜進行了簡化,這樣知識圖譜就變成了描述實體以及實體之間的關系的圖結構。

如果按照簡化過的知識圖譜定義,圖譜中的兩個節點和一條邊就構成了一個實體,比如“水泥是建材的一個子類”,就可以表示為“水泥”和“建材”兩個節點,以及一條由水泥指向建材的,屬性為子類的有向邊。

在圖結構中,這樣的邊是可以快速添加的,而節點也都是可以快速添加的,這比傳統的關系型數據庫具有更高的靈活性,也更容易建模,修改的時候也不會造成太大的工作量。

圖結構有專門的圖數據庫,目前知識圖譜中應用的比較成熟的圖數據庫有Neo4J。Neo4J是一個近年來發展起來的圖形化數據庫,相對于關系型數據庫來說,圖數據庫善于處理大量復雜、互連接、低結構化的數據,圖數據庫中通過節點可直接查詢,而關系型數據庫中,需要通過多張表連接查詢,產生性能上的問題。

Neo4J尤其對圖算法進行了改進,查詢和修改的速度較快,性能也可接受。

Neo4j還提供了大規??蓴U展性,在一臺機器上可以處理數十億節點/關系/屬性的圖,可以擴展到多臺機器并行運行。Neo4j中實現的圖查詢語言是Cypher Quary Language,簡稱CQL。

除了圖結構,現在大部分知識圖譜中采用的結構是三元組,是一種更容易存儲、識別和利用的的數據結構。

簡單來說,三元組就是知識圖譜中的兩個節點和一條邊組成的關系對,或者說是一個實體。

要讓計算機理解三元組,就必須對其進行規范化定義,這就引出了RDF(Resource Description Frame 資源描述框架)和Owl語言(Ontology Web Language 網絡本體語言)等定義標準。

圖:三元組

RDF(Resource Description Frame 資源描述框架)是一個使用XML語法來表示的資料模型(Data model),是由W3C制定并推廣的一套用于描述實體和關系的標準。

RDF使用統一資源標識(URI,Uniform Resource Indentifiers)來命名來標識資源,任何一個事物或概念,只要按照RDF表示法描述都可以成為一個資源。

有了資源之后,RDF使用屬性和屬性值來描述資源,屬性和屬性值定義了資源的形態。

特定的資源以一個被命名的屬性與相應的屬性值來描述,稱為一個RDF陳述,其中資源是主詞(Subject),屬性是述詞(Predicate),屬性值則是受詞(Object),需要注意的是,陳述的受詞除了可能是一個字符串,也可能是其它的資料形態或是一個資源。

一個RDF實例<S,P,O>(也即<主語,謂語,賓語>)就是一個三元組,比如<水泥,組成,混凝土>,RDF是抽象的數據模型,支持不同的序列化格式,例如RDF/XML、Turtle和N-Triple,其中<水泥,組成,混凝土>的RDF/XML具體的表示如下:

每一個RDF實例都可以看成一個知識單元,也是圖譜的最小組成部分。

RDF使用的是開放世界假設,即三元組<水泥,組成,混凝土>對于計算機而言意味著混凝土至少有水泥這一種組成材料,而不是只有水泥這一種組成材料。

RDF有一些基本詞匯如rdf:

type用于指定資源類型,但如果想描述某個領域里類別和屬性的層級結構、包含關系等是不夠的。

比如限定<梁思成,畢業于,清華大學>,RDF可以表示梁思成和清華大學這兩個實體有哪些屬性,以及梁思成畢業于清華大學,但我們想定義梁思成是人,清華大學是地點,人有哪些屬性,地點有哪些屬性,人和地點之間存在什么關系,RDF就無法表示了。

為了解決這一問題,W3C推出RDF schema(RDFs),在RDF詞匯基礎上拓展了一套數據建模詞匯來描述數據的模式層,對RDF中的數據進行約束與規范。

Schema英文翻譯為綱要、圖示、構架,Mysql中的Database又稱Schema,其實就是定義了一類數據有哪些屬性,RDFS可以方便的拓展類的屬性。

RDF Schema 不提供實際的應用程序專用的類和屬性,而是提供了描述應用程序專用的類和屬性的框架,RDFS本質上就是RDF詞匯的一個擴展,比如RDFs中有兩個非常重要的詞匯domain和range。

Domain表示屬性的域,即屬于哪個類別,range表示屬性的取值類型,也就是,domain限定了屬性的定義域,range限定了屬性的值域。

舉個例子,在三元組<職業,是,土木工程師>中,可以用domain限定“職業”的類別是“人”,用range限定“職業”的取值范圍是字符串String。具體表示如下:

這里還有一個要點,即RDFS不是根據對象可能具有的屬性來定義類,而是根據屬性可能歸納的類型和取值范圍來定義。

具體來說,我們可以給職業“Career”歸屬到人“Person”的類別下,而不是像經典的面向對象編程中采用的先定義類person,再定義Career。

RDFS的這個要點使得我們可以在不需要重新修改這些類的原始描述的情況下,完成屬性的添加,人們可以很容易的向已經定義的類中增加額外的屬性,這也是以屬性為中心構建類型系統的優勢。

雖然RDFs對RDF的詞匯進行了拓展,但其表達能力還是比較弱。

比如RDFs無法說明兩個類或者多個類是否等價,或者兩個類是否不相交(比如人的子類男人和女人不相交),或者屬性特性的描述,比如傳遞性,逆屬性(大于的逆關系是小于)。

為了進一步提高建模和推理能力,網絡本體語言 OWL(Web Ontology Language)又被提出,其實也可以看做RDFS的進一步拓展。

OWL不但具有快速,靈活的數據建模能力,還可以通過一套定義的詞匯幫助計算機進行推理。以下是owl中的一些重要詞匯:

通過以上圖表中的詞匯,owl可以進行部分推理與展示,比如A的祖先是B,B的祖先是C,自然可以得到A的祖先是C。通過不同詞匯的應用,相比于RDFs,owl的表示能力和推理能力有了很大的進步。

RDFS/OWL序列化方式和RDF沒什么不同,其實在表現形式上,它們就是RDF。

有了RDF數據庫,還需要了解其查詢語言。SPARQL提供了查詢RDF數據的標準語法,查詢規則以及結果返回形式。其實SPARQL和SQL很像,只是關鍵字的定義不同,以下是一個例子:

PREFIX部分進行命名空間的聲明,使下面查詢的書寫更為簡潔。

RDF中以“?”或者“$”指示變量,在where子句中列出關聯的三元組模板(三元組中允許存在變量,所以稱為模板),而select子句指示要查詢的變量。

對應到上述這個例子,查詢的是學生姓名,年齡以及選修的課程,OPTIONAL關鍵字是可選算子,指的是在這個算子覆蓋范圍的查詢語句是可選的,有年齡則返回年齡。

filter是過濾算子,指的是這個算子覆蓋范圍的查詢語句可以用來過濾查詢結果,整句的意思是如果有年齡,則年齡必須大于25歲。

查詢語句可以寫的很復雜,可以層層嵌套,求并集等各種運算來實現復雜的業務邏輯。

最后說一下RDF的存儲,三元組形式簡單,可以簡化為一張三列的表,進而存儲在關系型數據庫(如Mysql)中,也可以存儲在專門的RDF數據庫中,如RDF4J。

RDF4J是Eclipse基金會旗下的開源孵化項目,功能包括RDF數據的解析、存儲、推理和查詢等。

RDF4J本身提供內存和磁盤兩種RDF存儲機制,支持全部的SPARQL查詢和更新語言,可以使用與訪問本地RDF庫相同的API訪問遠程RDF庫,支持所有主流RDF數據格式,包括RDF/XML、Turtle、N-Triples等。其實現的查詢語言為SPARQL。

六、知識抽取

要構建規模龐大的知識圖譜,已有的文獻或資源數量上肯定是不夠的,需要把各種來源的數據中的知識提取出來,并且存儲在知識圖譜中。

知識抽取是指自動化地從文本中發現和抽取相關信息,并將多個文本碎片中的信息進行合并,將非結構化數據轉換為結構化數據,包括某一特定領域的模式、實體關系或RDF三元組。

具體來說,數據的來源有結構化數據、半結構化數據、非結構化數據等,分別對于了不同的抽取方法。

而具體抽取的內容也包括實體抽?。麑嶓w識別)、事件抽取、關系抽取、共指消解(搞清句子中代詞的指代對象)。

知識抽取的數據來源中,非結構化數據占比最高。

非結構化數據其實就是自由文本,比如新聞、論文、政策等,而面向非結構化數據的抽取涉及到機器學習和NLP等。

半結構化數據占比也很大,其數據形式不符合關系型數據庫或其他形式的數據表形式結構,但又包含標簽或其他標記來分離語義元素并保持記錄和數據字段的層次結構,比如表格、列表等。

目前的知識抽取中,百科類數據、網頁數據是重要的半結構化數據來源。

結構化數據往往是企業的業務系統中的數據,常常用于垂直領域知識圖譜的抽取,比如從MySql中抽取成為RDF,因為關系型數據和RDF都是一種結構化數據,所以通??梢酝ㄟ^一定的規則從一種數據映射到另一種數據,目前已經有一些成熟的工具和規則。

圖:知識來源及抽取方法

面向非結構化數據的知識抽取,主要包括實體抽取、關系抽取和時間抽取。

實體抽取是從文本中抽取實體信息元素,包括人名、組織機構名、地理位置、時間、日期、字符值和數值等,就是在抽取知識圖譜中的各個點,是知識圖譜最基本的單元,也是很多自然語言處理問題的基礎。

針對實體抽取,目前已經有了很多很多方法,大致分為基于規則的方法、基于統計模型的方法和基于深度模型的方法。

關系抽取是從文本中抽取出兩個或多個實體之間的語義關系,與實體識別關系密切,主要有以下幾類方法:

事件抽取是指從自然語言文本中抽取出用戶感興趣的事件信息,并以結構化的形式呈現出來,例如事件發生的時間、地點、發生原因、參與者等,如下圖:

圖:事件抽取

半結構化數據抽取主要是從網頁中提取,一般通過包裝器實現,包裝器是能夠將數據從HTML網頁中抽取出來,并將它們還原為結構化數據的軟件程序。

結構化的數據抽取一般是按照規則映射,W3C的RDB2RDF工作組于2012年發布了兩個推薦的RDB2RDF映射語言:DM(Direct Mapping,直接映射)和R2RML。

直接映射規范定義了一個從關系數據庫到RDF圖數據的簡單轉換,將關系數據庫表結構和數據直接轉換為RDF圖,關系數據庫的數據結構直接反映在RDF圖中,基本規則包括:

  • 數據庫中的表映射為RDF類;
  • 數據庫中表的列映射為RDF屬性;
  • 數據庫表中每一行映射為一個資源或實體,創建IRI;
  • 數據庫表中每個單元格的值映射為一個文字值(LiteralValue);
  • 如果單元格的值對應一個外鍵,則將其替換為外鍵值指向的資源或實體的IRI。

R2RML映射是通過邏輯表(Logic Tables)從數據庫中檢索數據。

數據庫的直接映射中,生成的RDF圖的結構直接反映了數據庫的結構,目標RDF詞匯直接反映數據庫模式元素的名稱,結構和目標詞匯都不能改變。

而通過使用R2RML,用戶可以在關系數據上靈活定制視圖。

已經有一些標準和工具支持將數據庫數據轉化為RDF數據、OWL本體等,如D2RQ、Mastro、Ultrawrap、Morph-RDB等。

七、知識融合

構建一個大規模,高質量的知識圖譜是需要很大工作量的,實際使用中,如果能夠把已有的知識圖譜和其他成熟的知識圖譜聯合使用,或者多個系統信息交互使用,將大大提升知識圖譜的規模和效能。

目前,解決本體異構、消除應用系統間的互操作障礙是很多知識圖譜應用面臨的關鍵問題之一。

知識融合是指使來自不同知識源的知識在同一框架規范下進行異構數據整合、消歧、加工、推理驗證、更新等步驟,將同一個概念或實體的描述信息關聯起來。

簡而言之,將多個知識圖譜用一套規范聯合使用起來,就叫知識圖譜融合(也叫知識融合),雖然益處顯而易見,但融合也存在很多問題,其中最主要的問題是異構問題。

其實異構就是不同圖譜對于同一個事物的認識和表示存在沖突,沒法把不同圖譜中的本體和實例一一對應起來,從而造成使用出現錯誤。

造成異構的原因有很多,典型的如:

  • 人類的知識體系非常復雜;
  • 一些知識還受到個人主觀看法的影響;
  • 前沿知識會不停的發展變化;
  • 同一領域有不同組織構建自己的知識庫,交叉領域中的交叉知識往往是獨立構建的等等。

由此導致的異構問題又包含本體異構和實例異構,具體表現為:

  1. 同一領域內往往存在著大量本體,且它們描述的內容在語義上往往有重疊或關聯;
  2. 本體在表示語言和模型上具有差異;
  3. 同名的實例可能指代不同實體;
  4. 不同名的實例可能指代同一實體。

知識融合的目的就是解決知識圖譜異構問題,建立起不同圖譜內異構本體和異構實例之間的關系,要成功建立這樣的關聯,還需要先了解不能匹配的原因。

知識圖譜中的異構形式主要可以劃分為兩個層次:

語言層不匹配和模型層不匹配。

具體如下:

語言層不匹配:

指的是用來描述知識的元語言是不匹配的,其中既包括描述知識語言的語法和所使用的語言原語上的不匹配,還包括定義類、關系和公理等知識成分機制上的匹配。

模型層不匹配:

指的是由于本體建模方式不同所造成的不匹配,包括不同建模者對事物的概念化抽象不匹配、對相同概念或關系的劃分方式不匹配,以及對本體成分解釋的不匹配。

目前,解決本體異構有兩種思路:

1. 本體集成

本體集成,顧名思義,就是將多個本體合并為一個大本體,最直接的做法是將多個本體進行集成,變成一個統一的本體,提供統一的語義規范和共享詞匯,這樣就可以統一交互。

但這樣操作容易使集成后的本體太大,不好修改與維護。

目前應用較多的是基于全局本體 – 局部本體的集成,通過抽取異構本體之間的共同知識,建立一個全局本體,這個全局本體代表了不同系統之間的共識,而每個系統可以保留自己的本體,稱為局部本體。

局部本體既可以在全局本體的基礎上擴充,也可以直接建立自己的本體。

全局本體與局部本體建立映射,局部本體側重于特定的知識,全局本體保證不同系統異構間的部分能相互交互。

2. 本體映射

尋找本體間的映射規則,將不同本體間建立聯系,如上邊提到的局部本體和全局本體的映射。

第一步要明確本體映射分類,這是建立異構本體間映射的基礎。

分類可以按照映射的對象、映射的功能、映射的復雜程度來進行。

  • 映射的對象:明確映射應該建立在異構本體的哪些成分之間。
  • 映射的功能:明確應該建立具有何種功能的本體映射。
  • 映射的復雜程度:明確說明什么形式的映射是簡單的,什么形式的映射是復雜的。

在確定本體映射的分類后,最重要也是最困難的任務在于如何發現異構本體間的映射。

手工建立關系非常耗時,目前的研究熱點是采用合理的方法和工具進行自動或半自動的構建。

不同的本體映射的方法使用的技術不同,但過程基本是相似的。

  1. 導入待映射的本體:不一定統一本體語言,但映射成分需方便獲取。
  2. 發現映射:利用一定的算法,如計算概念間的相似度等,尋找異構本體間的聯系,然后根據這些聯系建立異構本體間的映射規則。
  3. 表示映射:將這些映射合理地表示起來,根據映射的類型,借助工具將發現的映射合理表示和組織。

在進行實例層之間的相互融合時,計算數據量巨大,如何在降低計算的時間復雜度、空間復雜度的前提下提升匹配質量,是一個兩難的問題,目前主要方法與簡介如下:

八、知識圖譜推理、知識統計與圖挖掘

通過知識表示,我們確定了知識以什么樣的方式組織、表示和儲存,使人類和計算機有了認識和使用知識圖譜的基礎;知識抽取則是從各種已有的數據庫,專業知識和互聯網上文本、表格等。

提取出我們關心的數據,并通過各種方法爬取,清洗,將原本結構化、半結構化、非結構化的各種非圖譜數據變為圖譜中可用的、結構化的圖譜數據,相當于建成了基本的知識圖譜。

建立了知識圖譜后,為了實現不同系統間的的知識圖譜的交互,讓不同圖譜對應到統一的本體和實例,需要進行知識圖譜融合,知識融合極大的拓展了知識圖譜的規模和應用場景。

通過以上三步,基本上就構建了有一定規模和實用性,可以實現不同系統間交互的知識圖譜,即實現了數據的從無到有,從有到有用的過程。

下一步就是使用知識圖譜,通過各種計算與分析從大數據中獲取價值,進而進一步支持語義搜索,智能問答,輔助分析等應用場景。

從知識圖譜構建到應用的中間一步,就是知識圖譜推理、知識統計與圖挖掘。

先說知識統計與圖挖掘,其實就是傳統意義上的數據統計與挖掘,只不過數據是知識圖譜,而圖相對樹、鏈表等又是比較復雜的,尤其是知識圖譜規模較大,有時尋找特定數據或關聯數據要耗費大量的時間和算力。

查詢又是知識圖譜中最常見的計算,比如要查詢某一個實例及其關聯信息,RDF三元組中可以將其轉變為對于關系型數據庫的查詢。

而對RDF圖模型或者圖數據庫如Neo4J來說,這就是查詢符合條件的一部分節點和關系,即子圖查詢,比如搜索“水泥是由什么組成的”,就是搜索“水泥”以及所有與其存在“組成”關系(或者與其他組成同義詞,如“原材料”,“用于建造”等)的節點所構成的圖,使用的算法如深度優先搜索或廣度優先搜索等圖算法。

同時還可以對圖的特征進行統計,比如有向圖中指向某個節點的邊有多少(入度),該節點指向其他節點的邊有多少(出度),節點在圖中重要地位的中心度等等。

比如統計圖譜中某一家公司與其他公司的到期未償還債務關系多少(屬于“到期未償還”關系的邊和節點的多少),按此來選擇一批信用不良的公司,或者某些出入度離群的點,是否存在刷單情況等等,將圖譜用于異常檢測。

還有一種很常見的情況,就是對圖譜中多個節點關系進行關聯分析,比如偵破金融里的團隊詐騙,往往一個詐騙團隊有非常復雜的關系網,可以通過圖譜查找多個賬戶之間的轉賬關系,或者與可以賬戶關系密切的賬戶。

其中常用的方法有路徑查詢、距離計算,輸出結果為節點及節點間邊 的距離和邊的集合(路徑)。

或者對某一個節點或事件做時序分析,觀察事件發展中都涉及那些團體和事件,常見的方法如時序分析。

知識統計與圖挖掘是對圖譜中已有知識的查詢、統計和展示,通過明細數據的展示,或者聚合成更高維度的數據來發掘價值,通常是得到新的結論,但不會拓展知識圖譜中已有的數據,從知識圖譜的角度來說是沒有產生新的知識。

而知識推理則是根據已有的知識,按照某種規則或者策略,產生新的知識(新的三元組)。

舉個前面提到的例子,知識圖譜中存在<砂石,組成,水泥>和<水泥,組成,混凝土>兩個三元組,通過知識推理,可以得到<砂石,組成,混凝土>,即通過一定的知識推理得到未知的事實與關系。

知識推理有很多應用,如知識問答就可以通過知識推理來實現,或者可以補全一部分知識圖譜,檢測與推理內容不一致的節點。這些一方面可以改正知識圖譜的質量,修復一些明顯的錯誤,另一方面在知識問答中可以推出一些新的結論和回答。

面向知識圖譜的推理主要圍繞關系的推理展開,即基于圖譜中已有的事實或關系推斷出未知的事實或關系,一般著重考察實體、關系和圖譜結構三個方面的特征信息。

知識圖譜的推理的主要技術手段主要可以分為兩大類:

基于演繹的知識圖譜推理和基于歸納的知識圖譜推理。

演繹推理是一種自上而下的推理,在指在給定的一個或多個前提的情況下,推斷出一個必然成立的結論的過程,我們熟悉的三段論就是典型的演繹推理。

演繹推理的過程需要明確定義的先驗信息,比如在某某前提下,所以基于演繹的知識圖譜推理大多圍繞本體展開,比如某事物具備某一屬性,則必然不存在于與該屬性互斥的事物范圍內。

演繹推理中的一個大類是基于描述邏輯的推理,描述邏輯(Description Logic)是基于對象的、一種形式化知識表示的邏輯。描述邏輯是OWL語言實現邏輯推理的基礎,OWL語言重要的詞語如互為逆關系,子類等就是實現邏輯推理的基礎。

描述邏輯是一階謂詞邏輯的一個可判定子集,所謂可判定,就是保證了推理算法總是能夠終止的,可以得出結論的。要理解描述邏輯就需要先理解一階謂詞邏輯。

人類的一條知識一般可以由具有完整意義的一句話或幾句話表示出來,而這些話可以用一些謂詞公式(用謂詞聯接符號將一些謂詞聯接起來所形成的公式)表示出來,比如張三是一個學生,可以表示為isStudent(張三),這里isStudent(x)是一個謂詞,表示x是一個學生。

這樣很貼近自然語言,也可以被計算機存儲與識別,所以是一種很常用的知識表示方法。

一個描述邏輯系統由四個基本部分組成:

  1. 最基本的元素:概念、關系、個體
  2. TBox術語集:概念術語的公理集合
  3. Abox斷言集:個體的斷言集合
  4. TBox 和 ABox上的推理機制

概念即解釋為一個領域的子集;關系解釋為該領域上的二元關系,如<x,y>|朋友(x,y);個體解釋為一個領域內的實例。
TBox為術語集,它是泛化的知識,是描述概念和關系的知識,被稱之為公理。

ABox是斷言集,指具體個體的信息,ABox 語言包含概念斷言和關系斷言,概念斷言即表示一個對象是否屬于某個概念,關系斷言表示兩個對象是否滿足特定的關系。

描述邏輯的各種算子,對應到owl語言中就是各種詞匯,如算子?對應subClassof;描述邏輯依據提供的構造算子,在簡單的概念和關系上構造出復雜的概念和關系。

基于本體推理的方法常見的有基于 Tableaux 運算的方法、基于邏輯編程改寫的方法、基于一階查詢重寫的方法、基于產生式規則的方法等。

歸納推理是一種自下而上的推理,是指基于已有的部分觀察得出一般結論的過程,典型的歸納推理有歸納泛化(指基于對個體的觀察而得出可能適用于整體的結論)、統計推理(將整體的統計結論應用于個體)。

基于歸納的知識圖譜推理主要是通過對知識圖譜已有信息的分析和挖掘進行推理的,最常用的信息為已有的三元組。

按照推理要素的不同,基于歸納的知識圖譜推理可以分為以下幾類:基于圖結構的推理、基于規則學習的推理和基于表示學習的推理。

九、知識檢索與知識分析

經歷了知識建模與表示、知識抽取、知識圖譜融合、知識圖譜計算與推理之后,知識圖譜已經是相對完善的數據庫了,可以在其基礎上創造應用,服務具體的場景。

在知識圖譜的應用階段已經簡要說明了通用領域知識圖譜和專用領域知識圖譜的應用,這里只聚焦其中三項技術:搜素、問答系統、推薦系統。

1. 搜索

知識圖譜依托龐大的數據和關系對,可以對搜索進行增強,不但針對搜索詞展示出最接近的信息,還把相關的選項也展示出來,提高了查準率和查全率,另外可以通過圖譜化的展現和互動讓用戶更加方便的了解信息。

具體來說,是通過語義搜索、關系搜索和結構化展現實現的。

萬維網之父Tim Berners-Lee是這樣定義語義搜索的:

“語義搜索的本質是通過數學來拜托當今搜索中使用的猜測和近似,并為詞語的含義以及它們如何關聯到我們在搜索引擎輸入框中所找的東西引進一種清晰的理解方式”。

具體來說,首先將用戶輸入的問句進行解析,找出問句中的實體和關系,理解用戶問句的含義,然后在知識圖譜中匹配查詢語句,找出答案,最后通過一定的形式將結果呈現到用戶面前。

知識圖譜本身是一個具有屬性的實體通過關系鏈接而成的網狀知識庫,同時知識圖譜本身可以和網頁上的內容建立概念間的聯系,將網絡上的信息、數據、資源關聯為語義知識,也就是實現了 WEB 從網頁鏈接向概念鏈接的轉變。

同時,相對于原來的按字符串模糊匹配的模式而言,語義搜索對用戶的問句進行分析,找到實體和關系,通過NLP和知識推理理解用戶的問句,并在知識圖譜中盡可能多的找到相關信息,對回答進行相關度排序,實現了用戶的按主題檢索而不是傳統的按字符串檢索。

一個語義搜索系統的基本框架包括查詢構建、查詢處理、結果展示、查詢優化、語義模型、資源及文檔等。

具體的應用中,如搜索“混凝土”,不僅搜索混凝土,還會找到其在知識圖譜中的上位詞,下位詞,同義詞等詞集合,比如砼(同義詞)、輕質混凝土(下位詞)等等。

返回的檢索結果中也會包含這些信息,從而提高了查全率,如果用戶檢索的本意是查找混凝土中的一個子類,那么實際上還提高了查準率。

再比如搜索“同方集團股價”,會以大寫的形式展示實時股價,而不是返回一個網頁,這就是從文本中檢索答案。另外還可以以圖譜化的形式展現,將在可視化部分有限展開。

關系搜索和結構化展示其實屬于知識推理、知識統計與圖計算部分,在用NLP技術理解了用戶的實體和關系要求后,就可以找到兩個或多個對應的實體,直接在圖譜中查詢其互相關系,或者通過知識推理得出其相互關系。

或者是明確了某一實體,找到與其有對應關系的其他實體,比如找到與“混凝土”有“組成”關系的實體,并將其以圖譜或表格的形式展示出來,即為結構化表示。

2. 問答系統

知識問答是用自然語言的方式與機器進行交互并得到答案,是知識圖譜的重要應用。

問答是一種典型的智能行為,圖靈測試就是看機器能否做到人一樣的問答效果。

問答系統不但要求系統本身能夠理解提問者的語義,還要求根據知識圖譜進行知識搜索或知識推理以形成答案。

可以說問答系統是信息檢索系統的一種高級形式,因為問答系統中同樣有查詢式理解和知識檢索這兩個重要過程,且與智能搜索中相應過程中的相關細節是一致的。

多數問答系統更傾向于將給定的問題分解為多個小的問題,然后逐一去知識庫中抽取匹配的答案,并自動檢測其在時間與空間上的吻合度等,最后將答案進行合并,以直觀的方式展現給用戶。

一個問答系統應具備的四大要素:

(1)問題

是問答系統的輸入,通常以問句的形式出現(問答題),也會采用選擇題、多選題、列舉答案題和填空題等形式。

(2)答案

是問答系統的輸出,除了文本表示的答案(問答題或填空題),有時也需要輸出一組答案(列舉問答題)、候選答案的選擇(選擇題)、甚至是多媒體信息。

(3)智能體

是問答系統的執行者,需要理解問題的語義,掌握并使用知識庫解答問題,并最終生成人可讀的答案;

(4)知識庫

存儲了問答系統的知識,其形態可以是文本、數據庫或知識圖譜。

也有工作將知識庫編碼到計算模型中,例如邏輯規則、機器學習模型和深度學習模型。

智能體利用知識庫實現推理。根據知識庫表示形式的不同,當前知識問答可以分為傳統問答方法(符號表示)以及基于深度學習的問答方法(分布式表示)兩種類型。

傳統問答方法使用的主要技術包括關鍵詞檢索、文本蘊涵推理以及邏輯表達式等,深度學習方法使用的技術主要是LSTM、注意力模型與記憶網絡(Memory Network)。

KBQA(knowledge base question answering,基于知識庫的問答系統)采用了相對統一的基于RDF表示的知識圖譜作為存儲基礎,并且把語義理解的結果映射到知識圖譜的本體后生成SPARQL查詢解答問題。

通過本體可以將用戶問題映射到基于概念拓撲圖表示的查詢表達式,也就對應了知識圖譜中某種子圖。KBQA的核心問題Question2Query是找到從用戶問題到知識圖譜子圖的最合理映射。

除了KBQA外,問答系統還有 CommunityQA/FAQ-QA(基于問答對匹配的問答系統)、 Hybrid QA Framework(混合問答系統框架)、基于深度學習的傳統問答模塊優化、基于深度學習的端到端問答模型,感興趣的可自行查閱。

圖:問答系統

如果考慮在實際產品中涉及一個對話系統,通常需要考慮六大部分:

  1. [ 語音識別ASR ] 將原始的語音信號轉換為文本信息;
  2. [ 自然語言理解NLU ] 將識別出來的文本信息轉換為機器可以理解的語義查詢;
  3. [ 對話管理DM ] 根據NLU模塊輸出的語義表示執行對話狀態的跟蹤,并根據一定的策略選擇相應的候選動作。包括對話狀態跟蹤DST和候選動作選擇Pollcy兩部分;
  4. [ 自然語言生成NLG ] 負責生成需要回復給用戶的自然語言文本;
  5. [ 語音合成TTS ] 將自然語言文本轉換成語音輸出給用戶;
  6. [ 知識Knowledge ] 對話任務的完成離不開知識,不論是任務型中的意圖及參數,問題型中的知識庫,還是閑聊中的語料都屬于知識(但是知識并不一定只有這三類)。對話系統結合知識后,能夠形成完善的對話交互框架。

基于知識圖譜的問答,是通過語義分析和答案排序完成的,即先將問題轉化為知識圖譜查詢表達式,再通過檢索和推理得到問題的候選答案集合,然后通過對不同候選答案實體進行打分,依據分數排序,選出最優答案。

3. 推薦系統

推薦系統是我們每天都能接觸到的系統,如淘寶的千人千面,網易云音樂的個性化歌單,目前的個性化推薦算法中應用最廣的是協同過濾算法。

協同過濾分為協同和過濾兩個步驟,協同就是利用群體的行為來做推薦決策,而過濾就是從可行的推薦方案中將用戶最喜歡的方案找出來。

通過群體的協同和每個用戶是否喜歡推薦的反饋不斷迭代,最終的推薦會越來越準確。

當前協同過濾算法主要包括基于用戶的協同過濾和基于物品的協同過濾,其核心是怎么計算標的物之間的相似度以及用戶之間的相似度。

將與當前用戶最相似的用戶喜歡的標的物推薦給該用戶,這就是基于用戶的協同過濾的核心思想;將用戶操作過的標的物最相似的標的物推薦給用戶,這就是基于標的物的協同過濾的核心思想。

推薦的過程可以簡單理解為三個步驟:召回、過濾、排序。

  1. 首先系統根據獲取到的信息,召回適合推薦內容,獲取的信息可以是用戶的搜索記錄、購買記錄、評論等。
  2. 召回的內容中有的是這個用戶不關注的,需要根據過濾的條件,將不需要的內容進行過濾。
  3. 經過過濾產生的推薦集還需要根據內容的相關度進行排序,最后系統根據相關度的排序,將內容分配到對應的模塊,這樣用戶就能看到自己感興趣的內容了。

基于協同過濾的推薦系統,主要有以下問題:

(1) 數據稀疏/長尾/噪音問題

用于協同過濾計算的用戶行為矩陣(用戶和其對應有交互(如購買,點贊,收藏等)的物品矩陣),必然是一個稀疏矩陣,用較小范圍的數據推測較大范圍的數據,會存在預測不準確的問題。

(2) 冷啟動問題

對于新加入的用戶或者物品,系統沒有其歷史交互信息,很難對其進行準確建模和推薦,相對應的推薦準確率和多樣性也會大打折扣。

(3)可解釋性

協同過濾算法側重輸入和輸出,與神經網絡模型一樣類似于一個黑盒,計算模型提煉出的有效特征是什么很難說明,即決策的依據模糊,缺乏可解釋性。

知識圖譜可以針對這些問題進行改善,知識圖譜可以用來表示實體之間的關系,如推薦系統中物品與物品、用戶與物品、用戶與用戶之間的關系。

這些關系信息可以表示用戶偏好與物品相似度等信息,將這些信息引入推薦系統中可以顯著緩解推薦系統面臨的冷啟動與數據稀疏問題。

以阿里巴巴電商知識圖譜為例,該知識圖譜以商品為核心,以人、貨、場為主要框架,共涉及9大類一級本體和27大類二級本體。一級本體分別為人、貨、場、百科知識、行業競爭對手、品質、類目、資質和輿情。

人、貨、場構成了商品信息流通的閉環,其他本體主要給予商品更豐富的信息描述。

阿里巴巴電商知識圖譜的數據來源包含國內-國外數據、商業-國家數據、線上-線下等多源數據。目前有百億級的節點和百億級的關系邊;主要靠機器維護,人工輔助。

有了這樣規模龐大的知識圖譜,可以對個性化推薦進行改進。

知識圖譜可以增加更多的特征,提供了實體與實體之間更深層次、更長范圍的關聯,比如根據用戶喜歡的物品進行推薦,有了知識圖譜后,可以拓展該產品的更多屬性,并且找到更多與其在屬性上有關聯的商品進行推薦。

同時,知識圖譜還提供了與推薦實體的各種關聯實體集合,可以通過語義來推薦相近的物品,比如買了羊肉卷推薦其關聯商品火鍋底料,或者買了手機推薦其圖譜中的下位實體,如手機貼膜,耳機等。

最后,知識圖譜是實體和關系的集合,且具有知識推理功能,因此推薦物品的可解釋性也更好。

十、后記

知識圖譜是一門比較復雜且發展中的科學,目前還有很多不完善和不成熟的地方,每一個步驟也有太多的方法和外延,涉及到語義,邏輯,自然語言處理,機器學習、深度學習和圖算法,整體是艱深并不是容易掌握的。

之前看了幾本書,也聽了幾門課,看了不少技術帖,但腦子里還是迷迷糊糊,沒有一個整體的框架。

寫這篇文章的過程,也是一個不斷查漏補缺,邏輯自洽的過程,寫這篇文章就像完成了一篇綜述,現在我對于整體的流程以及一些基礎的概念有了更多的理解,輸出倒逼輸入,確實有道理。

然而對于產品經理來說,了解技術的底層和概況是為了更好的設計產品,我們更應該關注的是設計產品的目的是什么,面向的用戶是哪些,能夠提供怎樣的價值和解決什么問題,產品的交互與易用性如何等等問題。

了解技術只是為了知道產品設計的邊界在哪里,以及實現某些功能的路徑和成本,一切還是為了產品。

雖然還未成熟,但知識圖譜已經展示出巨大的價值,各種各樣的應用也在不斷落地。

相信在不遠的將來,以知識圖譜為基礎的人工智能會更大范圍、更深程度的改變世界。

 

作者:鐘志偉,中國知網產品經理

本文由 @鐘同學 原創發布于人人都是產品經理,未經作者許可,禁止轉載。

題圖來自 Pexels,基于CC0協議。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 真了不起,很少看到這么深入又完整詳實的對知識圖譜介紹的文章

    來自廣東 回復
  2. 竟然發現了同事~

    來自北京 回復
    1. 認識一下嘍

      回復
  3. 一直在用“水泥”和“混凝土”舉例子,暴露了土木行業,哈哈哈。

    來自北京 回復
    1. 土木狗相見了哈哈哈

      回復
  4. 本文關于知識圖譜的介紹及構建很全面,希望作者持續產出。
    先收藏了,慢慢閱讀。

    來自北京 回復
    1. 感謝支持

      回復
  5. “要想實現人工智能,首先要做的就是讓人和機器建立起對這個世界的統一認識”,然后世界上很多事在人與人之間都不能形成統一認識,你認為要這樣,他認為要那樣,機器要怎樣呢?結果就是機器只會表現出制造機器那部分人的意志。

    來自北京 回復
    1. 這里我的理解是一些公認的知識,比如物理定律等等。確實沒有辦法統一人們的認識,共識十分寶貴的。而且很多新的科技或者制度,文化,都會受到創造者主觀意識的一定影響的??倳幸徊糠窒刃姓唛_創某些東西,然后是越來越多的人參與共建。但就像是比特幣系統中超過50%算力的群體才可以決定共識一樣,只要你相信這個世界中大部分人是好的,就無需對新技術過分擔憂。

      來自北京 回復