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