李子恒 葉育鑫 曹玲玲劉思培
(1.吉林大學(xué)a.計算機科學(xué)與技術(shù)學(xué)院;b.符號計算與知識工程教育部重點實驗室,長春 130012;2.北方信息控制研究院集團有限公司 總體部,南京 211111)
Google 為了提高搜索引擎回復(fù)答案的質(zhì)量,以及提升用戶進行查詢時的效率,于2012 正式推出了知識圖譜(Knowledge Graph)[1]。在已知的知識圖譜中,數(shù)據(jù)通常是以RDF(Resource Description Framework)三元組的形式進行存儲[2],并使用基于RDF的查詢語言SPARQL(Simple Protocol and RDF Query Language)[3]對知識圖譜進行查詢。
筆者利用SPARQL 查詢語言,并使用基于模板匹配的查詢語句轉(zhuǎn)換算法使用戶能直接對知識圖譜進行查詢,抽取所需的業(yè)務(wù)子圖。抽取到滿足條件的數(shù)據(jù)后,根據(jù)制定好的數(shù)據(jù)產(chǎn)品生成規(guī)則生成用戶最終需要的數(shù)據(jù)產(chǎn)品。如使用基于指針生成網(wǎng)絡(luò)(Pointer-generator networks)模型所提出的KG2TEXT 模型進行自然語言的生成;使用SSRS(Microsoft SQL Server Reporting Services)生成各類型圖表;采用OpenXML SDK 創(chuàng)建Word 格式模板,生成報告文檔等。
知識圖譜相比其他的知識表示方法具有更優(yōu)秀的表達能力、更靈活的建模能力,不僅對人類易于識別,而且對機器也易于處理,自身還具備語義信息。利用這些優(yōu)勢,知識圖譜在語義搜索、智能問答、個性化推薦和輔助決策等領(lǐng)域都得到了應(yīng)用,且取得不錯的效果。目前國內(nèi)外的知識圖譜應(yīng)用主要有:互聯(lián)網(wǎng)知識圖譜,如FreeBase、DBpedia、OpenKg、zhishi.me;搜索引擎,如Magi;語義搜索,如百度知識圖譜;問答系統(tǒng),如watson 問答系統(tǒng);輔助決策,如軍事圖譜輔助作戰(zhàn)指揮、金融反欺詐、信貸審查等。
用戶可以利用知識圖譜更好更精確地查找到自己所需要的信息。當(dāng)在知識圖譜中查詢有關(guān)尼米茲號航空母艦這個實體的相關(guān)信息時,可以得到如下的子圖(見圖1)。
知識圖譜常以RDF的形式進行存儲,RDF 即資源描述框架,可以描述資源之間的關(guān)系以及資源具有的特性。W3C 在1999 年提出RDF[4],為應(yīng)用程序之間在Web 上交換元數(shù)據(jù)提供一個基礎(chǔ)的結(jié)構(gòu)。在知識圖譜中稱一個RDF 陳述為一條知識,RDF 陳述是指通過屬性(Predicate)和對應(yīng)屬性值(Object)對特定資源(Subject)進行描述,如圖2 所示。
知識圖譜構(gòu)建一般遵循如下幾個步驟:1) 知識獲取,采用一系列自動或半自動的技術(shù)手段從多源異構(gòu)數(shù)據(jù)(結(jié)構(gòu)化的數(shù)據(jù)庫、半結(jié)構(gòu)化的數(shù)據(jù)日志、非結(jié)構(gòu)化的文本)中抽取知識;2) 知識融合,將抽取出的知識進行融合,保持知識的一致性;3) 知識存儲,一般使用圖數(shù)據(jù)庫對知識進行存儲,將實體視為節(jié)點,關(guān)系視為邊,利用圖數(shù)據(jù)庫可以明確清晰地表達實體之間的聯(lián)系。知識圖譜構(gòu)建完成后,通常使用基于RDF的查詢語言對知識圖譜進行查詢。本系統(tǒng)利用SPARQL 查詢所需的業(yè)務(wù)子圖。SPARQL 以RDF 圖的三元組匹配為基礎(chǔ),對任意映射到RDF 模型的數(shù)據(jù)資源進行訪問,并成為W3C的推薦標(biāo)準(zhǔn)。
SPARQL 是以RDF 圖的三元組匹配為基礎(chǔ)的查詢語言。以尼米茲號航空母艦的RDF 數(shù)據(jù)為例:
該系統(tǒng)利用SPARQL的查詢語言規(guī)范部分為查詢模板設(shè)計SPARQL 查詢語句。據(jù)2.1 節(jié)描述,用戶為獲得所需要的信息,需要編寫特定格式的查詢語句,但用戶并不具備相應(yīng)專業(yè)知識。為此該系統(tǒng)使用PAROT 架構(gòu)[5],針對常用的查詢語句給出相應(yīng)的模板規(guī)則生成所需的SPARQL 查詢語句,使用戶能直接利用自然語言進行查詢。該方法主要包括以下幾個步驟:1) 從自然語言查詢中確定目標(biāo)單詞;2) 從自然語言查詢中識別出三元組,由于是用戶查詢,成為用戶三元組;3) 將用戶三元組轉(zhuǎn)變成本體三元組;4) 構(gòu)造SPARQL 查詢語句。
2.2.1 確定目標(biāo)單詞
給定以自然語言提交的用戶查詢,首要任務(wù)是從查詢中確定目標(biāo)單詞。目標(biāo)單詞是一個變量,將直接放置在SPARQL 查詢中的SELECT 關(guān)鍵字之后。為了幫助識別用戶提交的查詢中的目標(biāo)詞,筆者使用了類型依賴解析器,如Stanford typed dependency parser[6]。依賴性解析器提供了用戶提交的查詢中單詞之間存在的語法關(guān)系的簡單描述。為了在解析的查詢中提取目標(biāo)詞,筆者將查詢分為兩類,即以WH 開始的問題和不以WH 開頭的問題。
第1 類:此類別由以WH 開頭的查詢組成(即:what,when,where,who,whom,which,whose,why,how)。為在此類查詢中識別目標(biāo)詞,筆者使用一些規(guī)則集,例子如下
上述規(guī)則1 和規(guī)則2 適用于非關(guān)系查詢,規(guī)則1 適用于查詢名詞和其他任何名詞之間不存在合取的關(guān)系,規(guī)則2 處理對多個名詞進行查詢,名詞之間以and 等詞連接,比如What is the area and population of the most populated state ?,就要同時對area 和population 進行查詢。還有其他規(guī)則適用于關(guān)系查詢,它們通過識別用戶提交的查詢中的處于被動語態(tài)的主語標(biāo)記查詢中的目標(biāo)單詞。
2.2.2 識別用戶三元組
SPARQL 查詢由一組稱為圖模式的三元組模式(基于RDF)組成,這種圖模式可以直接放置在SPARQL 查詢中的目標(biāo)變量之后或WHERE 關(guān)鍵字之后。三元組模式和RDF 陳述相同,其中Subject,Predicate,Object 都可以是變量。本節(jié)目的是處理用戶提交的查詢,以識別出可用于構(gòu)造SPARQL的潛在三元組。為了從提交的查詢中識別用戶三元組,將其分類為:基于關(guān)系短語的查詢和基于非關(guān)系短語的查詢。
基于關(guān)系的用戶查詢是至少包含連接兩個名詞的關(guān)系短語的查詢。連接兩個名詞的關(guān)系短語可以是一個動詞,一個直接跟在介詞后面的動詞,或一個跟在名詞、形容詞或副詞后面以介詞結(jié)尾的動詞。非關(guān)系查詢是指沒有連接任何名詞的關(guān)系短語的查詢。在進行識別用戶三元組,遇到復(fù)合查詢語句,可使用功能checkCompound 評估句子是否為復(fù)合句,如果是復(fù)合句再利用適合規(guī)則將查詢拆成兩個查詢,如上述例子會被拆為What is the area of the most populated state ?和What is the population of the most populated state ?最后再通過GenerateTriples 函數(shù)識別用戶三元組。
2.2.3 將用戶三元組轉(zhuǎn)換成本體三元組
用戶三元組中的單詞需要映射到對應(yīng)本體中的實體。例如,用戶三元組{State state_of ?x}應(yīng)轉(zhuǎn)換為本體三元組{State:hasPopulation ?x}。為了達到此目的,本系統(tǒng)構(gòu)造了一個詞典幫助實現(xiàn)由用戶術(shù)語到本體術(shù)語的轉(zhuǎn)換。
2.2.4 構(gòu)造查詢語句
在將用戶三元組轉(zhuǎn)換為本體三元組之后,就生成SPARQL 查詢語句。SPARQL 查詢的一般語法如下:
一般將自然語言生成分為3 階段[7-10]。1) 內(nèi)容規(guī)劃:要表達什么。2) 句子規(guī)劃:篇章結(jié)構(gòu)。3) 表層實現(xiàn):如何表達。該系統(tǒng)通過對應(yīng)的SPARQL 查詢語句查找知識圖譜獲取語義知識,使用基于指針生成網(wǎng)絡(luò)(Pointer-generator networks)的自然語言生成技術(shù)[11-13],生成相應(yīng)文字。
該系統(tǒng)使用基于指針生成網(wǎng)絡(luò)模型所提出的KG2TEXT 模型進行自然語言的生成。該模型集成了多變覆蓋損失函數(shù)以及有監(jiān)督注意力機制。其中多變覆蓋損失函數(shù)會強制模型覆蓋實體的每個屬性值,因此自動生成的描述語句將嘗試包含實體的每個輸入屬性文字,以避免信息丟失。有監(jiān)督注意力機制則能顯式指導(dǎo)模型的軟切換過程,以從源輸入生成單詞或復(fù)制實體的屬性值。將SPARQL 查詢語句得到的業(yè)務(wù)子圖輸入到模型中,即可得到相應(yīng)的自然語言。KG2TEXT的整體架構(gòu)圖如圖3 所示,左邊是雙向GRU 層編碼器端,右邊是解碼器端。
圖3 KG2TEXT 模型的整體架構(gòu)Fig.3 The overall architecture of the KG2TEXT model
該系統(tǒng)使用SSRS 報表工具創(chuàng)建各類型圖表(表格、圖形等)[14],是一種新型報表平臺。筆者可以通過SPARQL 查詢語言從知識圖譜中獲取到相應(yīng)的RDF 三元組并存儲到關(guān)系數(shù)據(jù)庫中。而且SSRS 還為用戶提供了完整的服務(wù)、工具和API,任何人都可以輕松地使用SSRS 開發(fā)、設(shè)計、管理報表(見圖4)。通過應(yīng)用程序編程接口,還可以很容易地將報表以Word 格式導(dǎo)出,并將其內(nèi)容插入到模板中指定名稱的書簽位置。
圖4 在SSRS 中設(shè)計的簡單圖表Fig.4 Simple diagrams designed in the SSRS
報告文檔生成首先要為特定報告生成對應(yīng)模板,將特定報告中具有統(tǒng)一格式的部分,比如各級標(biāo)題及正文的文字的字體、字號、顏色,圖片和表格的出現(xiàn)位置、排列方式等等按照用戶需要的格式進行編輯,作為該類報告的模板。
該系統(tǒng)采用OpenXML SDK 創(chuàng)建Word 格式模板。OpenXML SDK 是一個托管類庫,其中的Wordprocessing Document 類封裝了Word 文檔,即WordprocessingML 文件。要對Word 文檔進行操作,需要先實例化此類。
在OpenXML SDK 中WordprocessingML 元素與Wordprocessing Document的類屬性對應(yīng)如表1 所示。利用表1 中的各類元素,可以生成特定的Word 格式模板,實現(xiàn)圖文報表的快速生成。圖文報表示例如圖5 所示。
表1 WordprocessingML 元素與Wordprocessing 類元素對應(yīng)表Tab.1 WordprocessingML elements and Wordprocessing class elements correspondence table
圖5 關(guān)于軍事目標(biāo)識別的可視化展示平臺的圖文報表Fig.5 Graphic reports on the visual display platform for military target recognition
該系統(tǒng)實現(xiàn)了以知識圖譜為數(shù)據(jù)源,根據(jù)實際業(yè)務(wù)需求制定業(yè)務(wù)數(shù)據(jù)抽取與組織規(guī)則,利用制定的對應(yīng)的SPARQL 模板從知識圖譜中抽取符合規(guī)則的子圖。同時根據(jù)筆者指定的數(shù)據(jù)產(chǎn)品生成規(guī)則,從抽取的子圖中生成數(shù)據(jù)產(chǎn)品。當(dāng)需要生成文本時,利用從子圖中提取到的語義知識,通過基于指針生成網(wǎng)絡(luò)的自然語言生成方法生成語言流暢,語義正確的文本;當(dāng)需要圖表時,通過SSRS 報表工具創(chuàng)建數(shù)據(jù)報表,并且很容易開發(fā)設(shè)計圖表及導(dǎo)出;當(dāng)需要生成報告文檔時,采用OpenXML SDK 對Word 格式文件進行操作,只需給定好文檔模板,給定各類文檔中圖表及文本對應(yīng)的位置,最后能快速自動生成一個報告文檔。本系統(tǒng)能大幅度減少人為工作量,提高效率。