【知識圖譜】產(chǎn)品視角下的知識圖譜構(gòu)建流程與技術(shù)理解
編輯導(dǎo)語:隨著人工智能的發(fā)展,知識圖譜也變得越來越重要。知識圖譜是一種特殊類型的圖,強調(diào)上下文的理解。本文在產(chǎn)品視角下,帶大家一起看看知識圖譜的構(gòu)建流程與技術(shù)理解。感興趣朋友快來看看吧。
一、引言
伴隨著人工智能的逐漸落地,知識圖譜也越來越進入大眾的視野。
或許你并沒有留意,但不論是谷歌搜索人物得到的關(guān)聯(lián)圖譜,購物網(wǎng)站越來越精確的商品推薦,還是常見的siri,小愛同學(xué)等語音助手,或者是金融放貸時的風(fēng)險控制,智慧醫(yī)療的治療方案推薦;所有這些智能應(yīng)用,背后都少不了知識圖譜的支撐。
如果打個比方的話,知識圖譜就是人工智能的記憶系統(tǒng),讓機器感知世界,認識世界,并且通過規(guī)模龐大的知識圖譜的融合、推理、深度學(xué)習(xí)等,將這些記憶鏈接、應(yīng)用、產(chǎn)生智慧。
可以說,知識圖譜已經(jīng)成了人工智能時代的基礎(chǔ)設(shè)施。
以下是我在查閱資料時看到的一句話,覺得很貼切,在此應(yīng)用:
知識對于人工智能的價值就在于,讓機器具備認知能力和理解能力。
構(gòu)建知識圖譜這個過程的本質(zhì),就是讓機器形成認知能力,理解這個世界。
本文主要想以產(chǎn)品的視角,展示知識圖譜的What,Why和How,即知識圖譜是什么(定義和構(gòu)成,組成元素和組織規(guī)則),知識圖譜的價值(有什么應(yīng)用場景,應(yīng)用的效果如何) 以及如何構(gòu)建一個知識圖譜(技術(shù)流程和各個流程的關(guān)鍵技術(shù))。
二、知識圖譜是什么
目前學(xué)術(shù)界對于知識圖譜還沒有較為統(tǒng)一的定義,趙軍老師的《知識圖譜》中做出了如下定義:
知識圖譜是一種比較通用的語義知識的形式化描述框架,用節(jié)點表示語義符號,用邊表示符號之間的語義關(guān)系。
或者再通俗一點,知識圖譜是一種用圖模型來描述知識和建模世界萬物之間的關(guān)聯(lián)關(guān)系的技術(shù)方法,我個人對知識圖譜的理解如下:
知識圖譜基本的組成元素,是圖節(jié)點和邊。從生活中的經(jīng)驗來看,圖節(jié)點可以是實例和某個實體,比如建材、水泥等等。
而節(jié)點與節(jié)點之間的邊,則表示了兩種節(jié)點之間的關(guān)系,比如建材水泥之間畫出一條邊,標注水泥是建材的子類。
當然,這樣說是不嚴謹?shù)摹?/p>
為了讓計算機能夠理解和使用,需要一套計算機科學(xué)的規(guī)范定義,節(jié)點對應(yīng)的是本體(Ontology)和實例,節(jié)點和節(jié)點間相互的關(guān)系可以用圖結(jié)構(gòu)或者相對簡化的三元組來表示。
通過這樣的數(shù)據(jù)結(jié)構(gòu),可以完備的表示信息。
有了信息還需要使用,比如查詢、推理等。
要使計算機理解數(shù)據(jù),就要按照一定的規(guī)則存儲和組織語言,通過各種關(guān)鍵字標明每一處信息的含義是什么。
在知識圖譜中,有RDF(Resource Description Frame 資源描述框架)和Owl語言(Ontology Web Language 網(wǎng)絡(luò)本體語言)來對本體進行描述,讓計算機理解圖譜中的信息。
會有專門的結(jié)構(gòu)化查詢語言對圖譜進行查詢,比如針對RDF的查詢語言SPARQL或者針對圖結(jié)構(gòu)的查詢語言Cypher(開源圖數(shù)據(jù)庫Neo4j中實現(xiàn)的圖查詢語言)。
具體怎樣定義與描述,會在知識圖譜構(gòu)建部分有限的展開。
知識圖譜是一種圖結(jié)構(gòu),因此可以擺脫傳統(tǒng)關(guān)系型數(shù)據(jù)庫的嚴格限制,在字段和實例的增加、修改等方面都更加隨意和自由,可以加入新的實例,新的節(jié)點,新的關(guān)系。
還可以把不同的實體建立聯(lián)系,把多個圖譜的同一實體建立聯(lián)系(實體對齊),這和人類認知世界的方式是類似的。
這也是知識圖譜的優(yōu)勢,容易建模,有很大的靈活性;結(jié)構(gòu)化的數(shù)據(jù)和圖結(jié)構(gòu)的組織,使得機器可讀的同時人類也易于理解,這和人腦的神經(jīng)元及記憶系統(tǒng)很像,也更容易產(chǎn)生人工智能。
三、知識圖譜可以做什么
這個問題的答案是非常寬泛的,如果從一個知識庫或者數(shù)據(jù)庫的角度來看,知識圖譜可以是任何系統(tǒng)的基礎(chǔ)工程,涉及到存儲、記憶、分析和智能的東西,都可以應(yīng)用知識圖譜。
直接思考的話,知識圖譜首先是一個規(guī)模龐大的數(shù)據(jù)庫(或者說知識庫),百萬級、億級的數(shù)據(jù)相互關(guān)聯(lián),可以從更多維度對事物進行更精確的分析。
舉個例子,金融知識圖譜可以通過關(guān)聯(lián)來查找異常、找出團伙、推薦目標客戶等,以往這些關(guān)聯(lián)業(yè)務(wù)需要結(jié)構(gòu)化數(shù)據(jù)庫進行查找,而大部分行業(yè)存在著許多非結(jié)構(gòu)化數(shù)據(jù),比如表格,文本、圖片等,知識圖譜可以從這些非結(jié)構(gòu)化數(shù)據(jù),半結(jié)構(gòu)化數(shù)據(jù)中提取信息,完成分析,相當于大大擴展了應(yīng)用的維度和廣度。
這一類對數(shù)據(jù)的直接應(yīng)用,就是圖結(jié)構(gòu)消費場景,包括圖數(shù)據(jù)搜索,路徑分析,關(guān)聯(lián)分析,圖譜可視化等等,其核心就是對龐大的圖譜數(shù)據(jù)快速查找、關(guān)聯(lián)、分析和展現(xiàn)。
除了對數(shù)據(jù)的直接查找和分析,還可以從自然語言的角度應(yīng)用知識圖譜。知識圖譜天然的適合人類自然語言的處理,可以用人的思維提出問題,利用圖譜龐大的數(shù)據(jù)規(guī)模,通過算法、推理規(guī)則、機器學(xué)習(xí)和深度學(xué)習(xí)等產(chǎn)人工智能,實現(xiàn)一些問答和分析。
舉個例子,知識圖譜中存在<砂石,組成,水泥>和<水泥,組成,混凝土>兩個三元組,通過知識推理,可以得到<砂石,組成,混凝土>,即通過一定的知識推理得到未知的事實與關(guān)系。
這一類數(shù)據(jù)應(yīng)用,就是語義消費場景,包括自然語言檢索、智能分析、知識推理等等,其核心是把圖譜中的知識通過規(guī)則或深度學(xué)習(xí),形成一定的人工智能。
以上是從技術(shù)應(yīng)用的角度分析知識圖譜的應(yīng)用,但所有的知識圖譜最終都是要形成產(chǎn)品,提供服務(wù)的。
從我們接觸到的各種產(chǎn)品來說,可以分為通用知識圖譜,垂直領(lǐng)域知識圖譜,還有針對企業(yè)提供服務(wù)的,專門構(gòu)建知識圖譜的組件和標準化、流程化、自動化工具。
通用的知識圖譜,就是我們常見的搜索引擎,問答系統(tǒng),或者各種百科。
自2012年谷歌發(fā)布知識圖譜項目,并宣布以此為基礎(chǔ)構(gòu)建下一代智能化搜索引擎后,知識圖譜的應(yīng)用逐漸深入。
現(xiàn)在使用谷歌,百度等進行搜索,不再僅僅是關(guān)鍵字匹配,而是關(guān)鍵詞增強檢索,即以檢索詞在圖譜中的的同義詞、上下位詞等詞集合共同搜索,用來拓展或約束搜索。
同時還可以關(guān)聯(lián)更多的本體及實例,直接找到答案或者展示與檢索詞有關(guān)的所有關(guān)系。
例如搜索某一個電影,可以看到以圖譜形式展現(xiàn)的電影的所有主要演員,導(dǎo)演,上映日期等信息。
關(guān)于關(guān)系搜索和結(jié)構(gòu)化展示,更加直觀的例子是天眼查,可以通過搜索一家公司,找到其所有關(guān)聯(lián)的子公司與法人等,同樣是以圖譜的方式展現(xiàn)的。
問答系統(tǒng)中,用戶直接輸入問題或通過語音識別,將問題轉(zhuǎn)化為文本,再由自然語言處理找到關(guān)鍵信息以及應(yīng)當采取的操作,將用戶問題轉(zhuǎn)變?yōu)橹R圖譜可識別的查詢語句,然后在知識圖譜中檢索得到候選實體集合,通過對不同候選實體進行打分及排序,得到問題的答案。
知識圖譜對于事實類、是非類、定義類等問答效果較好。
百科產(chǎn)品中,知識圖譜也越來越重要。
百科本身就具有龐大且多維度的信息,如果把百科的數(shù)據(jù)轉(zhuǎn)化為圖譜,就可以在保證圖譜數(shù)據(jù)質(zhì)量的情況下,極大的拓展圖譜規(guī)模,其中一個代表就是維基百科的子項目Wikidata。
Wikidata的目標是構(gòu)建一個免費開放、多語言、任何人或機器都可以編輯修改的大規(guī)模鏈接知識庫。Wikidata支持以三元組為基礎(chǔ)的知識條目的自由編輯。
一個三元組代表一個關(guān)于該條目的陳述(Statement)。
例如,可以給“土木工程”的條目增加“<土木工程,涉及,工程施工>”的三元組陳述。自2012年啟動到現(xiàn)在,Wikidata已經(jīng)有多于5000萬條目了。
垂直領(lǐng)域的知識圖譜是相對通用知識圖譜而言的,面向特定領(lǐng)域的知識圖譜,如電商、金融、醫(yī)療等。垂直領(lǐng)域的知識圖譜不一定是從互聯(lián)網(wǎng)等開放數(shù)據(jù)抓取,而更可能是企業(yè)內(nèi)部的專業(yè)數(shù)據(jù)。
同時知識表示也不止是三元組等事實性知識,通常由更為復(fù)雜的本體知識和規(guī)則型知識。
知識抽取的質(zhì)量也要求更高,往往需要人工校驗,保障質(zhì)量。
更重要的是,垂直領(lǐng)域的知識圖譜應(yīng)用形式更全面,除了搜索問答,通常還有決策分析,業(yè)務(wù)管理等,這些業(yè)務(wù)對推理的要求更高,并要求更強的可解釋性。
以金融知識圖譜為例,Kensho采用知識圖譜輔助投資顧問和投資研究,圖譜的主要知識來源是于機構(gòu)已有的結(jié)構(gòu)化數(shù)據(jù)和公開的公報,研報和新聞的聯(lián)合抽取等。
金融概念復(fù)雜性較高,并較多的依賴規(guī)則型知識進行投資因素的關(guān)聯(lián)分析。此外,金融知識圖譜還具有高度的時效性,需要對金融知識進行時間維度的建模。
最后一部分是知識圖譜的組件和標準化,這些都是面向B端企業(yè),為了企業(yè)更高效高質(zhì)量的構(gòu)建知識圖譜所做的工作。
知識圖譜組件是指圍繞知識圖譜的構(gòu)建一些相關(guān)組件產(chǎn)品,比如本體編輯器、關(guān)系抽取器、垂直搜索等等,具體工具如斯坦福大學(xué)開源的本體編輯工具Protégé,斯坦福大學(xué) InfoLab 實驗室開源的知識抽取的系統(tǒng)Deepdive。
同時,知識圖譜構(gòu)建的標準化,流程化工作也在進行,如中國電子技術(shù)標準化研究院2019年發(fā)布的《知識圖譜標準化白皮書》。
綜上,知識圖譜具有廣泛的應(yīng)用,既是一個規(guī)模龐大,查詢靈活的知識庫,也可以通過數(shù)據(jù)挖掘,深度學(xué)習(xí)等產(chǎn)生一定程度的人工智能,在可以預(yù)見的未來,知識圖譜作為一種重要的人工智能基礎(chǔ)設(shè)施,將會持續(xù)發(fā)展,帶來更多變化。
四、怎么樣構(gòu)建一個知識圖譜
知識圖譜有廣泛的應(yīng)用和巨大的應(yīng)用價值,越來越多的企業(yè)也在著手進行知識圖譜的構(gòu)建。
按流程來說,知識圖譜具有知識表示與建模、知識抽取、知識融合、知識圖譜推理、知識統(tǒng)計與圖挖掘、知識檢索與知識分析等主要的幾步。
以下為知識圖譜技術(shù)路線圖。
五、知識表示與建模
要想實現(xiàn)人工智能,首先要做的就是讓人和機器建立起對這個世界的統(tǒng)一認識,即如何把現(xiàn)實世界變成機器能理解,可解釋的知識庫,而答案也正藏在知識圖譜這個名稱中:將知識圖譜化。
這一步也就是對知識的表示與建模。
數(shù)據(jù)本身是有價值的,但其價值是需要組織和挖掘而產(chǎn)生的,雜亂無章的數(shù)據(jù)是不能被識別的,也無法產(chǎn)生價值。
數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,是計算機存儲、組織數(shù)據(jù)的方式。對應(yīng)到知識圖譜中,主要是圖結(jié)構(gòu)和三元組。
圖結(jié)構(gòu)是很好理解的,圖譜本身就是以圖的結(jié)構(gòu)來存儲和展現(xiàn)的。
我們對現(xiàn)實世界的理解也是如此,先認識到某一個具體的事物或?qū)嵗?,即建立?jié)點,再通過建立節(jié)點間的關(guān)系完成對事物的認識。
這里需要引入一些概念,首先是本體(Ontology)和實例,本體原本是一個哲學(xué)概念,知識圖譜中本體實際上就是對特定領(lǐng)域之中某套概念及其相互之間關(guān)系的形式化表達,實例就是本體的具體例子,這就像JAVA中的類和對象,類是本體,new一個對象是實例。
不同對象之間可能存在關(guān)系,而這就是一條邊。
實體是本體、實例及關(guān)系的整合,比如“手機”是本體框中的一個概念,概念中也規(guī)定了相關(guān)屬性比如“處理器”,蘋果手機是一個具體的手機,叫做實例,所以蘋果手機也有處理器,蘋果手機以及體現(xiàn)蘋果手機的本體概念“手機”以及相關(guān)屬性,叫做一個實體。
大量實體的集合形成了知識庫,例如DBpedia。這些實體通過語義相互連接,就形成了語義網(wǎng)絡(luò),而這也即是知識圖譜的前身。
大部分情況下,人們將實體和概念統(tǒng)稱為實體,將關(guān)系和屬性統(tǒng)稱為關(guān)系,對知識圖譜進行了簡化,這樣知識圖譜就變成了描述實體以及實體之間的關(guān)系的圖結(jié)構(gòu)。
如果按照簡化過的知識圖譜定義,圖譜中的兩個節(jié)點和一條邊就構(gòu)成了一個實體,比如“水泥是建材的一個子類”,就可以表示為“水泥”和“建材”兩個節(jié)點,以及一條由水泥指向建材的,屬性為子類的有向邊。
在圖結(jié)構(gòu)中,這樣的邊是可以快速添加的,而節(jié)點也都是可以快速添加的,這比傳統(tǒng)的關(guān)系型數(shù)據(jù)庫具有更高的靈活性,也更容易建模,修改的時候也不會造成太大的工作量。
圖結(jié)構(gòu)有專門的圖數(shù)據(jù)庫,目前知識圖譜中應(yīng)用的比較成熟的圖數(shù)據(jù)庫有Neo4J。Neo4J是一個近年來發(fā)展起來的圖形化數(shù)據(jù)庫,相對于關(guān)系型數(shù)據(jù)庫來說,圖數(shù)據(jù)庫善于處理大量復(fù)雜、互連接、低結(jié)構(gòu)化的數(shù)據(jù),圖數(shù)據(jù)庫中通過節(jié)點可直接查詢,而關(guān)系型數(shù)據(jù)庫中,需要通過多張表連接查詢,產(chǎn)生性能上的問題。
Neo4J尤其對圖算法進行了改進,查詢和修改的速度較快,性能也可接受。
Neo4j還提供了大規(guī)??蓴U展性,在一臺機器上可以處理數(shù)十億節(jié)點/關(guān)系/屬性的圖,可以擴展到多臺機器并行運行。Neo4j中實現(xiàn)的圖查詢語言是Cypher Quary Language,簡稱CQL。
除了圖結(jié)構(gòu),現(xiàn)在大部分知識圖譜中采用的結(jié)構(gòu)是三元組,是一種更容易存儲、識別和利用的的數(shù)據(jù)結(jié)構(gòu)。
簡單來說,三元組就是知識圖譜中的兩個節(jié)點和一條邊組成的關(guān)系對,或者說是一個實體。
要讓計算機理解三元組,就必須對其進行規(guī)范化定義,這就引出了RDF(Resource Description Frame 資源描述框架)和Owl語言(Ontology Web Language 網(wǎng)絡(luò)本體語言)等定義標準。
圖:三元組
RDF(Resource Description Frame 資源描述框架)是一個使用XML語法來表示的資料模型(Data model),是由W3C制定并推廣的一套用于描述實體和關(guān)系的標準。
RDF使用統(tǒng)一資源標識(URI,Uniform Resource Indentifiers)來命名來標識資源,任何一個事物或概念,只要按照RDF表示法描述都可以成為一個資源。
有了資源之后,RDF使用屬性和屬性值來描述資源,屬性和屬性值定義了資源的形態(tài)。
特定的資源以一個被命名的屬性與相應(yīng)的屬性值來描述,稱為一個RDF陳述,其中資源是主詞(Subject),屬性是述詞(Predicate),屬性值則是受詞(Object),需要注意的是,陳述的受詞除了可能是一個字符串,也可能是其它的資料形態(tài)或是一個資源。
一個RDF實例<S,P,O>(也即<主語,謂語,賓語>)就是一個三元組,比如<水泥,組成,混凝土>,RDF是抽象的數(shù)據(jù)模型,支持不同的序列化格式,例如RDF/XML、Turtle和N-Triple,其中<水泥,組成,混凝土>的RDF/XML具體的表示如下:
每一個RDF實例都可以看成一個知識單元,也是圖譜的最小組成部分。
RDF使用的是開放世界假設(shè),即三元組<水泥,組成,混凝土>對于計算機而言意味著混凝土至少有水泥這一種組成材料,而不是只有水泥這一種組成材料。
RDF有一些基本詞匯如rdf:
type用于指定資源類型,但如果想描述某個領(lǐng)域里類別和屬性的層級結(jié)構(gòu)、包含關(guān)系等是不夠的。
比如限定<梁思成,畢業(yè)于,清華大學(xué)>,RDF可以表示梁思成和清華大學(xué)這兩個實體有哪些屬性,以及梁思成畢業(yè)于清華大學(xué),但我們想定義梁思成是人,清華大學(xué)是地點,人有哪些屬性,地點有哪些屬性,人和地點之間存在什么關(guān)系,RDF就無法表示了。
為了解決這一問題,W3C推出RDF schema(RDFs),在RDF詞匯基礎(chǔ)上拓展了一套數(shù)據(jù)建模詞匯來描述數(shù)據(jù)的模式層,對RDF中的數(shù)據(jù)進行約束與規(guī)范。
Schema英文翻譯為綱要、圖示、構(gòu)架,Mysql中的Database又稱Schema,其實就是定義了一類數(shù)據(jù)有哪些屬性,RDFS可以方便的拓展類的屬性。
RDF Schema 不提供實際的應(yīng)用程序?qū)S玫念惡蛯傩?,而是提供了描述?yīng)用程序?qū)S玫念惡蛯傩缘目蚣?,RDFS本質(zhì)上就是RDF詞匯的一個擴展,比如RDFs中有兩個非常重要的詞匯domain和range。
Domain表示屬性的域,即屬于哪個類別,range表示屬性的取值類型,也就是,domain限定了屬性的定義域,range限定了屬性的值域。
舉個例子,在三元組<職業(yè),是,土木工程師>中,可以用domain限定“職業(yè)”的類別是“人”,用range限定“職業(yè)”的取值范圍是字符串String。具體表示如下:
這里還有一個要點,即RDFS不是根據(jù)對象可能具有的屬性來定義類,而是根據(jù)屬性可能歸納的類型和取值范圍來定義。
具體來說,我們可以給職業(yè)“Career”歸屬到人“Person”的類別下,而不是像經(jīng)典的面向?qū)ο缶幊讨胁捎玫南榷x類person,再定義Career。
RDFS的這個要點使得我們可以在不需要重新修改這些類的原始描述的情況下,完成屬性的添加,人們可以很容易的向已經(jīng)定義的類中增加額外的屬性,這也是以屬性為中心構(gòu)建類型系統(tǒng)的優(yōu)勢。
雖然RDFs對RDF的詞匯進行了拓展,但其表達能力還是比較弱。
比如RDFs無法說明兩個類或者多個類是否等價,或者兩個類是否不相交(比如人的子類男人和女人不相交),或者屬性特性的描述,比如傳遞性,逆屬性(大于的逆關(guān)系是小于)。
為了進一步提高建模和推理能力,網(wǎng)絡(luò)本體語言 OWL(Web Ontology Language)又被提出,其實也可以看做RDFS的進一步拓展。
OWL不但具有快速,靈活的數(shù)據(jù)建模能力,還可以通過一套定義的詞匯幫助計算機進行推理。以下是owl中的一些重要詞匯:
通過以上圖表中的詞匯,owl可以進行部分推理與展示,比如A的祖先是B,B的祖先是C,自然可以得到A的祖先是C。通過不同詞匯的應(yīng)用,相比于RDFs,owl的表示能力和推理能力有了很大的進步。
RDFS/OWL序列化方式和RDF沒什么不同,其實在表現(xiàn)形式上,它們就是RDF。
有了RDF數(shù)據(jù)庫,還需要了解其查詢語言。SPARQL提供了查詢RDF數(shù)據(jù)的標準語法,查詢規(guī)則以及結(jié)果返回形式。其實SPARQL和SQL很像,只是關(guān)鍵字的定義不同,以下是一個例子:
PREFIX部分進行命名空間的聲明,使下面查詢的書寫更為簡潔。
RDF中以“?”或者“$”指示變量,在where子句中列出關(guān)聯(lián)的三元組模板(三元組中允許存在變量,所以稱為模板),而select子句指示要查詢的變量。
對應(yīng)到上述這個例子,查詢的是學(xué)生姓名,年齡以及選修的課程,OPTIONAL關(guān)鍵字是可選算子,指的是在這個算子覆蓋范圍的查詢語句是可選的,有年齡則返回年齡。
filter是過濾算子,指的是這個算子覆蓋范圍的查詢語句可以用來過濾查詢結(jié)果,整句的意思是如果有年齡,則年齡必須大于25歲。
查詢語句可以寫的很復(fù)雜,可以層層嵌套,求并集等各種運算來實現(xiàn)復(fù)雜的業(yè)務(wù)邏輯。
最后說一下RDF的存儲,三元組形式簡單,可以簡化為一張三列的表,進而存儲在關(guān)系型數(shù)據(jù)庫(如Mysql)中,也可以存儲在專門的RDF數(shù)據(jù)庫中,如RDF4J。
RDF4J是Eclipse基金會旗下的開源孵化項目,功能包括RDF數(shù)據(jù)的解析、存儲、推理和查詢等。
RDF4J本身提供內(nèi)存和磁盤兩種RDF存儲機制,支持全部的SPARQL查詢和更新語言,可以使用與訪問本地RDF庫相同的API訪問遠程RDF庫,支持所有主流RDF數(shù)據(jù)格式,包括RDF/XML、Turtle、N-Triples等。其實現(xiàn)的查詢語言為SPARQL。
六、知識抽取
要構(gòu)建規(guī)模龐大的知識圖譜,已有的文獻或資源數(shù)量上肯定是不夠的,需要把各種來源的數(shù)據(jù)中的知識提取出來,并且存儲在知識圖譜中。
知識抽取是指自動化地從文本中發(fā)現(xiàn)和抽取相關(guān)信息,并將多個文本碎片中的信息進行合并,將非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)化數(shù)據(jù),包括某一特定領(lǐng)域的模式、實體關(guān)系或RDF三元組。
具體來說,數(shù)據(jù)的來源有結(jié)構(gòu)化數(shù)據(jù)、半結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)等,分別對于了不同的抽取方法。
而具體抽取的內(nèi)容也包括實體抽?。麑嶓w識別)、事件抽取、關(guān)系抽取、共指消解(搞清句子中代詞的指代對象)。
知識抽取的數(shù)據(jù)來源中,非結(jié)構(gòu)化數(shù)據(jù)占比最高。
非結(jié)構(gòu)化數(shù)據(jù)其實就是自由文本,比如新聞、論文、政策等,而面向非結(jié)構(gòu)化數(shù)據(jù)的抽取涉及到機器學(xué)習(xí)和NLP等。
半結(jié)構(gòu)化數(shù)據(jù)占比也很大,其數(shù)據(jù)形式不符合關(guān)系型數(shù)據(jù)庫或其他形式的數(shù)據(jù)表形式結(jié)構(gòu),但又包含標簽或其他標記來分離語義元素并保持記錄和數(shù)據(jù)字段的層次結(jié)構(gòu),比如表格、列表等。
目前的知識抽取中,百科類數(shù)據(jù)、網(wǎng)頁數(shù)據(jù)是重要的半結(jié)構(gòu)化數(shù)據(jù)來源。
結(jié)構(gòu)化數(shù)據(jù)往往是企業(yè)的業(yè)務(wù)系統(tǒng)中的數(shù)據(jù),常常用于垂直領(lǐng)域知識圖譜的抽取,比如從MySql中抽取成為RDF,因為關(guān)系型數(shù)據(jù)和RDF都是一種結(jié)構(gòu)化數(shù)據(jù),所以通??梢酝ㄟ^一定的規(guī)則從一種數(shù)據(jù)映射到另一種數(shù)據(jù),目前已經(jīng)有一些成熟的工具和規(guī)則。
圖:知識來源及抽取方法
面向非結(jié)構(gòu)化數(shù)據(jù)的知識抽取,主要包括實體抽取、關(guān)系抽取和時間抽取。
實體抽取是從文本中抽取實體信息元素,包括人名、組織機構(gòu)名、地理位置、時間、日期、字符值和數(shù)值等,就是在抽取知識圖譜中的各個點,是知識圖譜最基本的單元,也是很多自然語言處理問題的基礎(chǔ)。
針對實體抽取,目前已經(jīng)有了很多很多方法,大致分為基于規(guī)則的方法、基于統(tǒng)計模型的方法和基于深度模型的方法。
關(guān)系抽取是從文本中抽取出兩個或多個實體之間的語義關(guān)系,與實體識別關(guān)系密切,主要有以下幾類方法:
事件抽取是指從自然語言文本中抽取出用戶感興趣的事件信息,并以結(jié)構(gòu)化的形式呈現(xiàn)出來,例如事件發(fā)生的時間、地點、發(fā)生原因、參與者等,如下圖:
圖:事件抽取
半結(jié)構(gòu)化數(shù)據(jù)抽取主要是從網(wǎng)頁中提取,一般通過包裝器實現(xiàn),包裝器是能夠?qū)?shù)據(jù)從HTML網(wǎng)頁中抽取出來,并將它們還原為結(jié)構(gòu)化數(shù)據(jù)的軟件程序。
結(jié)構(gòu)化的數(shù)據(jù)抽取一般是按照規(guī)則映射,W3C的RDB2RDF工作組于2012年發(fā)布了兩個推薦的RDB2RDF映射語言:DM(Direct Mapping,直接映射)和R2RML。
直接映射規(guī)范定義了一個從關(guān)系數(shù)據(jù)庫到RDF圖數(shù)據(jù)的簡單轉(zhuǎn)換,將關(guān)系數(shù)據(jù)庫表結(jié)構(gòu)和數(shù)據(jù)直接轉(zhuǎn)換為RDF圖,關(guān)系數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)直接反映在RDF圖中,基本規(guī)則包括:
- 數(shù)據(jù)庫中的表映射為RDF類;
- 數(shù)據(jù)庫中表的列映射為RDF屬性;
- 數(shù)據(jù)庫表中每一行映射為一個資源或?qū)嶓w,創(chuàng)建IRI;
- 數(shù)據(jù)庫表中每個單元格的值映射為一個文字值(LiteralValue);
- 如果單元格的值對應(yīng)一個外鍵,則將其替換為外鍵值指向的資源或?qū)嶓w的IRI。
R2RML映射是通過邏輯表(Logic Tables)從數(shù)據(jù)庫中檢索數(shù)據(jù)。
數(shù)據(jù)庫的直接映射中,生成的RDF圖的結(jié)構(gòu)直接反映了數(shù)據(jù)庫的結(jié)構(gòu),目標RDF詞匯直接反映數(shù)據(jù)庫模式元素的名稱,結(jié)構(gòu)和目標詞匯都不能改變。
而通過使用R2RML,用戶可以在關(guān)系數(shù)據(jù)上靈活定制視圖。
已經(jīng)有一些標準和工具支持將數(shù)據(jù)庫數(shù)據(jù)轉(zhuǎn)化為RDF數(shù)據(jù)、OWL本體等,如D2RQ、Mastro、Ultrawrap、Morph-RDB等。
七、知識融合
構(gòu)建一個大規(guī)模,高質(zhì)量的知識圖譜是需要很大工作量的,實際使用中,如果能夠把已有的知識圖譜和其他成熟的知識圖譜聯(lián)合使用,或者多個系統(tǒng)信息交互使用,將大大提升知識圖譜的規(guī)模和效能。
目前,解決本體異構(gòu)、消除應(yīng)用系統(tǒng)間的互操作障礙是很多知識圖譜應(yīng)用面臨的關(guān)鍵問題之一。
知識融合是指使來自不同知識源的知識在同一框架規(guī)范下進行異構(gòu)數(shù)據(jù)整合、消歧、加工、推理驗證、更新等步驟,將同一個概念或?qū)嶓w的描述信息關(guān)聯(lián)起來。
簡而言之,將多個知識圖譜用一套規(guī)范聯(lián)合使用起來,就叫知識圖譜融合(也叫知識融合),雖然益處顯而易見,但融合也存在很多問題,其中最主要的問題是異構(gòu)問題。
其實異構(gòu)就是不同圖譜對于同一個事物的認識和表示存在沖突,沒法把不同圖譜中的本體和實例一一對應(yīng)起來,從而造成使用出現(xiàn)錯誤。
造成異構(gòu)的原因有很多,典型的如:
- 人類的知識體系非常復(fù)雜;
- 一些知識還受到個人主觀看法的影響;
- 前沿知識會不停的發(fā)展變化;
- 同一領(lǐng)域有不同組織構(gòu)建自己的知識庫,交叉領(lǐng)域中的交叉知識往往是獨立構(gòu)建的等等。
由此導(dǎo)致的異構(gòu)問題又包含本體異構(gòu)和實例異構(gòu),具體表現(xiàn)為:
- 同一領(lǐng)域內(nèi)往往存在著大量本體,且它們描述的內(nèi)容在語義上往往有重疊或關(guān)聯(lián);
- 本體在表示語言和模型上具有差異;
- 同名的實例可能指代不同實體;
- 不同名的實例可能指代同一實體。
知識融合的目的就是解決知識圖譜異構(gòu)問題,建立起不同圖譜內(nèi)異構(gòu)本體和異構(gòu)實例之間的關(guān)系,要成功建立這樣的關(guān)聯(lián),還需要先了解不能匹配的原因。
知識圖譜中的異構(gòu)形式主要可以劃分為兩個層次:
語言層不匹配和模型層不匹配。
具體如下:
語言層不匹配:
指的是用來描述知識的元語言是不匹配的,其中既包括描述知識語言的語法和所使用的語言原語上的不匹配,還包括定義類、關(guān)系和公理等知識成分機制上的匹配。
模型層不匹配:
指的是由于本體建模方式不同所造成的不匹配,包括不同建模者對事物的概念化抽象不匹配、對相同概念或關(guān)系的劃分方式不匹配,以及對本體成分解釋的不匹配。
目前,解決本體異構(gòu)有兩種思路:
1. 本體集成
本體集成,顧名思義,就是將多個本體合并為一個大本體,最直接的做法是將多個本體進行集成,變成一個統(tǒng)一的本體,提供統(tǒng)一的語義規(guī)范和共享詞匯,這樣就可以統(tǒng)一交互。
但這樣操作容易使集成后的本體太大,不好修改與維護。
目前應(yīng)用較多的是基于全局本體 – 局部本體的集成,通過抽取異構(gòu)本體之間的共同知識,建立一個全局本體,這個全局本體代表了不同系統(tǒng)之間的共識,而每個系統(tǒng)可以保留自己的本體,稱為局部本體。
局部本體既可以在全局本體的基礎(chǔ)上擴充,也可以直接建立自己的本體。
全局本體與局部本體建立映射,局部本體側(cè)重于特定的知識,全局本體保證不同系統(tǒng)異構(gòu)間的部分能相互交互。
2. 本體映射
尋找本體間的映射規(guī)則,將不同本體間建立聯(lián)系,如上邊提到的局部本體和全局本體的映射。
第一步要明確本體映射分類,這是建立異構(gòu)本體間映射的基礎(chǔ)。
分類可以按照映射的對象、映射的功能、映射的復(fù)雜程度來進行。
- 映射的對象:明確映射應(yīng)該建立在異構(gòu)本體的哪些成分之間。
- 映射的功能:明確應(yīng)該建立具有何種功能的本體映射。
- 映射的復(fù)雜程度:明確說明什么形式的映射是簡單的,什么形式的映射是復(fù)雜的。
在確定本體映射的分類后,最重要也是最困難的任務(wù)在于如何發(fā)現(xiàn)異構(gòu)本體間的映射。
手工建立關(guān)系非常耗時,目前的研究熱點是采用合理的方法和工具進行自動或半自動的構(gòu)建。
不同的本體映射的方法使用的技術(shù)不同,但過程基本是相似的。
- 導(dǎo)入待映射的本體:不一定統(tǒng)一本體語言,但映射成分需方便獲取。
- 發(fā)現(xiàn)映射:利用一定的算法,如計算概念間的相似度等,尋找異構(gòu)本體間的聯(lián)系,然后根據(jù)這些聯(lián)系建立異構(gòu)本體間的映射規(guī)則。
- 表示映射:將這些映射合理地表示起來,根據(jù)映射的類型,借助工具將發(fā)現(xiàn)的映射合理表示和組織。
在進行實例層之間的相互融合時,計算數(shù)據(jù)量巨大,如何在降低計算的時間復(fù)雜度、空間復(fù)雜度的前提下提升匹配質(zhì)量,是一個兩難的問題,目前主要方法與簡介如下:
八、知識圖譜推理、知識統(tǒng)計與圖挖掘
通過知識表示,我們確定了知識以什么樣的方式組織、表示和儲存,使人類和計算機有了認識和使用知識圖譜的基礎(chǔ);知識抽取則是從各種已有的數(shù)據(jù)庫,專業(yè)知識和互聯(lián)網(wǎng)上文本、表格等。
提取出我們關(guān)心的數(shù)據(jù),并通過各種方法爬取,清洗,將原本結(jié)構(gòu)化、半結(jié)構(gòu)化、非結(jié)構(gòu)化的各種非圖譜數(shù)據(jù)變?yōu)閳D譜中可用的、結(jié)構(gòu)化的圖譜數(shù)據(jù),相當于建成了基本的知識圖譜。
建立了知識圖譜后,為了實現(xiàn)不同系統(tǒng)間的的知識圖譜的交互,讓不同圖譜對應(yīng)到統(tǒng)一的本體和實例,需要進行知識圖譜融合,知識融合極大的拓展了知識圖譜的規(guī)模和應(yīng)用場景。
通過以上三步,基本上就構(gòu)建了有一定規(guī)模和實用性,可以實現(xiàn)不同系統(tǒng)間交互的知識圖譜,即實現(xiàn)了數(shù)據(jù)的從無到有,從有到有用的過程。
下一步就是使用知識圖譜,通過各種計算與分析從大數(shù)據(jù)中獲取價值,進而進一步支持語義搜索,智能問答,輔助分析等應(yīng)用場景。
從知識圖譜構(gòu)建到應(yīng)用的中間一步,就是知識圖譜推理、知識統(tǒng)計與圖挖掘。
先說知識統(tǒng)計與圖挖掘,其實就是傳統(tǒng)意義上的數(shù)據(jù)統(tǒng)計與挖掘,只不過數(shù)據(jù)是知識圖譜,而圖相對樹、鏈表等又是比較復(fù)雜的,尤其是知識圖譜規(guī)模較大,有時尋找特定數(shù)據(jù)或關(guān)聯(lián)數(shù)據(jù)要耗費大量的時間和算力。
查詢又是知識圖譜中最常見的計算,比如要查詢某一個實例及其關(guān)聯(lián)信息,RDF三元組中可以將其轉(zhuǎn)變?yōu)閷τ陉P(guān)系型數(shù)據(jù)庫的查詢。
而對RDF圖模型或者圖數(shù)據(jù)庫如Neo4J來說,這就是查詢符合條件的一部分節(jié)點和關(guān)系,即子圖查詢,比如搜索“水泥是由什么組成的”,就是搜索“水泥”以及所有與其存在“組成”關(guān)系(或者與其他組成同義詞,如“原材料”,“用于建造”等)的節(jié)點所構(gòu)成的圖,使用的算法如深度優(yōu)先搜索或廣度優(yōu)先搜索等圖算法。
同時還可以對圖的特征進行統(tǒng)計,比如有向圖中指向某個節(jié)點的邊有多少(入度),該節(jié)點指向其他節(jié)點的邊有多少(出度),節(jié)點在圖中重要地位的中心度等等。
比如統(tǒng)計圖譜中某一家公司與其他公司的到期未償還債務(wù)關(guān)系多少(屬于“到期未償還”關(guān)系的邊和節(jié)點的多少),按此來選擇一批信用不良的公司,或者某些出入度離群的點,是否存在刷單情況等等,將圖譜用于異常檢測。
還有一種很常見的情況,就是對圖譜中多個節(jié)點關(guān)系進行關(guān)聯(lián)分析,比如偵破金融里的團隊詐騙,往往一個詐騙團隊有非常復(fù)雜的關(guān)系網(wǎng),可以通過圖譜查找多個賬戶之間的轉(zhuǎn)賬關(guān)系,或者與可以賬戶關(guān)系密切的賬戶。
其中常用的方法有路徑查詢、距離計算,輸出結(jié)果為節(jié)點及節(jié)點間邊 的距離和邊的集合(路徑)。
或者對某一個節(jié)點或事件做時序分析,觀察事件發(fā)展中都涉及那些團體和事件,常見的方法如時序分析。
知識統(tǒng)計與圖挖掘是對圖譜中已有知識的查詢、統(tǒng)計和展示,通過明細數(shù)據(jù)的展示,或者聚合成更高維度的數(shù)據(jù)來發(fā)掘價值,通常是得到新的結(jié)論,但不會拓展知識圖譜中已有的數(shù)據(jù),從知識圖譜的角度來說是沒有產(chǎn)生新的知識。
而知識推理則是根據(jù)已有的知識,按照某種規(guī)則或者策略,產(chǎn)生新的知識(新的三元組)。
舉個前面提到的例子,知識圖譜中存在<砂石,組成,水泥>和<水泥,組成,混凝土>兩個三元組,通過知識推理,可以得到<砂石,組成,混凝土>,即通過一定的知識推理得到未知的事實與關(guān)系。
知識推理有很多應(yīng)用,如知識問答就可以通過知識推理來實現(xiàn),或者可以補全一部分知識圖譜,檢測與推理內(nèi)容不一致的節(jié)點。這些一方面可以改正知識圖譜的質(zhì)量,修復(fù)一些明顯的錯誤,另一方面在知識問答中可以推出一些新的結(jié)論和回答。
面向知識圖譜的推理主要圍繞關(guān)系的推理展開,即基于圖譜中已有的事實或關(guān)系推斷出未知的事實或關(guān)系,一般著重考察實體、關(guān)系和圖譜結(jié)構(gòu)三個方面的特征信息。
知識圖譜的推理的主要技術(shù)手段主要可以分為兩大類:
基于演繹的知識圖譜推理和基于歸納的知識圖譜推理。
演繹推理是一種自上而下的推理,在指在給定的一個或多個前提的情況下,推斷出一個必然成立的結(jié)論的過程,我們熟悉的三段論就是典型的演繹推理。
演繹推理的過程需要明確定義的先驗信息,比如在某某前提下,所以基于演繹的知識圖譜推理大多圍繞本體展開,比如某事物具備某一屬性,則必然不存在于與該屬性互斥的事物范圍內(nèi)。
演繹推理中的一個大類是基于描述邏輯的推理,描述邏輯(Description Logic)是基于對象的、一種形式化知識表示的邏輯。描述邏輯是OWL語言實現(xiàn)邏輯推理的基礎(chǔ),OWL語言重要的詞語如互為逆關(guān)系,子類等就是實現(xiàn)邏輯推理的基礎(chǔ)。
描述邏輯是一階謂詞邏輯的一個可判定子集,所謂可判定,就是保證了推理算法總是能夠終止的,可以得出結(jié)論的。要理解描述邏輯就需要先理解一階謂詞邏輯。
人類的一條知識一般可以由具有完整意義的一句話或幾句話表示出來,而這些話可以用一些謂詞公式(用謂詞聯(lián)接符號將一些謂詞聯(lián)接起來所形成的公式)表示出來,比如張三是一個學(xué)生,可以表示為isStudent(張三),這里isStudent(x)是一個謂詞,表示x是一個學(xué)生。
這樣很貼近自然語言,也可以被計算機存儲與識別,所以是一種很常用的知識表示方法。
一個描述邏輯系統(tǒng)由四個基本部分組成:
- 最基本的元素:概念、關(guān)系、個體
- TBox術(shù)語集:概念術(shù)語的公理集合
- Abox斷言集:個體的斷言集合
- TBox 和 ABox上的推理機制
概念即解釋為一個領(lǐng)域的子集;關(guān)系解釋為該領(lǐng)域上的二元關(guān)系,如<x,y>|朋友(x,y);個體解釋為一個領(lǐng)域內(nèi)的實例。
TBox為術(shù)語集,它是泛化的知識,是描述概念和關(guān)系的知識,被稱之為公理。
ABox是斷言集,指具體個體的信息,ABox 語言包含概念斷言和關(guān)系斷言,概念斷言即表示一個對象是否屬于某個概念,關(guān)系斷言表示兩個對象是否滿足特定的關(guān)系。
描述邏輯的各種算子,對應(yīng)到owl語言中就是各種詞匯,如算子?對應(yīng)subClassof;描述邏輯依據(jù)提供的構(gòu)造算子,在簡單的概念和關(guān)系上構(gòu)造出復(fù)雜的概念和關(guān)系。
基于本體推理的方法常見的有基于 Tableaux 運算的方法、基于邏輯編程改寫的方法、基于一階查詢重寫的方法、基于產(chǎn)生式規(guī)則的方法等。
歸納推理是一種自下而上的推理,是指基于已有的部分觀察得出一般結(jié)論的過程,典型的歸納推理有歸納泛化(指基于對個體的觀察而得出可能適用于整體的結(jié)論)、統(tǒng)計推理(將整體的統(tǒng)計結(jié)論應(yīng)用于個體)。
基于歸納的知識圖譜推理主要是通過對知識圖譜已有信息的分析和挖掘進行推理的,最常用的信息為已有的三元組。
按照推理要素的不同,基于歸納的知識圖譜推理可以分為以下幾類:基于圖結(jié)構(gòu)的推理、基于規(guī)則學(xué)習(xí)的推理和基于表示學(xué)習(xí)的推理。
九、知識檢索與知識分析
經(jīng)歷了知識建模與表示、知識抽取、知識圖譜融合、知識圖譜計算與推理之后,知識圖譜已經(jīng)是相對完善的數(shù)據(jù)庫了,可以在其基礎(chǔ)上創(chuàng)造應(yīng)用,服務(wù)具體的場景。
在知識圖譜的應(yīng)用階段已經(jīng)簡要說明了通用領(lǐng)域知識圖譜和專用領(lǐng)域知識圖譜的應(yīng)用,這里只聚焦其中三項技術(shù):搜素、問答系統(tǒng)、推薦系統(tǒng)。
1. 搜索
知識圖譜依托龐大的數(shù)據(jù)和關(guān)系對,可以對搜索進行增強,不但針對搜索詞展示出最接近的信息,還把相關(guān)的選項也展示出來,提高了查準率和查全率,另外可以通過圖譜化的展現(xiàn)和互動讓用戶更加方便的了解信息。
具體來說,是通過語義搜索、關(guān)系搜索和結(jié)構(gòu)化展現(xiàn)實現(xiàn)的。
萬維網(wǎng)之父Tim Berners-Lee是這樣定義語義搜索的:
“語義搜索的本質(zhì)是通過數(shù)學(xué)來拜托當今搜索中使用的猜測和近似,并為詞語的含義以及它們?nèi)绾侮P(guān)聯(lián)到我們在搜索引擎輸入框中所找的東西引進一種清晰的理解方式”。
具體來說,首先將用戶輸入的問句進行解析,找出問句中的實體和關(guān)系,理解用戶問句的含義,然后在知識圖譜中匹配查詢語句,找出答案,最后通過一定的形式將結(jié)果呈現(xiàn)到用戶面前。
知識圖譜本身是一個具有屬性的實體通過關(guān)系鏈接而成的網(wǎng)狀知識庫,同時知識圖譜本身可以和網(wǎng)頁上的內(nèi)容建立概念間的聯(lián)系,將網(wǎng)絡(luò)上的信息、數(shù)據(jù)、資源關(guān)聯(lián)為語義知識,也就是實現(xiàn)了 WEB 從網(wǎng)頁鏈接向概念鏈接的轉(zhuǎn)變。
同時,相對于原來的按字符串模糊匹配的模式而言,語義搜索對用戶的問句進行分析,找到實體和關(guān)系,通過NLP和知識推理理解用戶的問句,并在知識圖譜中盡可能多的找到相關(guān)信息,對回答進行相關(guān)度排序,實現(xiàn)了用戶的按主題檢索而不是傳統(tǒng)的按字符串檢索。
一個語義搜索系統(tǒng)的基本框架包括查詢構(gòu)建、查詢處理、結(jié)果展示、查詢優(yōu)化、語義模型、資源及文檔等。
具體的應(yīng)用中,如搜索“混凝土”,不僅搜索混凝土,還會找到其在知識圖譜中的上位詞,下位詞,同義詞等詞集合,比如砼(同義詞)、輕質(zhì)混凝土(下位詞)等等。
返回的檢索結(jié)果中也會包含這些信息,從而提高了查全率,如果用戶檢索的本意是查找混凝土中的一個子類,那么實際上還提高了查準率。
再比如搜索“同方集團股價”,會以大寫的形式展示實時股價,而不是返回一個網(wǎng)頁,這就是從文本中檢索答案。另外還可以以圖譜化的形式展現(xiàn),將在可視化部分有限展開。
關(guān)系搜索和結(jié)構(gòu)化展示其實屬于知識推理、知識統(tǒng)計與圖計算部分,在用NLP技術(shù)理解了用戶的實體和關(guān)系要求后,就可以找到兩個或多個對應(yīng)的實體,直接在圖譜中查詢其互相關(guān)系,或者通過知識推理得出其相互關(guān)系。
或者是明確了某一實體,找到與其有對應(yīng)關(guān)系的其他實體,比如找到與“混凝土”有“組成”關(guān)系的實體,并將其以圖譜或表格的形式展示出來,即為結(jié)構(gòu)化表示。
2. 問答系統(tǒng)
知識問答是用自然語言的方式與機器進行交互并得到答案,是知識圖譜的重要應(yīng)用。
問答是一種典型的智能行為,圖靈測試就是看機器能否做到人一樣的問答效果。
問答系統(tǒng)不但要求系統(tǒng)本身能夠理解提問者的語義,還要求根據(jù)知識圖譜進行知識搜索或知識推理以形成答案。
可以說問答系統(tǒng)是信息檢索系統(tǒng)的一種高級形式,因為問答系統(tǒng)中同樣有查詢式理解和知識檢索這兩個重要過程,且與智能搜索中相應(yīng)過程中的相關(guān)細節(jié)是一致的。
多數(shù)問答系統(tǒng)更傾向于將給定的問題分解為多個小的問題,然后逐一去知識庫中抽取匹配的答案,并自動檢測其在時間與空間上的吻合度等,最后將答案進行合并,以直觀的方式展現(xiàn)給用戶。
一個問答系統(tǒng)應(yīng)具備的四大要素:
(1)問題
是問答系統(tǒng)的輸入,通常以問句的形式出現(xiàn)(問答題),也會采用選擇題、多選題、列舉答案題和填空題等形式。
(2)答案
是問答系統(tǒng)的輸出,除了文本表示的答案(問答題或填空題),有時也需要輸出一組答案(列舉問答題)、候選答案的選擇(選擇題)、甚至是多媒體信息。
(3)智能體
是問答系統(tǒng)的執(zhí)行者,需要理解問題的語義,掌握并使用知識庫解答問題,并最終生成人可讀的答案;
(4)知識庫
存儲了問答系統(tǒng)的知識,其形態(tài)可以是文本、數(shù)據(jù)庫或知識圖譜。
也有工作將知識庫編碼到計算模型中,例如邏輯規(guī)則、機器學(xué)習(xí)模型和深度學(xué)習(xí)模型。
智能體利用知識庫實現(xiàn)推理。根據(jù)知識庫表示形式的不同,當前知識問答可以分為傳統(tǒng)問答方法(符號表示)以及基于深度學(xué)習(xí)的問答方法(分布式表示)兩種類型。
傳統(tǒng)問答方法使用的主要技術(shù)包括關(guān)鍵詞檢索、文本蘊涵推理以及邏輯表達式等,深度學(xué)習(xí)方法使用的技術(shù)主要是LSTM、注意力模型與記憶網(wǎng)絡(luò)(Memory Network)。
KBQA(knowledge base question answering,基于知識庫的問答系統(tǒng))采用了相對統(tǒng)一的基于RDF表示的知識圖譜作為存儲基礎(chǔ),并且把語義理解的結(jié)果映射到知識圖譜的本體后生成SPARQL查詢解答問題。
通過本體可以將用戶問題映射到基于概念拓撲圖表示的查詢表達式,也就對應(yīng)了知識圖譜中某種子圖。KBQA的核心問題Question2Query是找到從用戶問題到知識圖譜子圖的最合理映射。
除了KBQA外,問答系統(tǒng)還有 CommunityQA/FAQ-QA(基于問答對匹配的問答系統(tǒng))、 Hybrid QA Framework(混合問答系統(tǒng)框架)、基于深度學(xué)習(xí)的傳統(tǒng)問答模塊優(yōu)化、基于深度學(xué)習(xí)的端到端問答模型,感興趣的可自行查閱。
圖:問答系統(tǒng)
如果考慮在實際產(chǎn)品中涉及一個對話系統(tǒng),通常需要考慮六大部分:
- [ 語音識別ASR ] 將原始的語音信號轉(zhuǎn)換為文本信息;
- [ 自然語言理解NLU ] 將識別出來的文本信息轉(zhuǎn)換為機器可以理解的語義查詢;
- [ 對話管理DM ] 根據(jù)NLU模塊輸出的語義表示執(zhí)行對話狀態(tài)的跟蹤,并根據(jù)一定的策略選擇相應(yīng)的候選動作。包括對話狀態(tài)跟蹤DST和候選動作選擇Pollcy兩部分;
- [ 自然語言生成NLG ] 負責(zé)生成需要回復(fù)給用戶的自然語言文本;
- [ 語音合成TTS ] 將自然語言文本轉(zhuǎn)換成語音輸出給用戶;
- [ 知識Knowledge ] 對話任務(wù)的完成離不開知識,不論是任務(wù)型中的意圖及參數(shù),問題型中的知識庫,還是閑聊中的語料都屬于知識(但是知識并不一定只有這三類)。對話系統(tǒng)結(jié)合知識后,能夠形成完善的對話交互框架。
基于知識圖譜的問答,是通過語義分析和答案排序完成的,即先將問題轉(zhuǎn)化為知識圖譜查詢表達式,再通過檢索和推理得到問題的候選答案集合,然后通過對不同候選答案實體進行打分,依據(jù)分數(shù)排序,選出最優(yōu)答案。
3. 推薦系統(tǒng)
推薦系統(tǒng)是我們每天都能接觸到的系統(tǒng),如淘寶的千人千面,網(wǎng)易云音樂的個性化歌單,目前的個性化推薦算法中應(yīng)用最廣的是協(xié)同過濾算法。
協(xié)同過濾分為協(xié)同和過濾兩個步驟,協(xié)同就是利用群體的行為來做推薦決策,而過濾就是從可行的推薦方案中將用戶最喜歡的方案找出來。
通過群體的協(xié)同和每個用戶是否喜歡推薦的反饋不斷迭代,最終的推薦會越來越準確。
當前協(xié)同過濾算法主要包括基于用戶的協(xié)同過濾和基于物品的協(xié)同過濾,其核心是怎么計算標的物之間的相似度以及用戶之間的相似度。
將與當前用戶最相似的用戶喜歡的標的物推薦給該用戶,這就是基于用戶的協(xié)同過濾的核心思想;將用戶操作過的標的物最相似的標的物推薦給用戶,這就是基于標的物的協(xié)同過濾的核心思想。
推薦的過程可以簡單理解為三個步驟:召回、過濾、排序。
- 首先系統(tǒng)根據(jù)獲取到的信息,召回適合推薦內(nèi)容,獲取的信息可以是用戶的搜索記錄、購買記錄、評論等。
- 召回的內(nèi)容中有的是這個用戶不關(guān)注的,需要根據(jù)過濾的條件,將不需要的內(nèi)容進行過濾。
- 經(jīng)過過濾產(chǎn)生的推薦集還需要根據(jù)內(nèi)容的相關(guān)度進行排序,最后系統(tǒng)根據(jù)相關(guān)度的排序,將內(nèi)容分配到對應(yīng)的模塊,這樣用戶就能看到自己感興趣的內(nèi)容了。
基于協(xié)同過濾的推薦系統(tǒng),主要有以下問題:
(1) 數(shù)據(jù)稀疏/長尾/噪音問題
用于協(xié)同過濾計算的用戶行為矩陣(用戶和其對應(yīng)有交互(如購買,點贊,收藏等)的物品矩陣),必然是一個稀疏矩陣,用較小范圍的數(shù)據(jù)推測較大范圍的數(shù)據(jù),會存在預(yù)測不準確的問題。
(2) 冷啟動問題
對于新加入的用戶或者物品,系統(tǒng)沒有其歷史交互信息,很難對其進行準確建模和推薦,相對應(yīng)的推薦準確率和多樣性也會大打折扣。
(3)可解釋性
協(xié)同過濾算法側(cè)重輸入和輸出,與神經(jīng)網(wǎng)絡(luò)模型一樣類似于一個黑盒,計算模型提煉出的有效特征是什么很難說明,即決策的依據(jù)模糊,缺乏可解釋性。
知識圖譜可以針對這些問題進行改善,知識圖譜可以用來表示實體之間的關(guān)系,如推薦系統(tǒng)中物品與物品、用戶與物品、用戶與用戶之間的關(guān)系。
這些關(guān)系信息可以表示用戶偏好與物品相似度等信息,將這些信息引入推薦系統(tǒng)中可以顯著緩解推薦系統(tǒng)面臨的冷啟動與數(shù)據(jù)稀疏問題。
以阿里巴巴電商知識圖譜為例,該知識圖譜以商品為核心,以人、貨、場為主要框架,共涉及9大類一級本體和27大類二級本體。一級本體分別為人、貨、場、百科知識、行業(yè)競爭對手、品質(zhì)、類目、資質(zhì)和輿情。
人、貨、場構(gòu)成了商品信息流通的閉環(huán),其他本體主要給予商品更豐富的信息描述。
阿里巴巴電商知識圖譜的數(shù)據(jù)來源包含國內(nèi)-國外數(shù)據(jù)、商業(yè)-國家數(shù)據(jù)、線上-線下等多源數(shù)據(jù)。目前有百億級的節(jié)點和百億級的關(guān)系邊;主要靠機器維護,人工輔助。
有了這樣規(guī)模龐大的知識圖譜,可以對個性化推薦進行改進。
知識圖譜可以增加更多的特征,提供了實體與實體之間更深層次、更長范圍的關(guān)聯(lián),比如根據(jù)用戶喜歡的物品進行推薦,有了知識圖譜后,可以拓展該產(chǎn)品的更多屬性,并且找到更多與其在屬性上有關(guān)聯(lián)的商品進行推薦。
同時,知識圖譜還提供了與推薦實體的各種關(guān)聯(lián)實體集合,可以通過語義來推薦相近的物品,比如買了羊肉卷推薦其關(guān)聯(lián)商品火鍋底料,或者買了手機推薦其圖譜中的下位實體,如手機貼膜,耳機等。
最后,知識圖譜是實體和關(guān)系的集合,且具有知識推理功能,因此推薦物品的可解釋性也更好。
十、后記
知識圖譜是一門比較復(fù)雜且發(fā)展中的科學(xué),目前還有很多不完善和不成熟的地方,每一個步驟也有太多的方法和外延,涉及到語義,邏輯,自然語言處理,機器學(xué)習(xí)、深度學(xué)習(xí)和圖算法,整體是艱深并不是容易掌握的。
之前看了幾本書,也聽了幾門課,看了不少技術(shù)帖,但腦子里還是迷迷糊糊,沒有一個整體的框架。
寫這篇文章的過程,也是一個不斷查漏補缺,邏輯自洽的過程,寫這篇文章就像完成了一篇綜述,現(xiàn)在我對于整體的流程以及一些基礎(chǔ)的概念有了更多的理解,輸出倒逼輸入,確實有道理。
然而對于產(chǎn)品經(jīng)理來說,了解技術(shù)的底層和概況是為了更好的設(shè)計產(chǎn)品,我們更應(yīng)該關(guān)注的是設(shè)計產(chǎn)品的目的是什么,面向的用戶是哪些,能夠提供怎樣的價值和解決什么問題,產(chǎn)品的交互與易用性如何等等問題。
了解技術(shù)只是為了知道產(chǎn)品設(shè)計的邊界在哪里,以及實現(xiàn)某些功能的路徑和成本,一切還是為了產(chǎn)品。
雖然還未成熟,但知識圖譜已經(jīng)展示出巨大的價值,各種各樣的應(yīng)用也在不斷落地。
相信在不遠的將來,以知識圖譜為基礎(chǔ)的人工智能會更大范圍、更深程度的改變世界。
作者:鐘志偉,中國知網(wǎng)產(chǎn)品經(jīng)理
本文由 @鐘同學(xué) 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自 Pexels,基于CC0協(xié)議。

真了不起,很少看到這么深入又完整詳實的對知識圖譜介紹的文章
竟然發(fā)現(xiàn)了同事~
認識一下嘍
一直在用“水泥”和“混凝土”舉例子,暴露了土木行業(yè),哈哈哈。
土木狗相見了哈哈哈
本文關(guān)于知識圖譜的介紹及構(gòu)建很全面,希望作者持續(xù)產(chǎn)出。
先收藏了,慢慢閱讀。
感謝支持
“要想實現(xiàn)人工智能,首先要做的就是讓人和機器建立起對這個世界的統(tǒng)一認識”,然后世界上很多事在人與人之間都不能形成統(tǒng)一認識,你認為要這樣,他認為要那樣,機器要怎樣呢?結(jié)果就是機器只會表現(xiàn)出制造機器那部分人的意志。
這里我的理解是一些公認的知識,比如物理定律等等。確實沒有辦法統(tǒng)一人們的認識,共識十分寶貴的。而且很多新的科技或者制度,文化,都會受到創(chuàng)造者主觀意識的一定影響的。總會有一部分先行者開創(chuàng)某些東西,然后是越來越多的人參與共建。但就像是比特幣系統(tǒng)中超過50%算力的群體才可以決定共識一樣,只要你相信這個世界中大部分人是好的,就無需對新技術(shù)過分擔(dān)憂。