編輯導語:隨著人工智能的發展,知識圖譜也變得越來越重要。知識圖譜是一種特殊類型的圖,強調上下文的理解。本文在産品視角下,帶大傢一起看看知識圖譜的構建流程與技術理解。感興趣朋友快來看看吧。
編輯導語:隨著人工智能的發展,知識圖譜也變得越來越重要。知識圖譜是一種特殊類型的圖,強調上下文的理解。本文在産品視角下,帶大傢一起看看知識圖譜的構建流程與技術理解。感興趣朋友快來看看吧。
一、引言
伴隨著人工智能的逐漸落地,知識圖譜也越來越進入大眾的視野。
或許你並沒有留意,但不論是榖歌搜索人物得到的關聯圖譜,購物網站越來越精確的商品推薦,還是常見的siri,小愛同學等語音助手,或者是金融放貸時的風險控製,智慧醫療的治療方案推薦;所有這些智能應用,背後都少不瞭知識圖譜的支撐。
如果打個比方的話,知識圖譜就是人工智能的記憶係統,讓機器感知世界,認識世界,並且通過規模龐大的知識圖譜的融閤、推理、深度學習等,將這些記憶鏈接、應用、産生智慧。
可以說,知識圖譜已經成瞭人工智能時代的基礎設施。
以下是我在查閱資料時看到的一句話,覺得很貼切,在此應用:
知識對於人工智能的價值就在於,讓機器具備認知能力和理解能力。
構建知識圖譜這個過程的本質,就是讓機器形成認知能力,理解這個世界。
本文主要想以産品的視角,展示知識圖譜的What,Why和How,即知識圖譜是什麼(定義和構成,組成元素和組織規則),知識圖譜的價值(有什麼應用場景,應用的效果如何) 以及如何構建一個知識圖譜(技術流程和各個流程的關鍵技術)。
二、知識圖譜是什麼
目前學術界對於知識圖譜還沒有較為統一的定義,趙軍老師的《知識圖譜》中做齣瞭如下定義:
知識圖譜是一種比較通用的語義知識的形式化描述框架,用節點錶示語義符號,用邊錶示符號之間的語義關係。
知識圖譜是一種比較通用的語義知識的形式化描述框架,用節點錶示語義符號,用邊錶示符號之間的語義關係。
或者再通俗一點,知識圖譜是一種用圖模型來描述知識和建模世界萬物之間的關聯關係的技術方法,我個人對知識圖譜的理解如下:
知識圖譜基本的組成元素,是圖節點和邊。從生活中的經驗來看,圖節點可以是實例和某個實體,比如建材、水泥等等。
而節點與節點之間的邊,則錶示瞭兩種節點之間的關係,比如建材水泥之間畫齣一條邊,標注水泥是建材的子類。
當然,這樣說是不嚴謹的。
為瞭讓計算機能夠理解和使用,需要一套計算機科學的規範定義,節點對應的是本體(Ontology)和實例,節點和節點間相互的關係可以用圖結構或者相對簡化的三元組來錶示。
通過這樣的數據結構,可以完備的錶示信息。
有瞭信息還需要使用,比如查詢、推理等。
要使計算機理解數據,就要按照一定的規則存儲和組織語言,通過各種關鍵字標明每一處信息的含義是什麼。
在知識圖譜中,有RDF(Resource Deion 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還提供瞭大規模可擴展性,在一台機器上可以處理數十億節點/關係/屬性的圖,可以擴展到多台機器並行運行。Neo4j中實現的圖查詢語言是Cypher Quary Language,簡稱CQL。
除瞭圖結構,現在大部分知識圖譜中采用的結構是三元組,是一種更容易存儲、識彆和利用的的數據結構。
簡單來說,三元組就是知識圖譜中的兩個節點和一條邊組成的關係對,或者說是一個實體。
要讓計算機理解三元組,就必須對其進行規範化定義,這就引齣瞭RDF(Resource Deion Frame 資源描述框架)和Owl語言(Ontology Web Language 網絡本體語言)等定義標準。
圖:三元組
RDF(Resource Deion Frame 資源描述框架)是一個使用XML語法來錶示的資料模型(Data model),是由W3C製定並推廣的一套用於描述實體和關係的標準。
RDF使用統一資源標識(URI,Uniform Resource Indentifiers)來命名來標識資源,任何一個事物或概念,隻要按照RDF錶示法描述都可以成為一個資源。
有瞭資源之後,RDF使用屬性和屬性值來描述資源,屬性和屬性值定義瞭資源的形態。
特定的資源以一個被命名的屬性與相應的屬性值來描述,稱為一個RDF陳述,其中資源是主詞(Subject),屬性是述詞(Predicate),屬性值則是受詞(Object),需要注意的是,陳述的受詞除瞭可能是一個字符串,也可能是其它的資料形態或是一個資源。
一個RDF實例(也即)就是一個三元組,比如,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三元組。
具體來說,數據的來源有結構化數據、半結構化數據、非結構化數據等,分彆對於瞭不同的抽取方法。
而具體抽取的內容也包括實體抽取(命名實體識彆)、事件抽取、關係抽取、共指消解(搞清句子中代詞的指代對象)。
知識抽取的數據來源中,非結構化數據占比最高。
非結構化數據其實就是自由文本,比如新聞、論文、政策等,而麵嚮非結構化數據的抽取涉及到機器學習和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. 本體映射
尋找本體間的映射規則,將不同本體間建立聯係,如上邊提到的局部本體和全局本體的映射。
第一步要明確本體映射分類,這是建立異構本體間映射的基礎。
分類可以按照映射的對象、映射的功能、映射的復雜程度來進行。
- 映射的對象:明確映射應該建立在異構本體的哪些成分之間。
- 映射的功能:明確應該建立具有何種功能的本體映射。
- 映射的復雜程度:明確說明什麼形式的映射是簡單的,什麼形式的映射是復雜的。
在確定本體映射的分類後,最重要也是最睏難的任務在於如何發現異構本體間的映射。
手工建立關係非常耗時,目前的研究熱點是采用閤理的方法和工具進行自動或半自動的構建。
不同的本體映射的方法使用的技術不同,但過程基本是相似的。
在進行實例層之間的相互融閤時,計算數據量巨大,如何在降低計算的時間復雜度、空間復雜度的前提下提升匹配質量,是一個兩難的問題,目前主要方法與簡介如下:
八、知識圖譜推理、知識統計與圖挖掘
通過知識錶示,我們確定瞭知識以什麼樣的方式組織、錶示和儲存,使人類和計算機有瞭認識和使用知識圖譜的基礎;知識抽取則是從各種已有的數據庫,專業知識和互聯網上文本、錶格等。
提取齣我們關心的數據,並通過各種方法爬取,清洗,將原本結構化、半結構化、非結構化的各種非圖譜數據變為圖譜中可用的、結構化的圖譜數據,相當於建成瞭基本的知識圖譜。
建立瞭知識圖譜後,為瞭實現不同係統間的的知識圖譜的交互,讓不同圖譜對應到統一的本體和實例,需要進行知識圖譜融閤,知識融閤極大的拓展瞭知識圖譜的規模和應用場景。
通過以上三步,基本上就構建瞭有一定規模和實用性,可以實現不同係統間交互的知識圖譜,即實現瞭數據的從無到有,從有到有用的過程。
下一步就是使用知識圖譜,通過各種計算與分析從大數據中獲取價值,進而進一步支持語義搜索,智能問答,輔助分析等應用場景。
從知識圖譜構建到應用的中間一步,就是知識圖譜推理、知識統計與圖挖掘。
先說知識統計與圖挖掘,其實就是傳統意義上的數據統計與挖掘,隻不過數據是知識圖譜,而圖相對樹、鏈錶等又是比較復雜的,尤其是知識圖譜規模較大,有時尋找特定數據或關聯數據要耗費大量的時間和算力。
查詢又是知識圖譜中最常見的計算,比如要查詢某一個實例及其關聯信息,RDF三元組中可以將其轉變為對於關係型數據庫的查詢。
而對RDF圖模型或者圖數據庫如Neo4J來說,這就是查詢符閤條件的一部分節點和關係,即子圖查詢,比如搜索“水泥是由什麼組成的”,就是搜索“水泥”以及所有與其存在“組成”關係(或者與其他組成同義詞,如“原材料”,“用於建造”等)的節點所構成的圖,使用的算法如深度優先搜索或廣度優先搜索等圖算法。
同時還可以對圖的特徵進行統計,比如有嚮圖中指嚮某個節點的邊有多少(入度),該節點指嚮其他節點的邊有多少(齣度),節點在圖中重要地位的中心度等等。
比如統計圖譜中某一傢公司與其他公司的到期未償還債務關係多少(屬於“到期未償還”關係的邊和節點的多少),按此來選擇一批信用不良的公司,或者某些齣入度離群的點,是否存在刷單情況等等,將圖譜用於異常檢測。
還有一種很常見的情況,就是對圖譜中多個節點關係進行關聯分析,比如偵破金融裏的團隊詐騙,往往一個詐騙團隊有非常復雜的關係網,可以通過圖譜查找多個賬戶之間的轉賬關係,或者與可以賬戶關係密切的賬戶。
其中常用的方法有路徑查詢、距離計算,輸齣結果為節點及節點間邊 的距離和邊的集閤(路徑)。
或者對某一個節點或事件做時序分析,觀察事件發展中都涉及那些團體和事件,常見的方法如時序分析。
知識統計與圖挖掘是對圖譜中已有知識的查詢、統計和展示,通過明細數據的展示,或者聚閤成更高維度的數據來發掘價值,通常是得到新的結論,但不會拓展知識圖譜中已有的數據,從知識圖譜的角度來說是沒有産生新的知識。
而知識推理則是根據已有的知識,按照某種規則或者策略,産生新的知識(新的三元組)。
舉個前麵提到的例子,知識圖譜中存在和兩個三元組,通過知識推理,可以得到,即通過一定的知識推理得到未知的事實與關係。
知識推理有很多應用,如知識問答就可以通過知識推理來實現,或者可以補全一部分知識圖譜,檢測與推理內容不一緻的節點。這些一方麵可以改正知識圖譜的質量,修復一些明顯的錯誤,另一方麵在知識問答中可以推齣一些新的結論和迴答。
麵嚮知識圖譜的推理主要圍繞關係的推理展開,即基於圖譜中已有的事實或關係推斷齣未知的事實或關係,一般著重考察實體、關係和圖譜結構三個方麵的特徵信息。
知識圖譜的推理的主要技術手段主要可以分為兩大類:
基於演繹的知識圖譜推理和基於歸納的知識圖譜推理。
演繹推理是一種自上而下的推理,在指在給定的一個或多個前提的情況下,推斷齣一個必然成立的結論的過程,我們熟悉的三段論就是典型的演繹推理。
演繹推理的過程需要明確定義的先驗信息,比如在某某前提下,所以基於演繹的知識圖譜推理大多圍繞本體展開,比如某事物具備某一屬性,則必然不存在於與該屬性互斥的事物範圍內。
演繹推理中的一個大類是基於描述邏輯的推理,描述邏輯(Deion Logic)是基於對象的、一種形式化知識錶示的邏輯。描述邏輯是OWL語言實現邏輯推理的基礎,OWL語言重要的詞語如互為逆關係,子類等就是實現邏輯推理的基礎。
描述邏輯是一階謂詞邏輯的一個可判定子集,所謂可判定,就是保證瞭推理算法總是能夠終止的,可以得齣結論的。要理解描述邏輯就需要先理解一階謂詞邏輯。
人類的一條知識一般可以由具有完整意義的一句話或幾句話錶示齣來,而這些話可以用一些謂詞公式(用謂詞聯接符號將一些謂詞聯接起來所形成的公式)錶示齣來,比如張三是一個學生,可以錶示為isStudent(張三),這裏isStudent(x)是一個謂詞,錶示x是一個學生。
這樣很貼近自然語言,也可以被計算機存儲與識彆,所以是一種很常用的知識錶示方法。
一個描述邏輯係統由四個基本部分組成:
概念即解釋為一個領域的子集;關係解釋為該領域上的二元關係,如|朋友(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(混閤問答係統框架)、基於深度學習的傳統問答模塊優化、基於深度學習的端到端問答模型,感興趣的可自行查閱。
圖:問答係統
如果考慮在實際産品中涉及一個對話係統,通常需要考慮六大部分:
基於知識圖譜的問答,是通過語義分析和答案排序完成的,即先將問題轉化為知識圖譜查詢錶達式,再通過檢索和推理得到問題的候選答案集閤,然後通過對不同候選答案實體進行打分,依據分數排序,選齣最優答案。
3. 推薦係統
推薦係統是我們每天都能接觸到的係統,如淘寶的韆人韆麵,網易雲音樂的個性化歌單,目前的個性化推薦算法中應用最廣的是協同過濾算法。
協同過濾分為協同和過濾兩個步驟,協同就是利用群體的行為來做推薦決策,而過濾就是從可行的推薦方案中將用戶最喜歡的方案找齣來。
通過群體的協同和每個用戶是否喜歡推薦的反饋不斷迭代,最終的推薦會越來越準確。
當前協同過濾算法主要包括基於用戶的協同過濾和基於物品的協同過濾,其核心是怎麼計算標的物之間的相似度以及用戶之間的相似度。
將與當前用戶最相似的用戶喜歡的標的物推薦給該用戶,這就是基於用戶的協同過濾的核心思想;將用戶操作過的標的物最相似的標的物推薦給用戶,這就是基於標的物的協同過濾的核心思想。
推薦的過程可以簡單理解為三個步驟:召迴、過濾、排序。
基於協同過濾的推薦係統,主要有以下問題:
(1) 數據稀疏/長尾/噪音問題
用於協同過濾計算的用戶行為矩陣(用戶和其對應有交互(如購買,點贊,收藏等)的物品矩陣),必然是一個稀疏矩陣,用較小範圍的數據推測較大範圍的數據,會存在預測不準確的問題。
(2) 冷啓動問題
對於新加入的用戶或者物品,係統沒有其曆史交互信息,很難對其進行準確建模和推薦,相對應的推薦準確率和多樣性也會大打摺扣。
(3)可解釋性
協同過濾算法側重輸入和輸齣,與神經網絡模型一樣類似於一個黑盒,計算模型提煉齣的有效特徵是什麼很難說明,即決策的依據模糊,缺乏可解釋性。
知識圖譜可以針對這些問題進行改善,知識圖譜可以用來錶示實體之間的關係,如推薦係統中物品與物品、用戶與物品、用戶與用戶之間的關係。
這些關係信息可以錶示用戶偏好與物品相似度等信息,將這些信息引入推薦係統中可以顯著緩解推薦係統麵臨的冷啓動與數據稀疏問題。
以阿裏巴巴電商知識圖譜為例,該知識圖譜以商品為核心,以人、貨、場為主要框架,共涉及9大類一級本體和27大類二級本體。一級本體分彆為人、貨、場、百科知識、行業競爭對手、品質、類目、資質和輿情。
人、貨、場構成瞭商品信息流通的閉環,其他本體主要給予商品更豐富的信息描述。
阿裏巴巴電商知識圖譜的數據來源包含國內-國外數據、商業-國傢數據、綫上-綫下等多源數據。目前有百億級的節點和百億級的關係邊;主要靠機器維護,人工輔助。
有瞭這樣規模龐大的知識圖譜,可以對個性化推薦進行改進。
知識圖譜可以增加更多的特徵,提供瞭實體與實體之間更深層次、更長範圍的關聯,比如根據用戶喜歡的物品進行推薦,有瞭知識圖譜後,可以拓展該産品的更多屬性,並且找到更多與其在屬性上有關聯的商品進行推薦。
同時,知識圖譜還提供瞭與推薦實體的各種關聯實體集閤,可以通過語義來推薦相近的物品,比如買瞭羊肉捲推薦其關聯商品火鍋底料,或者買瞭手機推薦其圖譜中的下位實體,如手機貼膜,耳機等。
最後,知識圖譜是實體和關係的集閤,且具有知識推理功能,因此推薦物品的可解釋性也更好。
十、後記
知識圖譜是一門比較復雜且發展中的科學,目前還有很多不完善和不成熟的地方,每一個步驟也有太多的方法和外延,涉及到語義,邏輯,自然語言處理,機器學習、深度學習和圖算法,整體是艱深並不是容易掌握的。
之前看瞭幾本書,也聽瞭幾門課,看瞭不少技術帖,但腦子裏還是迷迷糊糊,沒有一個整體的框架。
寫這篇文章的過程,也是一個不斷查漏補缺,邏輯自洽的過程,寫這篇文章就像完成瞭一篇綜述,現在我對於整體的流程以及一些基礎的概念有瞭更多的理解,輸齣倒逼輸入,確實有道理。
然而對於産品經理來說,瞭解技術的底層和概況是為瞭更好的設計産品,我們更應該關注的是設計産品的目的是什麼,麵嚮的用戶是哪些,能夠提供怎樣的價值和解決什麼問題,産品的交互與易用性如何等等問題。
瞭解技術隻是為瞭知道産品設計的邊界在哪裏,以及實現某些功能的路徑和成本,一切還是為瞭産品。
雖然還未成熟,但知識圖譜已經展示齣巨大的價值,各種各樣的應用也在不斷落地。
相信在不遠的將來,以知識圖譜為基礎的人工智能會更大範圍、更深程度的改變世界。
作者:鍾誌偉,中國知網産品經理
本文由 @鍾同學 原創發布於人人都是産品經理,未經作者許可,禁止轉載。
題圖來自 Pexels,基於CC0協議。
責任編輯: