產(chǎn)品經(jīng)理的知識(shí)圖譜入門(mén)實(shí)操
知識(shí)圖譜概述知識(shí)圖譜的構(gòu)建,用戶可以使用自然語(yǔ)言來(lái)查詢相關(guān)的信息,更加符合人的思維方式,從而更快速的幫助用戶找到所需的信息。目前除了搜索引擎之外,知識(shí)圖譜還廣泛應(yīng)用于社交、金融、教育、醫(yī)療等多個(gè)領(lǐng)域。接下來(lái),我們分別詳細(xì)介紹一下知識(shí)圖譜的技術(shù)要點(diǎn)。
1. 知識(shí)圖譜概述
1.1 什么是知識(shí)圖譜
人工智能的終極目標(biāo),是讓計(jì)算機(jī)可以使用人類思考問(wèn)題的方式來(lái)解決問(wèn)題,達(dá)到智能化從而解放人類的腦力,讓人們的生活更加便捷,更加有效率。雖然自90年代以來(lái)互聯(lián)網(wǎng)技術(shù)已經(jīng)蓬勃發(fā)展了30年,但是計(jì)算機(jī)的能力還遠(yuǎn)遠(yuǎn)達(dá)不到人們期望的智能化水平,根本的原因在于目前計(jì)算機(jī)對(duì)于數(shù)據(jù)的存儲(chǔ)和使用方式,與人腦思考問(wèn)題的方式還有著本質(zhì)上的區(qū)別。
目前以網(wǎng)頁(yè)為主要載體的互聯(lián)網(wǎng)信息,都是以字符串、數(shù)組等半結(jié)構(gòu)化的數(shù)據(jù)類型組合而成的超文本鏈接。對(duì)于計(jì)算機(jī)而言,任何一個(gè)以文字來(lái)表示的信息都是0和1組成的二進(jìn)制字符串,其中的差異只是文本存儲(chǔ)空間所占大小的不同,文字所表示的語(yǔ)義信息并不能被計(jì)算機(jī)所理解。
而人卻可以從不同的文字中解讀不同的信息,這是因?yàn)槿丝梢岳斫獠煌奈淖炙复牟煌x,并且可以根據(jù)一些規(guī)則,對(duì)文字之間的關(guān)系進(jìn)行推理。
舉個(gè)簡(jiǎn)單的例子來(lái)說(shuō),當(dāng)看到“他兒子今年出生了”這段文字時(shí),我們可以推斷出文中的“他”應(yīng)該有個(gè)妻子,也就是“兒子”的母親,并且兒子的年齡是現(xiàn)在是0歲。雖然文字中并沒(méi)有明確的表達(dá)這些信息,但可以根據(jù)常識(shí)推斷出這些信息,這些常識(shí)或者規(guī)則我們稱之為“知識(shí)”。
那么,有沒(méi)有可能讓計(jì)算機(jī)可以理解這些文字所代表的真實(shí)含義,做到像人一樣通過(guò)知識(shí)對(duì)這些信息進(jìn)行理解和推理呢?
萬(wàn)維網(wǎng)之父蒂姆·伯納斯·李(Tim Berners-Lee)曾說(shuō)過(guò):“我有兩個(gè)夢(mèng)想:第一個(gè)是連接世界上的每個(gè)人,現(xiàn)在這個(gè)夢(mèng)想已經(jīng)通過(guò)互聯(lián)網(wǎng)實(shí)現(xiàn)了,第二個(gè)夢(mèng)想是連接世界上的每個(gè)事物,這個(gè)光榮的使命交給了語(yǔ)義網(wǎng)。”
時(shí)至今日,這項(xiàng)技術(shù)已經(jīng)經(jīng)歷了語(yǔ)義網(wǎng)絡(luò)、本體論、語(yǔ)義網(wǎng)、鏈接數(shù)據(jù)、知識(shí)圖譜幾個(gè)階段。
在2012年,谷歌首次將知識(shí)圖譜技術(shù)應(yīng)用在搜索引擎中,以提升搜索的能力。在過(guò)去沒(méi)有使用知識(shí)圖譜技術(shù)時(shí),用戶搜索某些信息,搜索引擎會(huì)將搜索的關(guān)鍵詞與網(wǎng)站的文本做匹配,根據(jù)匹配度來(lái)展示對(duì)應(yīng)的網(wǎng)頁(yè)信息,所以如果用戶想知道一個(gè)問(wèn)題的答案,但卻不知道答案的關(guān)鍵詞應(yīng)該搜什么的時(shí)候,往往會(huì)搜不到自己想要的結(jié)果。
但引入知識(shí)圖譜之后,引擎會(huì)根據(jù)知識(shí)圖譜來(lái)展示相關(guān)信息,用戶可以使用自然語(yǔ)言來(lái)進(jìn)行搜索,搜索引擎分析用戶的問(wèn)題之后根據(jù)知識(shí)圖譜來(lái)查詢對(duì)應(yīng)的結(jié)果,自此正式開(kāi)始了知識(shí)圖譜在產(chǎn)品中的應(yīng)用。
現(xiàn)在各大搜索引擎也都會(huì)根據(jù)知識(shí)圖譜來(lái)展示搜索的內(nèi)容,例如在百度中搜索“中國(guó)的首都”,搜索的結(jié)果會(huì)直接顯示“北京市”相關(guān)的百度百科信息,如圖所示。
通過(guò)知識(shí)圖譜的構(gòu)建,用戶可以使用自然語(yǔ)言來(lái)查詢相關(guān)的信息,更加符合人的思維方式,從而更快速的幫助用戶找到所需的信息。目前除了搜索引擎之外,知識(shí)圖譜還廣泛應(yīng)用于社交、金融、教育、醫(yī)療等多個(gè)領(lǐng)域。接下來(lái),我們分別詳細(xì)介紹一下知識(shí)圖譜的技術(shù)要點(diǎn)。
1.2 對(duì)象、實(shí)例與RDF知識(shí)表示
首先,我們需要了解一下如何描述一個(gè)“知識(shí)”。在之前的章節(jié),我們提到過(guò)數(shù)據(jù)分為三種類型,分別是名義數(shù)據(jù)、登記數(shù)據(jù)和連續(xù)數(shù)據(jù)。但是日常生活中不是所有的事物都可以用這三個(gè)數(shù)據(jù)類型來(lái)被描述,比如一個(gè)人、一張圖片、一段視頻,這些東西應(yīng)該怎么描述呢?這里要用到面向?qū)ο蟮母拍睢?/p>
什么是對(duì)象呢?我們剛說(shuō)的一個(gè)人、一張照片、一段視頻,都可以稱之為一個(gè)對(duì)象,對(duì)象中包含了各種各樣的屬性,例如人有名字,年齡,身高這些屬性,每個(gè)人都會(huì)有這些屬性,但屬性的值可能不一樣,當(dāng)我們把屬性的值具象化之后,就可以定義到一個(gè)具體的人,例如張三,那么張三就稱之為人這個(gè)對(duì)象的實(shí)例。
如圖所示:
對(duì)于對(duì)象而言,如果互相之間存在包含關(guān)系,則稱之為父類對(duì)象和子類對(duì)象。例如把人作為一個(gè)對(duì)象,這個(gè)對(duì)象其實(shí)可以進(jìn)一步細(xì)分為男人和女人,那么人就是男人的父類對(duì)象,男人是人的子類對(duì)象,張三則是男人這個(gè)子類對(duì)象的實(shí)例。如圖所示:
了解了對(duì)象、類與實(shí)例之間的關(guān)系之后,我們就可以進(jìn)入到知識(shí)圖譜的正題——知識(shí)表示了。根據(jù)Web技術(shù)領(lǐng)域權(quán)威標(biāo)準(zhǔn)機(jī)構(gòu)W3C指定的知識(shí)圖譜描述標(biāo)準(zhǔn),所有的知識(shí)應(yīng)該用資源描述框架(Resource Description Framework,RDF)進(jìn)行描述,并對(duì)其他與知識(shí)圖譜相關(guān)的技術(shù)進(jìn)行了定義,如圖所示:
RDF中的R表示頁(yè)面、圖片、視頻等任何具有統(tǒng)一資源標(biāo)識(shí)符(Uniform Resource Identifier,URI)的資源,D表示屬性,即特征和資源之間的關(guān)系,F(xiàn)表示模型以及描述的語(yǔ)法。簡(jiǎn)單來(lái)說(shuō),每一條RDF知識(shí)表述都可以以一個(gè)主謂賓的語(yǔ)句形式出現(xiàn),例如{中國(guó),首都是,北京},其中“中國(guó)”“北京”是兩個(gè)實(shí)體,而“首都是”則表示兩個(gè)實(shí)體之間的關(guān)系。
在RDF中總是兩個(gè)實(shí)體,以及兩個(gè)實(shí)體之間的關(guān)系三者構(gòu)成,所以RDF又簡(jiǎn)稱三元組,如圖所示:
需要注意的是,每個(gè)RDF的實(shí)體都要有一個(gè)唯一的URI進(jìn)行標(biāo)識(shí),但RDF也是允許空白節(jié)點(diǎn)存在的,同時(shí)實(shí)體資源也可以允許匿名資源的存在,即不標(biāo)識(shí)具體的資源,只標(biāo)識(shí)資源的類型,作為連接別的實(shí)體的橋梁。
雖然RDF是知識(shí)圖譜的基石,但其本身對(duì)于事物的描述能力非常有限,根據(jù)RDF的定義我們可以發(fā)現(xiàn),組成RDF的三元組中,兩個(gè)實(shí)體都具有唯一標(biāo)識(shí),因此缺乏泛化抽象的能力,無(wú)法對(duì)同一個(gè)類別的事物進(jìn)行定義和描述。舉個(gè)例子來(lái)說(shuō),我們可以通過(guò)RDF來(lái)描述中國(guó)的首都是北京,但如果希望歸納出所有國(guó)家與首都之間的關(guān)系以及他們的屬性,僅僅用一條實(shí)例的RDF是無(wú)法實(shí)現(xiàn)的。
知識(shí)的泛化能力對(duì)于知識(shí)圖譜實(shí)現(xiàn)智能化而言非常重要,只有具備歸納出抽象知識(shí)的能力,才能覆蓋更廣泛的知識(shí)。那么要如何做才能解決RDF的這個(gè)問(wèn)題呢?
我們?cè)谥爸v解了父類、子類與實(shí)例之間的關(guān)系,對(duì)于RDF而言也可以通過(guò)類似的結(jié)構(gòu)來(lái)對(duì)知識(shí)進(jìn)行泛化的描述,這就是我們接下來(lái)要講到的本體語(yǔ)言——RDFS和OWL。
1.3 RDFS與OWL本體語(yǔ)言
RDFS是最基礎(chǔ)的本體語(yǔ)言,其中的S表示Schema,可以表示某些實(shí)例的抽象屬性。具體而言,包括的核心詞匯如表所示:
舉例來(lái)說(shuō),我們可以通過(guò)<rdfs:subClassOf>來(lái)表示父類與子類之間從屬的關(guān)系。如圖所示,中國(guó)是國(guó)家這個(gè)類的實(shí)例,北京是城市這個(gè)類的實(shí)例,而城市和國(guó)家又都是地區(qū)這個(gè)父類的子類,通過(guò)RDFS可以清晰的劃分出類與實(shí)例之間的層次關(guān)系,并通過(guò)類之間的關(guān)系連接來(lái)推理出更多的知識(shí)。
在本例中我們可以推斷一個(gè)國(guó)家的首都是某一個(gè)城市這樣的知識(shí),這樣就可以泛化的涵蓋所有國(guó)家與首都城市之間的關(guān)系連接,這種對(duì)于知識(shí)的泛化在語(yǔ)音智能問(wèn)答產(chǎn)品中是非常重要的技術(shù),我們會(huì)在后續(xù)的文章中對(duì)智能問(wèn)答產(chǎn)品做詳細(xì)講解。
雖然通過(guò)RDFS可以表示一些簡(jiǎn)單的語(yǔ)義,但在更復(fù)雜的場(chǎng)景下,RDFS語(yǔ)義表達(dá)能力顯得太弱,在表達(dá)知識(shí)的能力上依然存在缺陷,缺少諸多常用的特征。
例如對(duì)于局部值域的屬性定義:RDFS中通過(guò)rdfs:range定義了屬性的值域,該值域是全局性的,但無(wú)法表示該屬性應(yīng)用于某些具體的類時(shí)具有的特殊值域限制;無(wú)法表示多個(gè)類、實(shí)例和屬性之間是等價(jià)還是不等價(jià);無(wú)法表示多個(gè)類之間是相交關(guān)系還是互斥關(guān)系;無(wú)法對(duì)某些屬性值的取值范圍進(jìn)行約束;無(wú)法表示某些屬性具有傳遞性、函數(shù)性等特性等。
因?yàn)镽DFS無(wú)法很好的滿足知識(shí)的表示需求,W3C在2002年發(fā)布了OWL本體語(yǔ)言(OWL,Web Ontology Language)作為RDFS的擴(kuò)展,并將其作為語(yǔ)義網(wǎng)中表示本體的推薦語(yǔ)言,目前OWL已經(jīng)迭代至OWL2版本,最初的OWL又稱之為OWL1。
相較于RDFS,OWL擴(kuò)充了非常多的描述屬性,彌補(bǔ)了RDFS的不足之處,例如增加了等價(jià)性聲明、傳遞關(guān)系聲明、對(duì)稱性、數(shù)值約束等。以下為主要的核心描述詞匯:
除了以上列舉的幾種之外,OWL還有非常多的屬性描述詞匯,在構(gòu)建知識(shí)圖譜時(shí)需要了解這些屬性詞匯,并具備相關(guān)領(lǐng)域的專業(yè)知識(shí)才能正確的描述出知識(shí)的特征,如果需要了解更多的OWL相關(guān)描述,可以通過(guò)W3C的官方文檔查看。
2. 知識(shí)圖譜構(gòu)建流程
2.1 知識(shí)建模
知識(shí)圖譜從覆蓋的知識(shí)面來(lái)分,可以分為通用知識(shí)圖譜(General-purpose Knowledge Graph,GKG)和行業(yè)知識(shí)圖譜(Domain-specific Knowledge Graph,DKG)兩種類型,行業(yè)知識(shí)圖譜因使用的場(chǎng)景是面相特定的領(lǐng)域,故又稱領(lǐng)域知識(shí)圖譜。雖然他們都是知識(shí)圖譜,但在知識(shí)表示、知識(shí)獲取和知識(shí)應(yīng)用層面來(lái)看,兩者又有很大的區(qū)別,如表所示。
第一是從知識(shí)廣度來(lái)看,通用知識(shí)圖譜覆蓋的知識(shí)面較寬,主要涵蓋的是日常生活中的常識(shí)性問(wèn)題,例如Google搜索引擎的知識(shí)圖譜就是面相全領(lǐng)域的通用知識(shí)圖譜,在2012年發(fā)布時(shí)就包含了5億多個(gè)的實(shí)體,10億多條的關(guān)系,中文的典型通用知識(shí)圖譜有復(fù)旦大學(xué)知識(shí)工場(chǎng)實(shí)驗(yàn)室研發(fā)并維護(hù)的大規(guī)模通用領(lǐng)域中文百科知識(shí)圖譜(CN-Dbpedia),該項(xiàng)目包含900多萬(wàn)的實(shí)體信息以及6700多萬(wàn)的三元組關(guān)系,已在問(wèn)答機(jī)器人、智能玩具、智慧醫(yī)療、智慧軟件等領(lǐng)域產(chǎn)生了3.5億次API調(diào)用量。
行業(yè)知識(shí)圖譜的廣度通常較窄,一般只涵蓋某一個(gè)專業(yè)領(lǐng)域的相關(guān)知識(shí),目前除搜索引擎和語(yǔ)音助手使用的知識(shí)圖譜外,大多數(shù)的知識(shí)圖譜項(xiàng)目都是行業(yè)知識(shí)圖譜。典型的應(yīng)用例如美國(guó)帕蘭提爾(Palantir)公司的政務(wù)領(lǐng)域知識(shí)圖譜, GeoNames的全球地理知識(shí)圖譜(該數(shù)據(jù)庫(kù)包含了近200種語(yǔ)言的1100萬(wàn)個(gè)地名和200萬(wàn)種別名),以及國(guó)內(nèi)包含了中醫(yī)養(yǎng)生、中醫(yī)美容等內(nèi)容的中醫(yī)藥知識(shí)服務(wù)系統(tǒng)(TCM knowledge service system)等,如圖所示。
第二是從知識(shí)深度來(lái)看,通用知識(shí)圖譜的層級(jí)體系一般較淺,對(duì)于知識(shí)的泛化而言通常沒(méi)有太多的歸納,這與通用知識(shí)圖譜獲取知識(shí)的方式有關(guān),也跟通用知識(shí)圖譜的使用場(chǎng)景有關(guān),對(duì)于通用知識(shí)圖譜而言多數(shù)的使用場(chǎng)景都是基于某個(gè)具體的實(shí)體。而行業(yè)知識(shí)圖譜的層級(jí)體系一般較深,例如在電商領(lǐng)域的商品分類中,關(guān)于服裝的分類就不僅僅只是上衣和下裝這么簡(jiǎn)單,各種風(fēng)格、時(shí)尚元素、款式、材質(zhì)都有可能構(gòu)成不同的類。
第三是從知識(shí)顆粒度來(lái)看,通用知識(shí)圖譜的顆粒度一般比較粗,而行業(yè)知識(shí)圖譜一般顆粒度較細(xì)。在通用知識(shí)圖譜中,組成知識(shí)的基本單元一般是一個(gè)完整的文檔或者資源,例如一篇文章,一首歌,一個(gè)視頻等。但是對(duì)于行業(yè)知識(shí)圖譜而言,需要的顆粒度根據(jù)業(yè)務(wù)的不同要?jiǎng)澐譃楦?xì)的顆粒度,以教育領(lǐng)域的知識(shí)圖譜為例,一個(gè)數(shù)學(xué)公式、一篇語(yǔ)文課文中的一句話、一個(gè)英文單詞都有可能構(gòu)成獨(dú)立的知識(shí)實(shí)體,才能滿足學(xué)生對(duì)于個(gè)性化學(xué)習(xí)的需求。
正因?yàn)橥ㄓ弥R(shí)圖譜和行業(yè)知識(shí)圖譜的應(yīng)用場(chǎng)景有很大的不同,讓這兩種知識(shí)圖譜的知識(shí)獲取方式有著顯著的區(qū)別,對(duì)于知識(shí)獲取方式而言可以根據(jù)人工參與度的不同劃分為自頂向下和自底向上兩種方法。
具體來(lái)說(shuō),行業(yè)知識(shí)圖譜大多采用自頂向下的知識(shí)獲取方法,這種方法是通過(guò)領(lǐng)域?qū)<沂止⒅R(shí)進(jìn)行整理和歸納,編輯為知識(shí)圖譜的數(shù)據(jù)結(jié)構(gòu)。
該方法的優(yōu)點(diǎn)在于可以滿足產(chǎn)品對(duì)于知識(shí)專業(yè)性的及權(quán)威性的要求,例如醫(yī)療領(lǐng)域的知識(shí)圖譜對(duì)于知識(shí)的專業(yè)性就有著嚴(yán)格的要求,必須由具備相關(guān)能力的專家來(lái)進(jìn)行編輯。同時(shí),手工編輯也可以將知識(shí)圖譜設(shè)計(jì)的概念和范圍限定在可控的范圍內(nèi)。
例如“古龍”這個(gè)實(shí)體如果是在文學(xué)知識(shí)圖譜上,代表的是一個(gè)作家,但如果放在美妝知識(shí)圖譜中,代表的則是一款香水,如果不對(duì)知識(shí)圖譜的應(yīng)用范圍進(jìn)行限定則很有可能出現(xiàn)歧義。
專家參與編輯讓行業(yè)知識(shí)圖譜具有相對(duì)較高的準(zhǔn)確性,但同時(shí)也帶來(lái)了很多的弊端,首先是高昂的人力成本,通常編輯一個(gè)知識(shí)圖譜需要成立一個(gè)專家團(tuán)隊(duì),團(tuán)隊(duì)中的成員需要同時(shí)具備領(lǐng)域知識(shí)以及計(jì)算機(jī)知識(shí),人力市場(chǎng)上能滿足條件的人非常稀少,人工成本居高不下。
根據(jù)相關(guān)資料,Google編輯一條RDF三元組的人工成本平均需要0.8美金。如何能做到項(xiàng)目兼顧成本與效果是每個(gè)做知識(shí)圖譜的產(chǎn)品經(jīng)理要思考的問(wèn)題。
另外一個(gè)不足之處是行業(yè)知識(shí)圖譜可能有多個(gè)數(shù)據(jù)編輯者或數(shù)據(jù)來(lái)源,導(dǎo)致數(shù)據(jù)的格式不統(tǒng)一,這種數(shù)據(jù)術(shù)語(yǔ)稱之為多源異構(gòu)數(shù)據(jù),如何制訂相關(guān)的規(guī)則,將不同格式的數(shù)據(jù)轉(zhuǎn)化為統(tǒng)一的格式也是產(chǎn)品經(jīng)理在定義數(shù)據(jù)處理規(guī)則時(shí)需要考慮的問(wèn)題。
通用知識(shí)圖譜多采用自底向上的方法獲取知識(shí),這種方法是基于行業(yè)現(xiàn)有的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)進(jìn)行轉(zhuǎn)換,或從現(xiàn)有的高質(zhì)量數(shù)據(jù)源中提取知識(shí)本體以及本體之間的關(guān)系,主要應(yīng)用于搜索、推薦、問(wèn)答等業(yè)務(wù)場(chǎng)景。
因其強(qiáng)調(diào)知識(shí)的廣度,數(shù)據(jù)主要來(lái)自于互聯(lián)網(wǎng)上的公開(kāi)信息,所以很難生成完整的全局性的本體層進(jìn)行統(tǒng)一的管理。但因?yàn)橹R(shí)獲取的自動(dòng)化程度較高,所以對(duì)于一些新的概念和新的關(guān)系可以很好的涵蓋。
從知識(shí)的應(yīng)用層面來(lái)看,通用知識(shí)圖譜的知識(shí)相對(duì)稀疏,所以知識(shí)推理鏈條較短,通常來(lái)講推理操作都是基于上下文的一到兩步的推理,如果超出這個(gè)很容易出現(xiàn)語(yǔ)義漂移(semantic drift)現(xiàn)象,讓推理的結(jié)果答非所問(wèn),人工智能秒變?nèi)斯ぶ钦?。而行業(yè)知識(shí)圖譜的推理鏈條可以較長(zhǎng),更適合需要進(jìn)行復(fù)雜推理和計(jì)算的場(chǎng)景。
2.2 結(jié)構(gòu)化與半結(jié)構(gòu)化知識(shí)獲取
從不同的來(lái)源、不同結(jié)構(gòu)的數(shù)據(jù)中進(jìn)行知識(shí)提取存入到知識(shí)圖譜,這一過(guò)程我們稱之為知識(shí)獲取。從知識(shí)的來(lái)源大致可以分為三類,分別是結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換、半結(jié)構(gòu)化數(shù)據(jù)提取和非結(jié)構(gòu)化文本數(shù)據(jù)提取。
(1)結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換
語(yǔ)義網(wǎng)的目標(biāo)是建議以RDF為標(biāo)準(zhǔn)數(shù)據(jù)模型的數(shù)據(jù)網(wǎng),但當(dāng)前大多數(shù)Web數(shù)據(jù)源是由關(guān)系型數(shù)據(jù)庫(kù)(RDB)驅(qū)動(dòng)的,因此如何將RDB數(shù)據(jù)集向RDF數(shù)據(jù)集進(jìn)行映射一直是語(yǔ)義網(wǎng)領(lǐng)域的研究熱點(diǎn)。
結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換就是指將關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù),轉(zhuǎn)換為RDF結(jié)構(gòu)知識(shí)圖譜的知識(shí)獲取方式。W3C在2012年專門(mén)為此制定了一個(gè)標(biāo)準(zhǔn)R2RML(Relational database to RDF Mapping Language)。這是一種可以用于表示從關(guān)系型數(shù)據(jù)庫(kù)到RDF數(shù)據(jù)集的自定義映射的語(yǔ)言,通過(guò)這種映射關(guān)系,我們可以將關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù)轉(zhuǎn)換為自定義的知識(shí)圖譜結(jié)構(gòu)。
雖然這種轉(zhuǎn)換并沒(méi)有直接生成真正的RDF數(shù)據(jù)集,僅僅只是在數(shù)據(jù)庫(kù)和知識(shí)圖譜的本體中間做了一重映射關(guān)系,但是通過(guò)表示映射關(guān)系的mapping文件,系統(tǒng)可以將對(duì)RDF三元組的查詢等操作翻譯成對(duì)應(yīng)的SQL語(yǔ)句,快速將企業(yè)過(guò)去積累的數(shù)據(jù)轉(zhuǎn)化為知識(shí)圖譜,這種轉(zhuǎn)化后的數(shù)據(jù)本身以及數(shù)據(jù)之間的關(guān)系都符合業(yè)務(wù)的需要,可以讓產(chǎn)品快速落地進(jìn)行迭代。
(2)半結(jié)構(gòu)化數(shù)據(jù)
半結(jié)構(gòu)化的數(shù)據(jù)是指沒(méi)有按照RDF格式,但是卻有著一定規(guī)律的網(wǎng)絡(luò)數(shù)據(jù),通過(guò)網(wǎng)絡(luò)爬蟲(chóng)爬取完整的網(wǎng)頁(yè)信息之后,再通過(guò)包裝器(wrapper)將其轉(zhuǎn)換成知識(shí)圖譜數(shù)據(jù)。
半結(jié)構(gòu)化的數(shù)據(jù)來(lái)源主要有兩個(gè),一是維基百科、百度百科這類百科網(wǎng)站的信息表格(infobox),另外則是來(lái)源于各類網(wǎng)頁(yè)中的文本、列表數(shù)據(jù),如圖所示。
在百度百科中搜索喬布斯的相關(guān)詞條會(huì)發(fā)現(xiàn)這樣一個(gè)表格,表格中詳細(xì)記錄了喬布斯與其他實(shí)體之間的關(guān)系,與搜索的詞條之間形成了一個(gè)完整的 RDF三元組,例如喬布斯的國(guó)籍是美國(guó)。通過(guò)對(duì)百科網(wǎng)站的infobox進(jìn)行信息抽取,可以快速獲得高質(zhì)量的知識(shí)實(shí)體。但是,通過(guò)infobox只能抽取到實(shí)例層數(shù)據(jù),對(duì)于類層面的關(guān)系還需要通過(guò)別的方式來(lái)進(jìn)行構(gòu)建,例如自頂向下由領(lǐng)域?qū)<覙?gòu)建。
對(duì)于其他的網(wǎng)頁(yè)信息而言,抽取數(shù)據(jù)時(shí)需要過(guò)濾掉網(wǎng)頁(yè)中含有的廣告、外鏈等冗余信息,只保留有實(shí)際需要的知識(shí)信息,這需要根據(jù)網(wǎng)頁(yè)的HTML代碼標(biāo)簽構(gòu)建專用的網(wǎng)頁(yè)包裝器。
如果給每一個(gè)網(wǎng)頁(yè)都開(kāi)發(fā)一個(gè)專門(mén)的包裝器,不僅需要投入大量的開(kāi)發(fā)人力,而且通用性會(huì)比較差,為了解決這個(gè)問(wèn)題,可以先對(duì)需要爬取的網(wǎng)頁(yè)進(jìn)行聚類,針對(duì)聚類來(lái)設(shè)計(jì)包裝器會(huì)大幅提高知識(shí)獲取的速度。
通過(guò)爬蟲(chóng)和包裝器抽取互聯(lián)網(wǎng)的公開(kāi)信息會(huì)面臨一個(gè)問(wèn)題,就是隨著網(wǎng)站的更新迭代,網(wǎng)頁(yè)的信息結(jié)構(gòu)可能會(huì)發(fā)生改變,既是一個(gè)微小的變動(dòng)也可能會(huì)導(dǎo)致原本構(gòu)建的包裝器失效無(wú)法再繼續(xù)工作。對(duì)于這個(gè)問(wèn)題最簡(jiǎn)單的辦法是重新創(chuàng)建一個(gè)新的包裝器以適應(yīng)網(wǎng)站的升級(jí),但是如果爬取的網(wǎng)站數(shù)量非常多,這種做法不但效率很低而且會(huì)給開(kāi)發(fā)人員帶來(lái)很重的工作負(fù)擔(dān)。
為了能維持包裝器的正常工作,我們可以對(duì)需要采集的數(shù)據(jù)進(jìn)行數(shù)據(jù)標(biāo)注,用機(jī)器學(xué)習(xí)的方法對(duì)數(shù)據(jù)的特征進(jìn)行學(xué)習(xí)并構(gòu)建出模型,進(jìn)而在整個(gè)網(wǎng)頁(yè)站點(diǎn)下使用模型自動(dòng)生成新的包裝器進(jìn)行數(shù)據(jù)的抽取。
2.3 非結(jié)構(gòu)化知識(shí)獲取
與整個(gè)互聯(lián)網(wǎng)的數(shù)據(jù)相比,百科類網(wǎng)站的知識(shí)庫(kù)只是滄海一粟,除了網(wǎng)頁(yè)中半結(jié)構(gòu)化的數(shù)據(jù)之外,還存在著海量的無(wú)結(jié)構(gòu)網(wǎng)頁(yè)文本數(shù)據(jù)。如何將這些文本數(shù)據(jù)中的知識(shí)抽取出來(lái)是很多計(jì)算機(jī)科學(xué)家的研究方向。
例如華盛頓大學(xué)Oren Etzioni教授主導(dǎo)的開(kāi)放信息抽取(open information extraction,OpenIE)項(xiàng)目,該項(xiàng)目從1億個(gè)網(wǎng)頁(yè)中抽取了5億條數(shù)據(jù),如圖所示。還有卡耐基梅隆大學(xué)Tom Mitchell教授主導(dǎo)的永不停止的語(yǔ)言學(xué)習(xí)(never ending language learning,NELL)項(xiàng)目,這個(gè)項(xiàng)目從公開(kāi)網(wǎng)頁(yè)中抽取了5千萬(wàn)條數(shù)據(jù)。
(1)實(shí)體抽取
從無(wú)結(jié)構(gòu)的文本中抽取知識(shí),首先需要識(shí)別文本中的實(shí)體,這個(gè)過(guò)程稱之為做命名實(shí)體識(shí)別(Named Entity Recognition,NER),命名實(shí)體識(shí)別屬于自然語(yǔ)言處理中的一項(xiàng)基礎(chǔ)任務(wù),同時(shí)也是關(guān)系抽取、事件抽取、機(jī)器翻譯、問(wèn)答系統(tǒng)等多個(gè)NLP任務(wù)的基礎(chǔ)工作,其目標(biāo)是從文本中抽取出具有特定意義的實(shí)體,一般包括實(shí)體類、實(shí)踐類、數(shù)字類三個(gè)大的類別,以及人名、地名、組織機(jī)構(gòu)、時(shí)間、日期、貨幣、百分比。
除此之外,也可以根據(jù)項(xiàng)目的需要指定特定領(lǐng)域內(nèi)的實(shí)體,例如書(shū)名、疾病名、事件名等,只要是業(yè)務(wù)目標(biāo)需要的實(shí)體,都可以做為實(shí)體抽取對(duì)象。
在中文文本數(shù)據(jù)中進(jìn)行實(shí)體抽取相比英文文本數(shù)據(jù)而言難度更大,首先是因?yàn)橛⒄Z(yǔ)中的實(shí)體命名有非常明顯的形式標(biāo)志,每個(gè)單詞之間用空格隔開(kāi),并且實(shí)體的每個(gè)詞第一個(gè)字母是大寫(xiě),所以識(shí)別的難度相對(duì)容易。而中文沒(méi)有類似英文文本中空格之類的邊界標(biāo)識(shí)符,所以要做命名實(shí)體第一步是要確定詞與詞之間的邊界,將詞與詞之間間隔開(kāi)來(lái),這個(gè)過(guò)程稱之為分詞。
第二點(diǎn)是命名實(shí)體本身的構(gòu)成比較復(fù)雜,不斷會(huì)有新的實(shí)體名稱出現(xiàn),例如新的人名,地名,物品名等,而且命名實(shí)體的長(zhǎng)度也沒(méi)有限制,不同的實(shí)體可能會(huì)有不同的結(jié)構(gòu),例如少數(shù)民族人名或者翻譯的外國(guó)人名,難以建立大而全的實(shí)體數(shù)據(jù)庫(kù),分詞技術(shù)對(duì)于這部分的實(shí)體識(shí)別相對(duì)來(lái)說(shuō)難度會(huì)高很多。
第三點(diǎn)是在不同的文本資料中,命名實(shí)體之間可能會(huì)出現(xiàn)嵌套的情況,互相交叉以及相互包含,需要根據(jù)上下文才能推斷出命名實(shí)體真實(shí)的意思。例如“北京大學(xué)的學(xué)生參加了運(yùn)動(dòng)會(huì)”,可以劃分為“北京大學(xué)/的/學(xué)生/參加/了/運(yùn)動(dòng)/會(huì)/”,也可以劃分為“北京/大學(xué)/的/學(xué)生/參加/了/運(yùn)動(dòng)會(huì)”,不同的劃分方法會(huì)造成實(shí)體識(shí)別的不同。
關(guān)于分詞,我們會(huì)在后續(xù)的自然語(yǔ)言處理章節(jié)詳細(xì)講解。這里僅對(duì)命名實(shí)體的常用技術(shù)方法做一個(gè)概述。目前對(duì)于命名實(shí)識(shí)別的主要方法分為三種:基于規(guī)則和詞典的方法、基于統(tǒng)計(jì)和機(jī)器學(xué)習(xí)的方法以及前兩者混合使用的方法。
基于規(guī)則和詞典的方法是由語(yǔ)言學(xué)家或業(yè)務(wù)專家手工構(gòu)造規(guī)則模板,定義好需要抽取的命名實(shí)體,以字符串的匹配作為主要的手段,這是命名實(shí)體抽取最早使用的方法,提取的結(jié)果非常精準(zhǔn),但是這類系統(tǒng)大多依賴于知識(shí)庫(kù)和詞典,系統(tǒng)的泛化性不高,對(duì)于不同的系統(tǒng)需要重新編寫(xiě)規(guī)則,而且人力投入過(guò)大,建設(shè)的時(shí)間周期也較長(zhǎng),只適合于那些不會(huì)有太多新實(shí)體的領(lǐng)域知識(shí)圖譜構(gòu)建。
基于統(tǒng)計(jì)和機(jī)器學(xué)習(xí)的方法主要包括隱馬爾可夫模型(HMM)、條件隨機(jī)場(chǎng)(CRF)、長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)、最大熵模型(MaxEnt)等方法。這類實(shí)體抽取的方法對(duì)于特征的選擇要求較高,需要從文本中選擇對(duì)該項(xiàng)任務(wù)有影響的各種特征,并將這些特征加入到特征向量中。
依據(jù)特定命名實(shí)體識(shí)別的特征,考慮選擇能有效反映該類實(shí)體特性的特征集合。主要做法是通過(guò)對(duì)訓(xùn)練預(yù)料所包含的語(yǔ)言信息進(jìn)行統(tǒng)計(jì)和分析,從訓(xùn)練預(yù)料中挖掘出特征。有關(guān)特征可以分為具體的單詞特征、上下文特征、詞典及詞性特征、停用詞特征、核心詞特征以及語(yǔ)義特征等。
基于統(tǒng)計(jì)的方法對(duì)語(yǔ)料庫(kù)依賴比較大,但可以用來(lái)建設(shè)和評(píng)估命名實(shí)體識(shí)別系統(tǒng)的大規(guī)模通用語(yǔ)料庫(kù)又比較少,一般是使用維基百科或主流紙媒的標(biāo)注作為基礎(chǔ)訓(xùn)練語(yǔ)料,這類語(yǔ)料庫(kù)雖然在權(quán)威性和正確性上有保障,但是在時(shí)效性上交叉,對(duì)于新詞的識(shí)別能力較差。
實(shí)體識(shí)別技術(shù)經(jīng)歷了多次迭代,從早期的基于規(guī)則和字典的方法,到傳統(tǒng)的機(jī)器學(xué)習(xí)方法,再到深度學(xué)習(xí)方法,以及近期的遷移學(xué)習(xí)和半監(jiān)督學(xué)習(xí)方法。
目前,將神經(jīng)網(wǎng)絡(luò)與CRF模型結(jié)合的CNN/RNN-CRF是實(shí)體識(shí)別的主流模型,基于神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的實(shí)體識(shí)別方法,繼承了深度學(xué)習(xí)方法的優(yōu)點(diǎn),無(wú)需大量人工特征,只需詞向量和字向量就能達(dá)到主流水平,加入高質(zhì)量的詞典特征能夠進(jìn)一步提升效果,而在未來(lái),遷移學(xué)習(xí)和半監(jiān)督學(xué)習(xí)進(jìn)行實(shí)體識(shí)別技術(shù)方向研究的重點(diǎn)。
(2)實(shí)體消歧
不論是英語(yǔ)還是漢語(yǔ),構(gòu)成文本的基本單位都是詞,但是同一個(gè)詞在不同的上下文中可能代表不同的含義,例如英語(yǔ)的“play”就有玩、扮演、播放、比賽等含義,而漢語(yǔ)的“打”字除了用作介詞和量詞之外,用作動(dòng)詞時(shí)就有25個(gè)不同的意思。實(shí)體消歧就是明確多義詞在文中具體指代意思的技術(shù),通過(guò)實(shí)體消歧,就可以根據(jù)當(dāng)前的語(yǔ)境,準(zhǔn)確建立實(shí)體鏈接。
實(shí)體消歧可以看做是基于上下文的分類問(wèn)題,同其他自然語(yǔ)言處理的任務(wù)一樣,早起的實(shí)體消歧也是采用基于規(guī)則和詞典的方法。但這種方法的局限性太大,后續(xù)逐漸被機(jī)器學(xué)習(xí)的方法取代。我們知道機(jī)器學(xué)習(xí)分為有監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí),應(yīng)用在實(shí)體消歧上也分為有監(jiān)督的實(shí)體消歧方法和無(wú)監(jiān)督的實(shí)體消歧方法。
基于有監(jiān)督的學(xué)習(xí)實(shí)質(zhì)上是通過(guò)建立分類器,通過(guò)劃分多義詞的上下文類別的方法來(lái)區(qū)分多義詞的詞義,常見(jiàn)的方法有基于互信息的消歧方法,基于貝葉斯分類器的消歧方法以及基于最大熵的消歧方法。
舉例來(lái)說(shuō),“蘋(píng)果”一詞有時(shí)指水果,有時(shí)指科技公司,但如果與“吃”組成上下文,那么就可以根據(jù)貝葉斯概率計(jì)算出這個(gè)詞應(yīng)該是指水果而不是科技公司。
無(wú)監(jiān)督的實(shí)體消歧主要采用聚類算法進(jìn)行,先對(duì)每個(gè)實(shí)體不同的意思抽取其上下文的特征組成特征向量并進(jìn)行聚類,當(dāng)遇到需要進(jìn)行實(shí)體消除的文本時(shí),讓文本與之前構(gòu)建好的特征向量聚類之間的相似度計(jì)算來(lái)辨別實(shí)體的意思。
在一項(xiàng)測(cè)試實(shí)驗(yàn)中,采用KNN(k=1)方法進(jìn)行實(shí)體消歧的相似度計(jì)算,最終取得了平均正確率83.13%的結(jié)果。這種方法本質(zhì)上還是基于詞袋模型(bag of words),并沒(méi)有考慮上下文之間的聯(lián)系,所以對(duì)于一些復(fù)雜的實(shí)體辨別上效果不佳。
不論是采用有監(jiān)督的學(xué)習(xí)還是無(wú)監(jiān)督的學(xué)習(xí),實(shí)體消歧最終的結(jié)果都依賴于訓(xùn)練集數(shù)據(jù)的完整性和準(zhǔn)確性,所以目前在這一領(lǐng)域還未形成非常完善的解決方案,如何能夠提高實(shí)體消歧的準(zhǔn)確度有待專家學(xué)者的進(jìn)一步研究。
(3)指代消解
在我們?nèi)粘S谜Z(yǔ)中大量的存在指代詞,用來(lái)簡(jiǎn)化語(yǔ)言增加溝通的效率。例如有這樣一段文本:“喬布斯在2007年發(fā)布了第一代iPhone,他表示這款手機(jī)領(lǐng)先其他手機(jī)五年”,在這句話中的“他”指代的是“喬布斯”,而“這款手機(jī)”指代的是“第一代iPhone”。
明確這些代詞所指代的具體含義,將這些指代項(xiàng)關(guān)聯(lián)到正確的實(shí)體對(duì)象中的技術(shù)過(guò)程就是指代消解,又稱共指消解或參照消解。為了讓知識(shí)抽取更加準(zhǔn)確且不遺漏文本中的相關(guān)信息,必須對(duì)文本中的指代詞進(jìn)行指代消解。代消解不僅在知識(shí)抽取中起著重要的作用,而且在機(jī)器翻譯,文本摘要等自然語(yǔ)言應(yīng)用中最基礎(chǔ)的一項(xiàng)技術(shù)。
根據(jù)北京大學(xué)的王厚峰教授的研究,指代一般分成兩種回指(Anaphora,也成指示性指代)和共指(Coreference,也成同指)兩種情況,回指是表示當(dāng)前的指示代詞與上文出現(xiàn)過(guò)的詞存在語(yǔ)義關(guān)聯(lián)性,而共指則是兩個(gè)實(shí)體名字指向的真是世界中的同一實(shí)體,可以獨(dú)立于上下文存在。例如“阿里巴巴集團(tuán)首任董事長(zhǎng)”和“馬云”就是共指。
在漢語(yǔ)中的指代主要有一下三種典型的形式:
人稱代詞(Pronoun)
例如:【李明】怕高媽媽一個(gè)人待在家里寂寞,【他】便將家里的電視搬了過(guò)來(lái)。
指示代詞(Demonstrative)
例如:【很多人都想創(chuàng)造一個(gè)美好的世界留給孩子】,【這】可以理解,但不完全正確。
有定描述(Definite Description)。
例如:【貿(mào)易制裁】仿佛成了美國(guó)政府在對(duì)華關(guān)系中慣用的大棒,然而,【這根大棒】果真如美國(guó)政府所希望的那樣靈驗(yàn)嗎?
指代消解的基本原理是先構(gòu)造一個(gè)先行語(yǔ)候選集,然后再?gòu)暮蜻x集中做多選一的選擇。代表的方法是1998年Hobbs提出的樸素Hobbs算法,這是一種基于句法分析樹(shù)的搜索,通過(guò)遍歷桔子的語(yǔ)法數(shù)來(lái)判斷詞語(yǔ)詞之間是否可以互相替換,另一種指代消解方法是1983年Grose和Sidner提出的中心理論(Center Theory)。
這種方法認(rèn)為文本中的描述是應(yīng)該是連貫的,而通過(guò)語(yǔ)義的連貫性就可以找到文本中受關(guān)注的實(shí)體。但這種兩種方法只適用于指代詞與被指代詞距離較近的回指情境,在實(shí)際應(yīng)用上有一定的局限性。
目前指代消解最新的研究成果是2017年的端到端神經(jīng)共指消解算法(End-to-end Neural Coreference Resolution),其基本原理是找到一個(gè)句子中所有出現(xiàn)過(guò)的命名實(shí)體和代詞,并對(duì)他們所在的句子進(jìn)行特征向量構(gòu)造,計(jì)算詞與詞之間的特征向量,然后將代詞和實(shí)體進(jìn)行兩兩匹配計(jì)算共指匹配得分,以此來(lái)實(shí)現(xiàn)指代消解。
雖然指代消解問(wèn)題已經(jīng)經(jīng)歷了多年的研究和發(fā)展,但到目前為止,多數(shù)的研究成果還是在回指的研究上,對(duì)于共指還沒(méi)有較好的全自動(dòng)指代消解技術(shù)和方法,有待專家學(xué)者的進(jìn)一步研究。
(4)關(guān)系抽取
識(shí)別實(shí)體與實(shí)體之間的語(yǔ)義關(guān)系是知識(shí)抽取中的一項(xiàng)核心任務(wù),只有將實(shí)體之間通過(guò)關(guān)系聯(lián)系起來(lái)構(gòu)建成RDF三元組,才能形成知識(shí)網(wǎng)絡(luò)。例如:王思聰是萬(wàn)達(dá)集團(tuán)董事長(zhǎng)王健林的獨(dú)子,可以抽取出(王思聰,父子關(guān)系,王健林)、(萬(wàn)達(dá)集團(tuán)、董事長(zhǎng)、王健林)兩組三元組實(shí)例。
最早的關(guān)系抽取任務(wù)可以追溯至1998年,當(dāng)時(shí)是根據(jù)觸發(fā)詞作為關(guān)系識(shí)別的依據(jù),然后填充關(guān)系模板槽抽取文本中特定的關(guān)系,例如“董事長(zhǎng)”這個(gè)關(guān)鍵詞構(gòu)造為X的董事長(zhǎng)是Y這樣的模板,而隨著機(jī)器學(xué)習(xí)算法和深度神經(jīng)網(wǎng)絡(luò)算法的發(fā)展越來(lái)越多的研究把關(guān)系抽取做成分類任務(wù)處理。
例如采用半監(jiān)督學(xué)習(xí)的bootstrapping方法,按照“模板生成→實(shí)例抽取”的流程反復(fù)迭代,先給定一個(gè)種子實(shí)體的文本集合,例如<中國(guó),北京>,接著從文本中抽取出包含種子實(shí)體的文本,例如<中國(guó)的首都是北京>,從而將<首都>這個(gè)關(guān)系抽取出來(lái),然后用新發(fā)現(xiàn)的關(guān)系模板抽取更多新的三元組實(shí)例,匹配出所有X的首都是Y這樣的格式。在這個(gè)過(guò)程中會(huì)發(fā)現(xiàn)X與Y除了首都這個(gè)關(guān)系實(shí)體之外,還有可能出現(xiàn)其他的關(guān)系,通過(guò)反復(fù)迭代不斷抽取新的實(shí)例和模板直至無(wú)法再發(fā)現(xiàn)符合條件的關(guān)系位置。
這種方法的優(yōu)點(diǎn)是構(gòu)建成本較低,適合大規(guī)模的知識(shí)庫(kù)構(gòu)建,同時(shí)可以發(fā)現(xiàn)一些未經(jīng)人工定義的隱含關(guān)系。但在實(shí)際使用中也面臨著很多的問(wèn)題,最常見(jiàn)的問(wèn)題是在迭代的過(guò)程中容易出現(xiàn)噪聲實(shí)例和模板,出現(xiàn)語(yǔ)義漂移的現(xiàn)象,結(jié)果的準(zhǔn)確率較低。
另外一點(diǎn)是因?yàn)闆](méi)有經(jīng)過(guò)人工定義關(guān)系,導(dǎo)致關(guān)系語(yǔ)義沒(méi)有歸一化,同一種關(guān)系可能會(huì)有多種不同的表達(dá)方式,例如“首都是”也可以表達(dá)為“首都位于”、“設(shè)為首都”等,這些表述實(shí)際上是同一種關(guān)系,如何將這些自動(dòng)發(fā)現(xiàn)的關(guān)系進(jìn)行聚類規(guī)約是目前還未解決的問(wèn)題。
關(guān)系抽取的好壞決定了知識(shí)圖譜中知識(shí)的規(guī)模和質(zhì)量,除了上述的基于模板匹配和半監(jiān)督學(xué)習(xí)的方法之外,采用監(jiān)督學(xué)習(xí)的Pipeline、LSTM-RNN的算法也是比較熱門(mén)的方案。
(5)事件抽取
事件抽取可以視為關(guān)系抽取的強(qiáng)化版,是將文本中的事件以結(jié)構(gòu)化的形式呈現(xiàn)出來(lái)。事件抽取的第一步是識(shí)別事件及其類型,其次要識(shí)別出事件所涉及的屬性,最后需要確定每個(gè)元素在事件中與事件本身的關(guān)系。
以金融領(lǐng)域構(gòu)建投融資的領(lǐng)域知識(shí)圖譜為例,實(shí)踐抽取的流程是先定義事件的觸發(fā)詞,即一個(gè)事件指稱中最能代表事件發(fā)生的詞,一般是動(dòng)詞或名詞。然后定義事件的主體元素及其對(duì)應(yīng)的屬性。再根據(jù)屬性找到對(duì)應(yīng)的值。如圖所示。事件的觸發(fā)詞是“融資”,事件的主體是“自如”,與事件相關(guān)的屬性融資輪數(shù)、募集資金、領(lǐng)投方、跟投方和投前估值。
事件的主體和其他的屬性之間其實(shí)可以構(gòu)建出一對(duì)多的多元關(guān)系,如上圖的自如與其他屬性構(gòu)成的多元,其本質(zhì)是6個(gè)三元組,每個(gè)三元組的主語(yǔ)都是觸發(fā)詞這個(gè)事件,謂語(yǔ)分別是融資事件的屬性,而賓語(yǔ)分別是抽取出來(lái)的值。
我們知道知識(shí)圖譜分為通用知識(shí)圖譜和領(lǐng)域知識(shí)圖譜,事件抽取也可以分為適用于通用知識(shí)圖譜的開(kāi)放域事件抽取,以及適用于領(lǐng)域知識(shí)圖譜的限定域事件抽取。上文例舉的金融領(lǐng)域融資事件抽取就是一個(gè)限定域的事件抽取。
對(duì)于限定域的事件抽取,因?yàn)槟繕?biāo)明確,所以通常都是預(yù)先定義好目標(biāo)事件的類型以及每種類型包含的具體事件元素,并給出一定數(shù)量的人工標(biāo)注數(shù)據(jù)作為訓(xùn)練集特征,后續(xù)采用模式匹配的方法或采用機(jī)器學(xué)習(xí)的方法進(jìn)行事件抽取。
開(kāi)放域的事件抽取因?yàn)樵谑录R(shí)別之前對(duì)于可能的事件類型和事件結(jié)構(gòu)都是未知的,所以這類事件抽取主要是基于無(wú)監(jiān)督的方法和分布假設(shè)理論。即如果候選事件觸發(fā)詞或者候選事件元素具有相似的語(yǔ)境,那么這些候選事件觸發(fā)詞傾向于觸發(fā)相同類型的事件。
總之,對(duì)于無(wú)結(jié)構(gòu)的文本數(shù)據(jù)進(jìn)行知識(shí)抽取雖然已經(jīng)經(jīng)歷了多年的發(fā)展,但目在各個(gè)子任務(wù)中依然存在很多未解決的問(wèn)題有待專家學(xué)者的進(jìn)一步研究。
小提示:在部分自然語(yǔ)言處理的研究報(bào)告中,實(shí)體抽取和實(shí)體消歧會(huì)合并稱之為實(shí)體鏈接(Entity Linking),或稱實(shí)體鏈指任務(wù)。
2.4 知識(shí)融合
我們?cè)谏衔慕榻B了知識(shí)圖譜的多種數(shù)據(jù)來(lái)源,但是這些數(shù)據(jù)源中抽取的知識(shí)來(lái)源廣泛,知識(shí)的質(zhì)量可能良莠不齊,也可能存在數(shù)據(jù)重合的部分,所以需要對(duì)知識(shí)進(jìn)行融合,將不同數(shù)據(jù)源的知識(shí)統(tǒng)一規(guī)范,形成高質(zhì)量的知識(shí)庫(kù)。在不同的文獻(xiàn)中,知識(shí)融合可能有不同的叫法,如本體對(duì)齊,本體匹配,實(shí)體對(duì)齊等,本文統(tǒng)一稱之為知識(shí)融合。
知識(shí)融合主要包含有三種類型:
- 第一種是同一個(gè)實(shí)體有多種不同的表達(dá)方式,例如魯迅原名是周樹(shù)人,字豫才,對(duì)于這些不同的名稱都需要規(guī)約到同一個(gè)實(shí)體下。另
- 一種是同一種表達(dá)在不同的語(yǔ)境下可能指代的是不同的實(shí)體,即一詞多義,例如“蘋(píng)果”有可能是指美國(guó)蘋(píng)果公司,也有可能是指水果。
- 第三種是跨語(yǔ)言的知識(shí)融合,同一個(gè)實(shí)體在不同的語(yǔ)言或地區(qū)可能有不同的命名,例如騰訊公司的英文是Tencent。
在實(shí)際工作中,知識(shí)融合是數(shù)據(jù)預(yù)處理不可或缺的一部分,知識(shí)融合的好壞直接決定了知識(shí)庫(kù)的質(zhì)量,也決定了知識(shí)圖譜項(xiàng)目的成功與否。
最基本的知識(shí)融合方法是知識(shí)卡片融合,即上文提到的百科類網(wǎng)站infobox信息,不同的百科網(wǎng)站對(duì)于同一個(gè)實(shí)體的描述可能有差異,所以可以將同一個(gè)實(shí)體在不同的百科類網(wǎng)站中進(jìn)行搜索查詢,將查詢信息合并成為一個(gè)歸一化之后的知識(shí)卡片,即可完成知識(shí)融合。
但是對(duì)于絕大多數(shù)的知識(shí)融合而言并不會(huì)像知識(shí)卡片的融合這樣簡(jiǎn)單,我們知道不同的本體實(shí)例是由他們所擁有的屬性決定的,如果兩個(gè)不同的實(shí)體,屬性都是相同或者近似的,那么我們就可以根據(jù)一定的規(guī)則將實(shí)體進(jìn)行融合。所以要判斷實(shí)體是否是同一個(gè)實(shí)體,是實(shí)體的屬性是否相似來(lái)判斷,屬性的相似度決定了實(shí)體的相似度。
知識(shí)融合的流程通常分為四步,分別是數(shù)據(jù)預(yù)處理、數(shù)據(jù)預(yù)分組、屬性相似度計(jì)算和實(shí)體相似度計(jì)算。
- 數(shù)據(jù)預(yù)處理
將不同數(shù)據(jù)源的數(shù)據(jù)統(tǒng)一格式,例如去除標(biāo)點(diǎn)符號(hào),洗掉臟數(shù)據(jù)等,這一步通常需要人工進(jìn)行,相關(guān)的方法可以參考前面章節(jié)的數(shù)據(jù)預(yù)處理部分。
- 數(shù)據(jù)預(yù)分組
這一步主要是為了加快知識(shí)融合的效率,降低計(jì)算的難度。如果不進(jìn)行分組的話,那么后續(xù)的實(shí)體比較過(guò)程就需要龐大的計(jì)算量。常用的數(shù)據(jù)分類方法可以采用產(chǎn)品經(jīng)理指定類型進(jìn)行分組,也可以使用機(jī)器學(xué)習(xí)的方法進(jìn)行無(wú)監(jiān)督聚類分組或有監(jiān)督的分類進(jìn)行分組。
- 屬性相似度計(jì)算
根據(jù)不同的數(shù)據(jù)類型,需要采用不同的方法。如果融合的數(shù)據(jù)對(duì)象是純字符串類型的數(shù)據(jù),可以使用編輯距離(levenshtein distance),這是一個(gè)度量?jī)蓚€(gè)字符串之間相似度的算法,指兩個(gè)字符串之間,由字符串A轉(zhuǎn)換到另一個(gè)字符串B所需要最少的插入、刪除、替換等操作的次數(shù),操作次數(shù)越少意味著兩個(gè)詞越相似。
如果要融合的是集合類型的數(shù)據(jù),可以通過(guò)jaccard相似系數(shù)進(jìn)行計(jì)算,公式如下:
當(dāng)兩個(gè)集合A和B交集元素的個(gè)數(shù)在A與B的并集中所占比例,稱之為jaccard系數(shù),jaccard值越大說(shuō)明相似度越高,如果完全一致的兩個(gè)集合則相似度為1。類似的余弦相似度也可以用來(lái)計(jì)算集合類型的數(shù)據(jù)。
如果是整篇文檔類型的數(shù)據(jù),可以線通過(guò)TF-IDF算法找出文檔的關(guān)鍵詞,再通過(guò)余弦相似度計(jì)算關(guān)鍵詞集合的相似度,以此判斷文檔的相似度。另外,使用詞袋模型也可以用來(lái)計(jì)算文檔的相似度,這兩個(gè)方法我們會(huì)在后續(xù)章節(jié)詳細(xì)講解。
- 實(shí)體相似度計(jì)算
這是知識(shí)融合的第四步也是最后一步,常用的方法是聚類和聚合兩種。聚類算法在之前的章節(jié)詳細(xì)講過(guò)K-means聚類,在計(jì)算實(shí)體相似度的時(shí)候,K-means聚類常常和Canopy聚類配合使用,Canpy聚類最大的特點(diǎn)是不需要事先指定K值。除了這兩種聚類方法外,層次聚類和相關(guān)性聚類也可以用于實(shí)體相似度的計(jì)算。
另一種計(jì)算實(shí)體相似度的方法是采用聚合算法,根據(jù)屬性相似度的結(jié)果計(jì)算出相似度的得分向量,然后根據(jù)機(jī)器學(xué)習(xí)的分類算法,例如邏輯回歸、決策樹(shù)以及支持向量機(jī)等。
3. 實(shí)操案例:Protégé構(gòu)建漫威英雄關(guān)系圖譜
知識(shí)圖譜技術(shù)剛剛處于起步階段,目前業(yè)內(nèi)并沒(méi)有一款通用的本體編輯工具,多數(shù)要進(jìn)行知識(shí)圖譜構(gòu)建的項(xiàng)目,需要先開(kāi)發(fā)一套知識(shí)圖譜本體輯軟件工具,然后再在這基礎(chǔ)之上進(jìn)行圖譜的構(gòu)建工作。
本章節(jié)的實(shí)操案例,我們將使用Protégé來(lái)進(jìn)行,這是一款由斯坦福大學(xué)醫(yī)學(xué)院生物信息研究中心基于Java語(yǔ)言開(kāi)發(fā)的本體編輯和知識(shí)獲取軟件,主要用于語(yǔ)義網(wǎng)中本體的構(gòu)建,雖然不支持多人協(xié)同編輯,但已經(jīng)是目前比較成熟的開(kāi)源知識(shí)圖譜編輯工具,包含了整個(gè)圖譜生成、可視化展現(xiàn)以及知識(shí)推理的過(guò)程。而且軟件本身是開(kāi)源的,所以可以基于源碼對(duì)軟件進(jìn)行適當(dāng)?shù)母脑欤苑瞎卷?xiàng)目需要。非常適合產(chǎn)品經(jīng)理理解知識(shí)圖譜的相關(guān)技術(shù)原理。Protégé的主界面如圖所示。
3.1 構(gòu)建本體
首先,我們需要構(gòu)建本體,當(dāng)打開(kāi)Protégé軟件時(shí)會(huì)默認(rèn)打開(kāi)“Active Ontology”菜單欄,在該菜單下的“Ontology IRI”輸入項(xiàng)中,會(huì)有一個(gè)默認(rèn)的本體前綴名,我們可以把它改為自定義的名稱,就像給變量設(shè)置變量名一樣,這里我將其設(shè)置為“http://www.KnowledgeGraph.com”,如圖所示。
如果想要新建一個(gè)本體,點(diǎn)擊File菜單欄下的New選項(xiàng)即可。
3.2 構(gòu)建類
當(dāng)我們構(gòu)件好本體之后,點(diǎn)擊“Entities”選項(xiàng)卡進(jìn)行本體編輯,首先選擇該選項(xiàng)卡下的“Classes”標(biāo)簽創(chuàng)建新的類。如圖所示,在這個(gè)頁(yè)面中,左側(cè)是所有的類,用樹(shù)形結(jié)構(gòu)展示了類之間的對(duì)應(yīng)關(guān)系,如果選中左側(cè)的某個(gè)類,可以在右側(cè)設(shè)置這個(gè)類的相關(guān)描述。我們會(huì)看到已經(jīng)有了一個(gè)owl:Thing的類存在,這是系統(tǒng)默認(rèn)的所有類的父類。
單擊選中Thing,在其左上角點(diǎn)擊圖標(biāo)可以創(chuàng)建子類,在彈出的菜單中的Name輸入項(xiàng)中設(shè)置子類的名稱,這里我們輸入“電影”,然后點(diǎn)擊確定。接著選中新創(chuàng)建的電影類,并點(diǎn)擊中間的圖標(biāo)創(chuàng)建創(chuàng)建兄弟類,兄弟類的名稱我們?cè)O(shè)置為“人物”,并在人物類下再構(gòu)建兩個(gè)子類,分別命名為“男人”和“女人”這樣就完成了類的創(chuàng)建。
當(dāng)然,也可以在相關(guān)的類上單擊鼠標(biāo)右鍵,在彈出的菜單中選擇“Add subclass”以及“Add sibling class”來(lái)創(chuàng)建子類和兄弟類,效果和點(diǎn)擊按鈕是一樣的。
如果想要?jiǎng)h除某個(gè)類,只需要選中類之后點(diǎn)擊最右側(cè)的圖標(biāo)即可刪除。
3.3 設(shè)置類之間的關(guān)系
我們創(chuàng)建四個(gè)類,現(xiàn)在可以對(duì)這4個(gè)類設(shè)置一些屬性了,在本例中,男人與女人是互斥關(guān)系,一個(gè)人的實(shí)例只能是男人或女人中的某一個(gè),所以我們可以使用“Disjoint With”屬性來(lái)進(jìn)行描述。
選中女人類,然后點(diǎn)擊右側(cè)的“Disjoint With”屬性右側(cè)的加號(hào)按鈕,在彈出的菜單中選擇男人類,然后點(diǎn)擊確定即可完成一個(gè)關(guān)系的創(chuàng)建。同樣的操作我們可以設(shè)置人物和電影也為互斥的類,如圖所示。
3.4 構(gòu)建對(duì)象屬性
選擇“Object properties”標(biāo)簽進(jìn)入對(duì)象屬性編輯的頁(yè)面,與“Classes”頁(yè)面非常類似,只是用主題顏色的不同加以區(qū)分。左側(cè)已經(jīng)有了一個(gè)系統(tǒng)默認(rèn)的“owl:topObjectProperty”屬性,點(diǎn)擊左上角的按鈕或者鼠標(biāo)右鍵點(diǎn)擊可以創(chuàng)建一個(gè)子屬性,并在彈出的輸入框中輸入屬性的名稱。
我們可以創(chuàng)建一個(gè)“主演”的屬性,創(chuàng)建完畢后,在右側(cè)的“Description”中點(diǎn)擊“Domains”選項(xiàng)右側(cè)的加號(hào)按鈕,在彈出的菜單中左側(cè)是選擇“主演”,右側(cè)是屬性對(duì)應(yīng)的類,選擇“人物”,然后點(diǎn)擊確定按鈕將主演和人物關(guān)聯(lián)起來(lái),表示主演的主語(yǔ)一定是某個(gè)人物,如圖所示。
接下來(lái)設(shè)置屬性的取值范圍,點(diǎn)擊“Ranges”選項(xiàng)右側(cè)的加號(hào)按鈕,將“主演”的取值范圍設(shè)置為“電影”,點(diǎn)擊確定即可。
這樣我們就完成了一個(gè)對(duì)象屬性的構(gòu)建,在后續(xù)的知識(shí)推理中會(huì)用到這個(gè)屬性,如圖所示。
3.5 構(gòu)建數(shù)據(jù)屬性
選擇“Data properties”標(biāo)簽進(jìn)入數(shù)據(jù)屬性編輯的頁(yè)面,在左側(cè)已經(jīng)有了一個(gè)系統(tǒng)默認(rèn)的“owl:topDataProperty”屬性,點(diǎn)擊左上角的按鈕或者鼠標(biāo)右鍵點(diǎn)擊可以創(chuàng)建一個(gè)子屬性,并在彈出的輸入框中輸入屬性的名稱。
我們可以創(chuàng)建一個(gè)“英雄名”的屬性,來(lái)表示超級(jí)英雄的稱呼,創(chuàng)建完畢后,在右側(cè)的“Description”中點(diǎn)擊“Range”右側(cè)的加號(hào),并選擇“Built in dataypes”選項(xiàng)卡,選擇“xsd:string”然后點(diǎn)擊確定,將這個(gè)數(shù)據(jù)屬性的取值范圍限定為字符串,設(shè)置完畢之后如圖所示。
3.6 構(gòu)建實(shí)例
點(diǎn)擊“Individuals”選項(xiàng)卡進(jìn)入實(shí)例編輯頁(yè)面,點(diǎn)擊左上角的圖標(biāo)創(chuàng)建一個(gè)新的實(shí)例,在彈出的菜單中輸入實(shí)例名稱“小羅伯特·唐尼”,點(diǎn)擊確定即可完成實(shí)例的創(chuàng)建,我們用同樣的方法繼續(xù)創(chuàng)建“斯嘉麗·約翰遜”、“鋼鐵俠1”、“復(fù)仇者聯(lián)盟1”三個(gè)實(shí)例。
選中“小羅伯特·唐尼”的實(shí)例,在右側(cè)窗口中點(diǎn)擊“Types”的加號(hào)按鈕,在彈出的界面中選擇“Class Hierarchy”標(biāo)簽,然后從類中選擇“男人”,表示這個(gè)實(shí)例是屬于男人這個(gè)類的。
接著,在右側(cè)的“Property assertions”設(shè)置窗口下,點(diǎn)擊“Object property assertions”右側(cè)的加號(hào)按鈕,在彈出的菜單中會(huì)有兩個(gè)輸入框,左側(cè)需要輸入對(duì)象屬性,右側(cè)輸入另外的實(shí)體,我們?cè)谧髠?cè)輸入“主演”,右側(cè)輸入“鋼鐵俠1”,點(diǎn)擊確定按鈕即完成了一個(gè)三元組的創(chuàng)建。
之后需要設(shè)置實(shí)例的數(shù)據(jù)屬性,點(diǎn)擊“Data property assertions”右側(cè)的加號(hào)界面,在彈出的菜單左側(cè)選擇英雄名的屬性,然后在右側(cè)填寫(xiě)具體的屬性值,表示該人物在電影中的英雄名叫什么,這里我們填入“鋼鐵俠”并點(diǎn)擊確定,最終的設(shè)置結(jié)果如圖所示。
依照同樣的操作流程將“斯嘉麗·約翰遜”的屬性也設(shè)置完成,將“鋼鐵俠1”的Types設(shè)置為“電影”,但是先保留“復(fù)仇者聯(lián)盟1”的type為空狀態(tài),看看如何讓Protégé對(duì)這個(gè)實(shí)例的所屬類進(jìn)行自動(dòng)判斷,實(shí)現(xiàn)知識(shí)推理。
3.7 知識(shí)推理
在頂部菜單中點(diǎn)擊“Reasoner”菜單并選擇“HermiT”選項(xiàng),將其變?yōu)檫x中狀態(tài),然后再次點(diǎn)擊“Reasoner”菜單,會(huì)發(fā)現(xiàn)“Stare Reasoner”變?yōu)榱丝蛇x擇狀態(tài),點(diǎn)擊該按鈕,系統(tǒng)會(huì)對(duì)知識(shí)進(jìn)行自動(dòng)推理計(jì)算,待計(jì)算結(jié)束之后,我們選中“復(fù)仇者聯(lián)盟1”的實(shí)體,會(huì)發(fā)現(xiàn)它的Types已經(jīng)設(shè)置為“電影”了,點(diǎn)擊右側(cè)的問(wèn)號(hào)圖標(biāo)可以查看到推理的邏輯依據(jù)。
如圖所示,之前我們定義了小羅伯特·唐尼和斯嘉麗·約翰遜主演了復(fù)仇者聯(lián)盟1,而主演的Range取值范圍是電影,所以可以就此推斷出復(fù)仇者聯(lián)盟1是一部電影。
3.8 圖譜可視化
在頂部的“Windows”菜單下選擇“Tabs”下的OntoGraf選項(xiàng),頂部會(huì)增加“OntoGraf”菜單,切換到該菜單并點(diǎn)擊左側(cè)的類名稱,即可在畫(huà)布中顯示類的圖標(biāo),如果類有子類或者實(shí)例,則會(huì)在圖標(biāo)上出現(xiàn)一個(gè)加號(hào),雙擊帶加號(hào)的圖標(biāo)可以下鉆展開(kāi)查看所有的類和實(shí)例。鼠標(biāo)移動(dòng)到線上,就可以顯示這條線代表的關(guān)系名稱。通過(guò)鼠標(biāo)拖動(dòng)圖標(biāo)可以很直觀的查看到本體之間的關(guān)系
本文由 @黃瀚星 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
請(qǐng)問(wèn),做一個(gè)AI產(chǎn)品經(jīng)理,需要對(duì)技術(shù)這么了解的嗎?還是說(shuō)要對(duì)業(yè)務(wù)了解夠深就好?
至少要知道技術(shù)的實(shí)現(xiàn)原理,能做什么以及不能做什么
即使是一個(gè)微小的改動(dòng)
感謝指正,已修改
錯(cuò)別字 目前以網(wǎng)頁(yè)為主要載體
我現(xiàn)也是智慧城市項(xiàng)目,想向您學(xué)習(xí),方便留下聯(lián)系方式嗎?謝謝!
13077313888
嗯,已加您,麻煩您通過(guò)下,感謝