CCKS-2017 行业知识图谱构建与应用-下篇
http://www.sohu.com/a/192557627_99934777
摘要:
這篇是PPT的下半部分,更加偏重于實戰(zhàn)中關(guān)鍵技術(shù)的難點剖析。
行業(yè)知識圖譜關(guān)鍵技術(shù)
上篇我們講行業(yè)知識圖譜生命周期劃分為6個階段,分為知識建模,知識獲取,知識融合,知識存儲,知識計算和知識應(yīng)用。接下來我們詳細(xì)描述每個階段具體是如何完成的,有沒有現(xiàn)成可用的工具、工具的優(yōu)缺點如何、沒有現(xiàn)成工具的話如何實現(xiàn);同時,我們會以金融證券領(lǐng)域的創(chuàng)投知識圖譜為例來進行實戰(zhàn)描述。
知識建模
即為行業(yè)的知識和數(shù)據(jù)進行抽象建模。上篇描述了行業(yè)數(shù)據(jù)的特點和企業(yè)面臨的數(shù)據(jù)利用挑戰(zhàn),也提到了使用行業(yè)知識圖譜來克服這些難題。具體而言,首先使用知識圖譜相關(guān)技術(shù)對行業(yè)知識和數(shù)據(jù)進行建模:
-
以實體為主體目標(biāo),實現(xiàn)對不同來源的數(shù)據(jù)進行映射與合并。(實體抽取與合并)
-
利用屬性來表示不同數(shù)據(jù)源中針對實體的描述,形成對實體的全方位描述。(屬性映射與歸并)
-
利用關(guān)系來描述各類抽象建模成實體的數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系,從而支持關(guān)聯(lián)分析。(關(guān)系抽取)
-
通過實體鏈接技術(shù),實現(xiàn)圍繞實體的多種類型數(shù)據(jù)的關(guān)聯(lián)存儲。(實體鏈接)
-
使用事件機制描述客觀世界中動態(tài)發(fā)展,體現(xiàn)事件與實體間的關(guān)聯(lián);并利用時序描述事件的發(fā)展?fàn)顩r。(動態(tài)事件描述)
了解語義網(wǎng)或知識工程的朋友應(yīng)該都使用過或者聽過Protégé,它是由斯坦福大學(xué)開發(fā)的一個本體編輯器軟件,基于RDF(S),OWL等語義網(wǎng)規(guī)范,并且還提供圖形化界面以及在線版本(WebProtégé)。
但是Protégé在使用過程中存在以下不足之處:
基本只提供單人編輯,在線版本的并發(fā)功能支持也不完善;并發(fā)編輯時需要通過文件共享來實現(xiàn);
完全依靠人工,難以實現(xiàn)與知識圖譜構(gòu)建(半)自動化過程的交互。
不支持復(fù)雜事件及時態(tài)的建模;
因為基于單機構(gòu)建,因此對大數(shù)據(jù)量支持不夠,會出現(xiàn)內(nèi)存溢出;因此,可以說Protégé適用于原型快速構(gòu)建的場景,在生產(chǎn)環(huán)境下使用會遇到各種問題。
通過我們在行業(yè)中的經(jīng)驗積累,結(jié)合以上幾個問題,總結(jié)得出構(gòu)建一個良好的知識建模工具應(yīng)該具備如下一些特性:
一)在線并發(fā)協(xié)作編輯
支持在線并發(fā)協(xié)作編輯,能夠?qū)⒕庉嫷闹R實時保存,當(dāng)其它用戶對當(dāng)前用戶正在編輯的內(nèi)容有更新時,系統(tǒng)自動提示加載最新版本,因此能夠有效地解決并發(fā)知識編輯沖突。
這是我們所構(gòu)建的知識建模的在線編輯界面
這是上下位關(guān)系定義界面:
這是屬性定義編輯界面:
二)自動導(dǎo)入、集成
同時它提供導(dǎo)入、集成功能,能夠把現(xiàn)有的知識通過導(dǎo)入功能進行集成,以存儲為橋梁,可以對自動算法的結(jié)果進行編輯。
三)支持復(fù)雜動態(tài)事件建模
在對動態(tài)事件數(shù)據(jù)的建模時,使用時態(tài)信息存儲實現(xiàn)事件時間的描述。
該圖為融資事件的建模示例
四)大數(shù)據(jù)量支持
支持大數(shù)據(jù)量的知識圖譜編輯:編輯是基于底層的知識圖譜存儲的,每次編輯時加載到前端的僅為當(dāng)前相關(guān)的數(shù)據(jù),因此不會造成內(nèi)存溢出等問題。
知識獲取
針對不同種類的數(shù)據(jù),我們利用不同的技術(shù)進行獲取。利用D2R從結(jié)構(gòu)化數(shù)據(jù)庫中獲取知識,利用包裝器Wrapper從半結(jié)構(gòu)化數(shù)據(jù)中獲取知識,利用文本信息抽取技術(shù)從非結(jié)構(gòu)化文本中獲取知識。
一)D2R
我們先看下目前主流的D2R工具—D2RQ,D2RQ是一個將關(guān)系數(shù)據(jù)庫轉(zhuǎn)換為虛擬的RDF數(shù)據(jù)庫的平臺,主要包括三個模塊
1. D2R Server,HTTP Server,提供對 RDF數(shù)據(jù)的查詢訪問接口,以供上層的 RDF 瀏覽器、SPARQL查詢客戶端以及傳統(tǒng)的 HTML 瀏覽器調(diào)用;
2. D2RQ Engine:利用一個可定制的 D2RQ Mapping 文件將關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)換成 RDF 格式;
3. D2RQ Mapping Language:定義將關(guān)系型數(shù)據(jù)轉(zhuǎn)換成 RDF 格式的 Mapping 規(guī)則。
D2RQ的主體架構(gòu)如下:
從其功能描述我們可知D2RQ是直接將關(guān)系型數(shù)據(jù)庫轉(zhuǎn)換成RDF的,因此難以與知識建模結(jié)果對應(yīng),同樣也難以同其他知識進行融合,在新數(shù)據(jù)的增量映射以及海量數(shù)據(jù)映射時會出現(xiàn)問題。
因此我們的解決方案是將D2R映射與知識建模結(jié)合,在數(shù)據(jù)模式的基礎(chǔ)上進行映射;例如從數(shù)據(jù)庫中的“企業(yè)信息表”中把記錄映射成概念“企業(yè)”下的實體。
同時通過設(shè)置合并條件,把D2R的結(jié)果與知識圖中的已有知識進行融合;例如對于企業(yè),設(shè)置“如果企業(yè)名稱相同則進行合并”的規(guī)則。
在實現(xiàn)數(shù)據(jù)的增量映射功能時,通過特定的關(guān)鍵詞及規(guī)則來設(shè)置數(shù)據(jù)更新的標(biāo)記;例如,對于企業(yè),設(shè)置“若成立時間為上次更新時間之后的企業(yè)為新的企業(yè)”。
最終經(jīng)過D2R映射的數(shù)據(jù)直接存儲成為知識圖譜中的知識,因而其數(shù)據(jù)量僅取決于存儲的支撐量,也就不存在海量數(shù)據(jù)映射會導(dǎo)致的性能問題。
下面是D2R操作過程演示的視頻,從創(chuàng)投新聞數(shù)據(jù)庫中進行實體、實體屬性和關(guān)系知識的抽取。
二)包裝器
半結(jié)構(gòu)化行業(yè)數(shù)據(jù)源解析一般采用包裝器的方式,由于這些行業(yè)的數(shù)據(jù)源網(wǎng)站大多通過模板生成。包裝器可以自動進行學(xué)習(xí),但為了保證準(zhǔn)確度,我們通常會使用人機結(jié)合的方法。
在行業(yè)數(shù)據(jù)源解析實踐中,由于網(wǎng)站的高度可變性,因此目前尚沒有統(tǒng)一的包裝器工具,所以在實際應(yīng)用中,通常針對不同結(jié)構(gòu)的數(shù)據(jù)配置相應(yīng)的包裝器,完成數(shù)據(jù)的解析。
下圖為我們研發(fā)使用的包裝器配置工具,一般分為5個步驟,前兩步較為直觀,首先設(shè)置輸入源,可以是網(wǎng)頁的URL、網(wǎng)頁的源碼文件等,然后進行預(yù)處理,主要是過濾CSS、Java等與信息抽取無關(guān)的噪聲數(shù)據(jù);第三步,配置抽取的目標(biāo),指定抽取的是知識圖譜中的何種元素;第四步中我們?yōu)槌槿〉哪繕?biāo)設(shè)置了一系列的抽取規(guī)則,包括網(wǎng)頁標(biāo)簽規(guī)則、前置規(guī)則、后置規(guī)則,正則表達(dá)式等;最后是對抽取結(jié)果的過濾等后處理操作
下面我們來看幾個從半結(jié)構(gòu)化數(shù)據(jù)中抽取專利知識的包裝器的示例
示例1:抽取專利,設(shè)置抽取的目標(biāo)為專利實體名稱及專利的屬性,然后依據(jù)網(wǎng)頁的特征設(shè)置相應(yīng)的規(guī)則。
示例2:另一個專利信息抽取的例子
三)文本信息抽取
行業(yè)知識圖譜構(gòu)建過程中文本信息抽取的任務(wù)非常多,這里主要討論實體識別、概念抽取、關(guān)系抽取以及事件抽取。
信息抽取的方法主要有CloseIE和OpenIE兩類,兩者的對比狀況如下:
OpenIE 的典型代表工具有 ReVerb、TextRunner。由于OpenIE 工具準(zhǔn)確率比較低,會增加知識融合的難度,因此在行業(yè)知識圖譜構(gòu)建中實用性不高。通常被用于做第一輪的信息抽取探索,從它的結(jié)果中發(fā)現(xiàn)新的關(guān)系,然后在此基礎(chǔ)上應(yīng)用其它的信息抽取方法。
CloseIE的典型工具為DeepDive。
Deepdive是由斯坦福大學(xué)InfoLab實驗室開發(fā)的一個開源知識抽取系統(tǒng)。它通過弱監(jiān)督學(xué)習(xí),從非結(jié)構(gòu)化的文本中抽取結(jié)構(gòu)化的關(guān)系數(shù)據(jù),核心關(guān)鍵點是能夠在更短的時間內(nèi)提供更高質(zhì)量的數(shù)據(jù)。
其基于聯(lián)合推理的算法,讓用戶只需要關(guān)心特征本身,要求用戶思考特征而不是算法,而其他機器學(xué)習(xí)系統(tǒng)則要求開發(fā)者思考聚類算法、分類算法的使用等;同時DeepDive允許用戶使用簡單的規(guī)則來影響學(xué)習(xí)過程以提升結(jié)果的質(zhì)量,也會根據(jù)用戶反饋來提高預(yù)測的準(zhǔn)確度;DeepDive使用機器學(xué)習(xí)算法訓(xùn)練系統(tǒng)來減少各種形式的噪音和不確定性,并為每一個決斷進行復(fù)雜的可能性計算。
下圖為Deep Dive進行關(guān)系抽取的基本過程,首先指定抽取任務(wù);其次進行中文分詞、命名實體識別;再進行實體定位;生成候選實體關(guān)系對;接著使用DDlib為候選詞和候選關(guān)系自動生成特征;加載標(biāo)注的數(shù)據(jù)源;然后基于規(guī)則的遠(yuǎn)程監(jiān)督自動標(biāo)注;模型訓(xùn)練;最終輸出結(jié)果。
總結(jié)一下:DeepDive主要針對關(guān)系抽取,在指定的關(guān)系抽取中效果比較理想,在實體確定后可以很好地進行關(guān)系抽取。同時也支持中文關(guān)系抽取,僅需要引入中文相關(guān)的基礎(chǔ)處理工具即可。不足之處在于未提供專門的針對概念、實體和事件抽取的支持,同時需要大量的標(biāo)注語料支持,并通過人工設(shè)置標(biāo)注規(guī)則。
對于文本信息抽取的方法,目前還沒有統(tǒng)一的實現(xiàn)各類信息抽取的現(xiàn)成工具。 我們采用的是把現(xiàn)有的工具進行集成,依據(jù)抽取任務(wù)使用不同的工具,包括
-
NLP分詞、命名實體識別工具:NLPIR、LTP、FudanNLP、Stanford NLP……
-
關(guān)系抽取工具:DeepDive
而對于行業(yè)抽取任務(wù),需要針對性的方法來完成,通常采用的做法是基于已有的結(jié)構(gòu)化知識進行遠(yuǎn)程監(jiān)督學(xué)習(xí)。
接下來介紹事件抽取
事件抽取可以分為預(yù)定義事件抽取和開放域事件抽取,行業(yè)知識圖譜中主要為預(yù)定義事件抽取。 我們通常會采用采用模式匹配方法,包括三個步驟:
準(zhǔn)備事件觸發(fā)詞表
候選事件抽取:尋找含有觸發(fā)詞的句子
事件元素識別:根據(jù)事件模版抽取相應(yīng)的元素
下圖為創(chuàng)投知識圖譜融資事件抽取的示例,事件元素識別的過程與包裝器模板配置過程基本相似
知識抽取實踐過程中,我們采用的是一種稱為“多策略學(xué)習(xí)”的方法;“多策略”體現(xiàn)在多數(shù)據(jù)源、多目標(biāo)類型、多抽取方法,總體原則是:利用不同數(shù)據(jù)源之間的冗余信息,使用較易抽取的信息(結(jié)構(gòu)化數(shù)據(jù)庫)來輔助抽取那些不易抽取的信息。
下圖是多策略學(xué)習(xí)方法的整體過程示意圖:
以下為我們的多策略學(xué)習(xí)方法示例
知識融合
知識圖譜中的知識融合是一件非常復(fù)雜的工作,包括數(shù)據(jù)模式層(概念、概念的上下位關(guān)系、概念的屬性)的融合與數(shù)據(jù)層的融合。行業(yè)知識圖譜的數(shù)據(jù)模式通常采用自頂向下和自底向上結(jié)合的方式,因此基本都經(jīng)過人工的校驗,保證了可靠性;所以知識融合的關(guān)鍵任務(wù)在數(shù)據(jù)層的融合。對于數(shù)據(jù)層的融合,為保證數(shù)據(jù)的質(zhì)量,通常在知識抽取環(huán)節(jié)中進行控制,減少知識融合過程的難度。
下面直接介紹我們的實踐方案
數(shù)據(jù)模式層融合方法:
行業(yè)知識圖譜的數(shù)據(jù)模式層通常是由專家人工構(gòu)建或從可靠的結(jié)構(gòu)化數(shù)據(jù)中映射得到的,通常在映射時會通過設(shè)置融合的規(guī)則來確保數(shù)據(jù)的統(tǒng)一。
數(shù)據(jù)層的融合:
實體合并,在構(gòu)建行業(yè)知識圖譜時,實體優(yōu)先從結(jié)構(gòu)化的數(shù)據(jù)中獲取;
對于結(jié)構(gòu)化的數(shù)據(jù),通常有對實體進行唯一標(biāo)識的主鍵,因此在進行知識抽取時即可設(shè)定實體合并的依據(jù);
從非結(jié)構(gòu)化數(shù)據(jù)中抽取的實體,同樣使用設(shè)置合并條件的規(guī)則來完成實體的合并;例如:企業(yè)合并可以通過企業(yè)名稱直接合并;企業(yè)高管合并可以采用人名相同+同一企業(yè)進行合并,因為同一家企業(yè)高管中同名的概率是極低的。
實體屬性與關(guān)系的合并,具有時態(tài)特性的屬性,我們可以使用新的數(shù)據(jù)覆蓋老的數(shù)據(jù);其次可依據(jù)數(shù)據(jù)源的可靠性進行選取,通常結(jié)構(gòu)化數(shù)據(jù)源中的質(zhì)量較高。
以人物實體合并為例來看下數(shù)據(jù)層融合的方法過程:
知識存儲
針對知識存儲,其主要理念就是“使用不同的存儲來實現(xiàn)不同類型數(shù)據(jù)的存儲和使用”。
知識圖譜是基于圖的數(shù)據(jù)結(jié)構(gòu),其存儲方式主要有兩種方式:RDF存儲和?圖數(shù)據(jù)庫(Graph Database)。Wikipedia對兩者的解釋分別如下:
A triplestore or RDF store is a purpose-built database for the storage and retrieval of triples through semantic queries. A triple is a data entity composed of subject-predicate-object. [Wikipedia]
A graph database has a more generalized structure than a triplestore, using graph structures with nodes, edges, and properties to represent and store data. [Wikipedia]
下圖為db-engine中常見圖數(shù)據(jù)存儲的排名,里面的多個Graph DBMS我們都有介紹過。
如何選用合適的圖數(shù)據(jù)存儲呢?下列指標(biāo)是我們重點考量的:
-
數(shù)據(jù)存儲支持
-
數(shù)據(jù)操作和管理方式
-
支持的圖結(jié)構(gòu)
-
實體和關(guān)系表示
-
查詢機制
針對主流圖數(shù)據(jù)存儲我們整理了如下表格,從數(shù)據(jù)存儲支持、數(shù)據(jù)操作和管理方式、支持的圖結(jié)構(gòu)、實體和關(guān)系表示以及查詢機制角度來進行全面的比較(數(shù)據(jù)可能不全是最新的)。
介紹一下Neo4j,它是當(dāng)前圖數(shù)據(jù)存儲排名第一的圖數(shù)據(jù)庫,它具有支持原生圖存儲和處理、支持ACID事務(wù)處理的特點,同時neo4j不使用schema,因此在開始添加數(shù)據(jù)之前,你是不需要定義概念、屬性和關(guān)系的,但這樣帶來的不足之處在于,在企業(yè)數(shù)據(jù)管理場景下如不使用 Schema則難以從整體把握數(shù)據(jù);同時neo4j也不支持時態(tài)信息的存儲,非企業(yè)版本會受到數(shù)據(jù)量、查詢速度等方面的限制。
我們的大規(guī)模知識圖譜存儲解決方案如下:
基礎(chǔ)存儲
可按數(shù)據(jù)場景選擇使用關(guān)系數(shù)據(jù)庫、NoSQL數(shù)據(jù)庫及內(nèi)存數(shù)據(jù)庫。
基礎(chǔ)存儲保證可擴展、高可用
數(shù)據(jù)分割
屬性表:依據(jù)數(shù)據(jù)類型劃分
基本類型:整數(shù)表、浮點數(shù)表、日期類型表、…
集合類型:List型表、Range型表、Map型表、…
大屬性單獨列表:例如數(shù)量超過10M的屬性單獨列表
緩存與索引
使用分布式Redis 作為緩存,按需對數(shù)據(jù)進行緩存。
對三元組表按需進行索引,最多情況下可建立九重索引。
善于使用現(xiàn)在成熟存儲
使用ElasticSearch 實現(xiàn)數(shù)據(jù)的全文檢索
結(jié)構(gòu)固定型的數(shù)據(jù)可使用關(guān)系數(shù)據(jù)庫或NoSQL
對于非關(guān)系型的數(shù)據(jù)盡量不入圖存儲,避免形成大節(jié)點
非關(guān)系型的數(shù)據(jù),使用適合的數(shù)據(jù)存儲機器進行存儲,通過實體鏈接的方式實現(xiàn)與圖譜數(shù)據(jù)的關(guān)聯(lián)。
不直接在圖存儲中進行統(tǒng)計分析計算
對于需要進行統(tǒng)計分析計算的數(shù)據(jù),需要導(dǎo)出到合適的存儲中進行。
前面還提到知識圖譜中的時態(tài)信息,時態(tài)信息的需求與技術(shù)一直是伴隨著數(shù)據(jù)庫技術(shù)的發(fā)展而產(chǎn)生和發(fā)展的,下圖為時態(tài)數(shù)據(jù)庫與其他類型數(shù)據(jù)庫相比的發(fā)展趨勢:
可以發(fā)現(xiàn)時態(tài)數(shù)據(jù)庫的發(fā)展趨勢遠(yuǎn)遠(yuǎn)高于與其他數(shù)據(jù)存儲方式。
知識圖譜中的時態(tài)信息包含事實的生成時間和某事實的有效時間段,比如融資事件的事件。
因此在知識圖譜時態(tài)信息存儲的實踐應(yīng)用中,我們使用了歷史數(shù)據(jù)庫,用于記錄事實的有效時間,用有限的數(shù)據(jù)冗余實現(xiàn)數(shù)據(jù)時態(tài)信息的應(yīng)用。
具體實踐原則如下:
-
在基礎(chǔ)知識圖譜的基礎(chǔ)上,構(gòu)建針對時態(tài)數(shù)據(jù)處理的中間件;
-
對于特定類型的時序型數(shù)據(jù),采用其它的存儲機制進行存儲。
關(guān)于知識圖譜數(shù)據(jù)存儲的更詳細(xì)的內(nèi)容,請參看之前公眾號發(fā)布的詳細(xì)專題文章。
知識計算
知識計算的范疇同樣非常廣,這里僅以圖挖掘計算、基于本體的推理以及基于規(guī)則的推理三個最常用的技術(shù)進行介紹。
一)圖挖掘計算
前面講到知識圖譜是一種基于圖的數(shù)據(jù)結(jié)構(gòu),因此它自然會集成實現(xiàn)基本圖算法。
列舉一些我們常用的圖算法:
圖遍歷:廣度優(yōu)先遍歷、深度優(yōu)先遍歷
最短路徑查詢:Dijkstra(迪杰斯特拉算法)、Floyd(弗洛伊德算法)
路徑探尋:給定兩個或多個節(jié)點,發(fā)現(xiàn)它們之間的關(guān)聯(lián)關(guān)系
權(quán)威節(jié)點分析:PageRank算法
族群發(fā)現(xiàn):最大流算法
相似節(jié)點發(fā)現(xiàn):基于節(jié)點屬性、關(guān)系的相似度算法
其中權(quán)威節(jié)點分析做過社交網(wǎng)絡(luò)分析的人應(yīng)該都知道,可以用來做社交網(wǎng)絡(luò)里的權(quán)威人物分析,我們在創(chuàng)投知識圖譜中用來做權(quán)威投資機構(gòu)的發(fā)現(xiàn)。
族群發(fā)現(xiàn)算法一般用來在社交網(wǎng)絡(luò)中主題社區(qū)的發(fā)現(xiàn),在這里我們同樣可以用來識別企業(yè)知識圖譜中的派系(阿里系、騰訊系)。
相似節(jié)點發(fā)現(xiàn)應(yīng)用就更加廣泛了,在企業(yè)知識圖譜中可以做相似企業(yè)的發(fā)現(xiàn),這里有個很重要的實際應(yīng)用場景,可以利用相似企業(yè)進行精準(zhǔn)的獲客營銷。
二)基于本體的推理
本體推理基本方法包括:
-
基于表運算及改進的方法:FaCT++、Racer、 Pellet Hermit等
-
基于一階查詢重寫的方法(Ontology based data access,基于本體的數(shù)據(jù)訪問)
-
基于產(chǎn)生式規(guī)則的算法(如rete):Jena 、Sesame、OWLIM等
-
基于Datalog轉(zhuǎn)換的方法如KAON、RDFox等
-
回答集程序Answer set programming
這里我們介紹一個本體知識推理工具:RDFox,它的特點如下:
-
支持共享內(nèi)存并行OWL 2 RL推理
-
三元組數(shù)據(jù)可以導(dǎo)出為Turtle文件,規(guī)則文件可以導(dǎo)出為RDF數(shù)據(jù)記錄文件;全部數(shù)據(jù)內(nèi)容可以導(dǎo)出為二進制文件,可完全恢復(fù)數(shù)據(jù)存儲狀態(tài)
-
支持Java、Python多語言APIs訪問,并且 RDFox 還支持一種簡單的腳本語言與系統(tǒng)的命令行交互
由于RDFox是完全基于內(nèi)存的,所以對硬件的要求較高。
當(dāng)然基于本體的知識推理應(yīng)用也非常的多,比如我們在實際場景中的沖突檢測。因為不管是手動構(gòu)建,還是自動構(gòu)建知識圖譜,都會碰到這樣一個問題:或者數(shù)據(jù)來源不同,或者構(gòu)建的人員不同、方法不同,這就會不可避免的導(dǎo)致一些沖突,這些沖突自身很難直觀的去發(fā)現(xiàn),但是可以利用知識圖譜里面的沖突檢測去發(fā)現(xiàn)存在的有矛盾的、有沖突的知識。
下圖為我們從不同渠道獲取花椒直播融資金額的沖突檢測示例
三)基于規(guī)則的推理
基于規(guī)則的推理是在知識圖譜基礎(chǔ)知識的基礎(chǔ)上,專家依據(jù)行業(yè)應(yīng)用的業(yè)務(wù)特征進行規(guī)則的定義,這在業(yè)務(wù)應(yīng)用中是非常常見的。
介紹一下我們常用的Drools(因被JBOSS收購,現(xiàn)已更名為JBoss Rules),它是為Java量身定制的基于Charles Forgy的RETE算法的規(guī)則引擎的實現(xiàn),使用了OO接口的RETE,使得商業(yè)規(guī)則有了更自然的表達(dá),其推理的效率也比較高。
結(jié)合規(guī)則引擎工具,基于基礎(chǔ)知識與所定義的規(guī)則,執(zhí)行推理過程給出推理結(jié)果。
以下代碼為我們使用drools定義的一個高風(fēng)險企業(yè)規(guī)則
知識應(yīng)用
關(guān)于知識應(yīng)用我們主要介紹以下三個方向的關(guān)鍵技術(shù):語義搜索、智能問答和可視化輔助決策。
一)語義搜索
知識圖譜提出的初衷即為解決搜索的準(zhǔn)確率問題,改進搜索質(zhì)量;由于傳統(tǒng)基于關(guān)鍵詞的檢索完全不考慮語義信息,因此傳統(tǒng)的搜索主要面臨兩個難題:
自然語言表達(dá)的多樣性
自然語言的歧義
對此我們的解決方案為利用實體鏈接技術(shù),進行基于知識圖譜的語義搜索。
先看下目前常見的兩款實體鏈接工具
Wikipedia Miner,在應(yīng)用中集成維基百科的數(shù)據(jù)。
該工具用來分析有歧義的實體的上下文和發(fā)現(xiàn)出現(xiàn)在維基百科里的概念。
另一個廣泛使用的基于維基百科的語義標(biāo)注系統(tǒng)是DBpedia Spotlight,這是一個免費的可定制的web系統(tǒng),它通過DBpeida的URIs標(biāo)注文本,其目標(biāo)是DBpedia本體。
市面上目前現(xiàn)有的實體鏈接工具大部分都是針對百科類的知識庫工作的,基本上不支持中文的處理。
在我們具體實踐過程中采用了如下三種實體鏈接方法:
基于向量模型相似度計算的實體鏈接方法
基于知識圖譜語義擴展的實體鏈接方法
基于propagation計算相似度的實體鏈接方法
實體鏈接的基本方法過程如下圖:
該視頻為基于實體連接的創(chuàng)投數(shù)據(jù)語義標(biāo)注演示:
實體鏈接完成后,我們可以把它引入到基于知識圖譜的語義搜索中。語義搜索是對傳統(tǒng)搜索的一種改變,其發(fā)展的最終形態(tài)為智能問答。
最后看一個創(chuàng)投知識圖譜中的語義搜索示例,在PlantData平臺中搜索“北京小桔科技”實體,會識別出這是一個企業(yè)實體,系統(tǒng)會自動返回企業(yè)相關(guān)的融資狀況,高管信息以及鏈接的新聞數(shù)據(jù)信息。
二)智能問答
智能問答是指用戶以自然語言提問的形式提出信息查詢需求,系統(tǒng)對用戶查詢意圖分析與理解,從各種數(shù)據(jù)資源中自動查詢檢索出最符合用戶意圖的答案。
以下為基于知識圖譜的自動問答系統(tǒng)的基本過程流程圖
智能問答現(xiàn)在的方法主要有這么四類
1. 基于信息檢索的方法
基于信息檢索的方法首先利用中文分詞,命名實體識別等自然語言處理工具找到問句中所涉及到的實體和關(guān)鍵詞,然后去知識資源庫中去進行檢索。它的優(yōu)點在于實現(xiàn)簡單,應(yīng)用面廣,在大部分場景下均可得到結(jié)果。缺點在于要求答案中必須至少包含問句中的一個字或詞,所以不如語義解析方法精確。改進的方法可以利用基于知識圖譜的知識進行語義擴充,提高匹配率,同時基于知識圖譜進行檢索時的語義消岐。
2. 基于語義分析的方法
基于語義分析的方法非常符合人們的直覺,它將一個自然語言形式的問句,按照特定語言的語法規(guī)則,解析成語義表達(dá)式,在得到語義表達(dá)式之后,我們可以非常容易地將其轉(zhuǎn)化為某種數(shù)據(jù)庫的查詢語言。最常用的方法是利用組合范疇語法(CCG),CCG的核心是詞匯,首先自然語言問句的詞匯被映射到語義表達(dá)式中的詞匯,然后按照特定的語法規(guī)則將匯組合起來,進而得到了最終的語義表達(dá)式。我們的做法是在特定的領(lǐng)域里邊,基于知識圖譜的實體、屬性、概念等進行詞法解析與映射,然后基于圖結(jié)構(gòu)進行語法規(guī)則匹配,這就相當(dāng)于是圖里面的子圖查詢匹配問題。
3. 基于規(guī)則的專家系統(tǒng)方法
專家系統(tǒng)是一個具有大量的專門知識與經(jīng)驗的程序系統(tǒng),它應(yīng)用人工智能技術(shù)和計算機技術(shù),根據(jù)某領(lǐng)域一個或多個專家提供的知識和經(jīng)驗,進行推理和判斷,模擬人類專家的決策過程,以便解決那些需要人類專家處理的復(fù)雜問題。
在智能問答系統(tǒng)中,不是所有的問題都可以利用現(xiàn)存的知識庫直接進行回答,有很多隱含知識我們需要通過已經(jīng)抽取到的知識進行推理回答。因此基于知識推理的方法通常不單獨使用,而是與其它的方法進行結(jié)合,增強對復(fù)雜問題回答的支持。
4. 基于深度學(xué)習(xí)的方法
近幾年卷積神經(jīng)網(wǎng)絡(luò)(CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)在NLP領(lǐng)域任務(wù)中表現(xiàn)出來的語言表示能力,越來越多的研究人員嘗試深度學(xué)習(xí)的方法完成問答領(lǐng)域的關(guān)鍵任務(wù),包括問題分類(question classification),語義匹配與答案選擇(answer selection),答案自動生成(answer generation)。此外,互聯(lián)網(wǎng)用戶為了交流信息而產(chǎn)生的大規(guī)模諸如微博回復(fù)、社區(qū)問答對的自然標(biāo)注數(shù)據(jù),給訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)模型提供了可靠的數(shù)據(jù)資源,并很大程度上解決自動問答研究領(lǐng)域的數(shù)據(jù)匱乏問題。
該方法優(yōu)點是實現(xiàn)“端到端”的問答:把問題與答案均使用復(fù)雜的特征向量表示,使用深度學(xué)習(xí)來計算問題與答案的相似度。不足之處在于不支持復(fù)雜的查詢;需要比較長的訓(xùn)練過程,不適用于現(xiàn)實應(yīng)用場景中的知識更新后的實時查詢。
知識圖譜應(yīng)該算是自動問答里面的大腦,我們在實踐過程中選用的最佳方法是基于語義解析的方法加上基于信息檢索的方法。
這樣做的好處在于基于語義解析的方法可解釋性強,并且能夠方便地轉(zhuǎn)換成知識圖譜的查詢,給出明確的答案;因此對于用戶輸入,首先使用基于語義解析的方法進行回答;
而基于信息檢索的方法應(yīng)用面廣,因此當(dāng)語義解析方法無法給出結(jié)果時,則使用信息檢索的方法進行回答。
下面兩張圖是我們在創(chuàng)投行業(yè)應(yīng)用里實踐智能問答的示例,首先我們會人工配置語義解析的模板,其次對用戶的輸入進行分詞匹配,與知識圖譜里面的元素進行映射,即知識圖譜通用的子圖匹配模板。
三)可視化輔助決策
首先介紹兩個比較常見的可視化工具D3.js和ECharts。
D3.js全稱Data-Driven Documents,是一個用動態(tài)圖形顯示數(shù)據(jù)的Java庫,一個數(shù)據(jù)可視化工具,它提供了各種簡單易用的函數(shù),大大方便了數(shù)據(jù)可視化的工作。
ECharts是一款由百度前端技術(shù)部開發(fā)的,同樣基于Java的數(shù)據(jù)可視化圖標(biāo)庫。(個人覺得這是目前百度最有價值的產(chǎn)品)它提供大量常用的數(shù)據(jù)可視化圖表,底層基于ZRender(一個全新的輕量級canvas類庫),創(chuàng)建了坐標(biāo)系,圖例,提示,工具箱等基礎(chǔ)組件,并在此上構(gòu)建出折線圖(區(qū)域圖)、柱狀圖(條狀圖)、散點圖(氣泡圖)、餅圖(環(huán)形圖)、K線圖、地圖、力導(dǎo)向布局圖以及和弦圖,同時支持任意維度的堆積和多圖表混合展現(xiàn)。
這兩款都是非常優(yōu)秀的可視化工具,但是目前還沒有一款面向知識圖譜的可視化工具,在選擇知識圖譜可視化的時候,需要思考以下三點問題:
依托的設(shè)備及環(huán)境是什么?
需要展現(xiàn)數(shù)據(jù)的什么特點?
數(shù)據(jù)量過大(小)時我該怎么做?
我們最終選用集成現(xiàn)有的可視化工具,實現(xiàn)知識圖譜的可視化。以下是PlantData的圖譜可視化基本組件,包括圖譜展示、統(tǒng)計分析等。
這是PlantData平臺在創(chuàng)投圖譜中進行可視化應(yīng)用的演示視頻:
?
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/articles/9682473.html
總結(jié)
以上是生活随笔為你收集整理的CCKS-2017 行业知识图谱构建与应用-下篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3根据地址批量获取百度地图经
- 下一篇: 数据挖掘导论读书笔记7 Apriori算