基于領(lǐng)域本體的語義檢索的實現(xiàn)
6.4 基于領(lǐng)域本體的語義檢索的實現(xiàn)
語義檢索的實質(zhì)是使得計算機能夠“理解”用戶的檢索意圖,核心技術(shù)是以領(lǐng)域本體的概念關(guān)系為基礎(chǔ),通過對本體中的概念關(guān)系進行解析和判斷,推理出檢索詞之間的隱含語義關(guān)系,將檢索從目前的關(guān)鍵詞字面檢索提高到語義檢索的層面。
本文采用Java語言開發(fā)了一個基于領(lǐng)域本體的語義檢索系統(tǒng),該系統(tǒng)所采用的開發(fā)環(huán)境是Windows 2000,JDK 1.5,開發(fā)工具為JBuilder 2005以及語義開發(fā)包Jena 2.3。該語義檢索系統(tǒng)可以初步對用戶的檢索式進行處理,判斷其中具有檢索意義的檢索詞之間的語義關(guān)系,使得檢索詞之間不再是孤立的狀態(tài),推理用戶的檢索意圖,最終從語義的層面對用戶的檢索式進行處理,最終返回檢索結(jié)果。通過實驗發(fā)現(xiàn),這種檢索機制相比傳統(tǒng)的關(guān)鍵詞檢索可以發(fā)現(xiàn)潛在的、隱含的語義結(jié)果,具有較高的精確率和召回率。
6.4.1 總體設(shè)計
基于領(lǐng)域本體的語義檢索系統(tǒng)主要有以下四個模塊組成:
(1)提問詞分析模塊
提問詞分析模塊的主要作用是對用戶的提問式進行處理,過濾停用詞,抽取具有檢索意義的實詞并且判斷用戶的提問中心。
(2)語義推理模塊
語義推理模塊的主要作用是根據(jù)用戶的提問詞進行語義關(guān)系判斷,判斷出各個提問式之間隱含的語義關(guān)系,明確用戶的真正檢索意圖。
(3)查詢分析模塊
查詢分析模塊是在語義推理的基礎(chǔ)上,根據(jù)語義關(guān)系,自動構(gòu)建RDQL查詢語句,對本體庫進行查詢,并且把查詢結(jié)果返回給用戶。
(4)本體管理模塊
本體管理模塊主要是本體的瀏覽、導(dǎo)航和可視化顯示作用,通過本體瀏覽模塊可以清晰地發(fā)現(xiàn)概念之間的關(guān)系,可視化組件可以對農(nóng)學(xué)本體中的概念關(guān)系以動態(tài)圖的形式直觀展現(xiàn)出來。
整個語義檢索系統(tǒng)的模塊圖如圖6-9所示。
圖6-9 基于領(lǐng)域的語義檢索系統(tǒng)模塊圖
6.4.2 技術(shù)實現(xiàn)
1 提問詞分析模塊
提問詞分析模塊主要是對用戶的輸入的檢索式進行初步處理,抽取其中具有檢索意義的實詞,同時對檢索詞進行標注,判斷出用戶的提問中心,為后續(xù)的語義關(guān)系推理做好準備工作。
(1)抽詞
用戶的檢索提問通常為自然語言,其中通常含有一些不具有檢索意義的虛詞。抽詞模塊首先對用戶的檢索式進行處理,過濾掉提問式中的停用詞,抽取其中有檢索意義的實詞。例如,用戶輸入“《齊民要術(shù)》的作者是誰?”這樣一個提問式,經(jīng)過處理之后形成“齊民要術(shù)作者”關(guān)鍵詞序列。
(2)檢索詞標注
利用本體中的類別信息對檢索詞進行標注,將具體實例標注為其所屬的類,這是對檢索詞進行的規(guī)范化處理,是建立計算機理解檢索詞的基礎(chǔ)。例如,對于含義模糊的檢索詞“熊貓”則標注為動物或品牌,以便于進一步的語義判斷。在本文中,標注的類型是農(nóng)學(xué)本體中的類別(也就是概念分析中的分面)。以下為標注類型和標注符號:
地點PL
農(nóng)書NS
版本BE
時間TI
人物PE
主題ZT
(3)抽取提問中心
抽取用戶的提問中心,是對用戶的檢索詞進行語義判斷的基礎(chǔ)。在用戶的檢索式中,提問中心通常是抽象詞,而具體的實例則是對提問中心的限制或描述。例如“北京市圖書館”,其中北京市為具體實例,而圖書館則是提問中心;“明代《齊民要術(shù)》的版本”,則版本為提問中心。
根據(jù)以上分析,不難得出,抽取提問中心的方法是利用農(nóng)學(xué)本體的類(Class)對檢索式進行抽取,抽取到的類名詞則為提問中心。以“華東地區(qū)收藏的齊民要術(shù)的版本”為例,經(jīng)過提問詞分析模塊處理后的檢索結(jié)果為:華東地區(qū)/PL齊民要術(shù)/NS版本/BE,What,其中PL為地點,NS為農(nóng)業(yè)古籍,BE為版本,What為提問中心。
2 語義推理模塊
傳統(tǒng)的信息檢索模型是將各個檢索詞看做是孤立的,忽略檢索詞之間的語義關(guān)系,這也是造成基于關(guān)鍵詞檢索的檢索模型在一定程度上返回大量無關(guān)檢索結(jié)果的原因之一。語義推理模塊正是通過建立語義推理引擎,來判斷用戶檢索詞之間的語義關(guān)系,對用戶的檢索提問進行計算機理解。
(1)建立推理引擎的目的
本體的查詢需要借助RDQL語言,但該語言本身不具備推理功能,只能查詢模型中有直接關(guān)系的數(shù)據(jù),例如在農(nóng)學(xué)本體庫中,有“湖湘本be_CollectedBy中國農(nóng)業(yè)遺產(chǎn)研究室”、“中國農(nóng)業(yè)遺產(chǎn)研究室located_in江蘇”這樣兩條實例,它的意思是“中國農(nóng)業(yè)遺產(chǎn)研究室收藏了湖湘本,同時中國農(nóng)業(yè)遺產(chǎn)研究室位于江蘇省”,由此,我們可以推斷出“湖湘本藏于江蘇省”這樣一條結(jié)論。但是RDQL語言不具備這樣的傳遞推理機制,不可能得出上述推論,因此必須引入推理機制,RDQL語言才能對所有的語義數(shù)據(jù)作全面的查詢,從而獲取用戶滿意的查詢結(jié)果。
建立推理引擎的目的正是將本體中具有隱含語義關(guān)聯(lián)的數(shù)據(jù)推理出來,獲取所有相關(guān)聯(lián)的數(shù)據(jù)作為RDQL查詢的數(shù)據(jù)庫。推理引擎借助于本體信息及相關(guān)的公理描述可以從基本的RDF描述中獲取額外的斷言(Assertion),經(jīng)過推理處理可以獲得RDF有向圖中的所有語義閉包。當用戶提交查詢從RDF數(shù)據(jù)模型獲取數(shù)據(jù)時,不僅能得到數(shù)據(jù)模型本身所含有的數(shù)據(jù),而且可以得到由推理機制所產(chǎn)生的蘊含知識數(shù)據(jù)。
(2)建立推理引擎的方法
本文中采用的推理方法是利用Jena包中通用規(guī)則推理機制,采取工廠化方法GenericRuleReasonerFactory獲得通用規(guī)則推理機,從而引入事先寫好的形式化的規(guī)則庫文件對農(nóng)學(xué)本體庫進行推理。之所以選擇通用規(guī)則推理機是因為考慮到推理處的蘊涵知識的意義和推理效果,RDFS規(guī)則推理機(RDFS Rule Reasoner)、OWL-Lite推理機(OWL FB Reasoner)等內(nèi)置推理機對農(nóng)學(xué)本體庫進行推理,得出的是基于描述邏輯的推理結(jié)果。
例如,這樣一個推理規(guī)則:
(?a rdf:type rdfs:Class) (?a rdfs:subClassOf ?a)
該條推理規(guī)則的意思是:如果?a的類型是rdfs:Class,那么推理出?a是它自己的子類,也就是說如果有“禾谷類作物”這樣一個類,那么“禾谷類作物”可以作為該類的一個子類存在。其實這種推理對于用戶來說并沒有任何意義。用戶并不關(guān)心這樣的知識,最后的結(jié)果是推理結(jié)果之后會產(chǎn)生大量的、無關(guān)的垃圾信息,影響系統(tǒng)處理的效率和效果。因此選擇了通用規(guī)則推理的機制。
例如在本體庫中存在“收藏機構(gòu)locate_in地區(qū)”,“收藏機構(gòu)collected農(nóng)業(yè)古籍”,經(jīng)過傳遞性推理就可以得出“地區(qū)collected農(nóng)業(yè)古籍”。經(jīng)過推理引擎處理,可以得出本體庫中所有具有隱含語義關(guān)聯(lián)的類以及實例間的語義關(guān)系。
(3)建立語義模式庫
抽取本體庫中所有的語義屬性(主要針對ObjectType屬性),按照(Domain,屬性名,Range)的形式建立語義模式三元組構(gòu)成語義模式庫。根據(jù)語義模式庫,經(jīng)過相關(guān)計算就可以確立標注后的檢索詞之間的語義關(guān)系。
(4)確立檢索詞的語義關(guān)系
本體中的三元組都是“主語,謂語,賓語”的形式,用戶的檢索提問通常都是對主語或者賓語提問。通過步驟(1)的語義推理已經(jīng)得到RDF有向圖的所有語義閉包,因此若本體庫中存在用戶提問的檢索結(jié)果,至多通過兩個三元組組合便可以得到檢索結(jié)果。
本文利用傳統(tǒng)的向量空間模型構(gòu)筑檢索詞的語義關(guān)系,將標注后的檢索詞以及語義模式庫中的語義模式視為向量,通過余弦函數(shù)進行匹配判斷。
For每一個語義模式向量
If Sim(檢索向量,語義模式向量)>0.7 存入提問候選集
EndFor
其中,di,dj分別為檢索向量和語義模式向量的距離,W為分別對應(yīng)向量。
仍以“華東地區(qū)收藏的齊民要術(shù)的版本”為例,經(jīng)過語義匹配得到的提問候選集為“華東地區(qū),collected,版本”,“齊民要術(shù),has_edtition,版本”。
3 查詢分析模塊
(1)RDQL查詢語句簡介
RDQL[17]是Jena中針對RDF的查詢語言,這種查詢語言將RDF視為三元組,也就是帶有向邊的圖,圖的節(jié)點是資源(Resource)或者文字(Literal)。RDQL提供了一種圖匹配策略,查詢RDF中滿足一定節(jié)點的圖,查詢結(jié)果返回匹配到的屬性值。
RDQL滿足一定的范式,基本由SELECT、FROM、WHERE 和USING字句組成。其中SELECT字句銜接的是提問中心,WHERE字句銜接的是查詢條件,而FROM和USING字句分別銜接的RDF模型和本體的URI地址,由檢索時設(shè)定。例如,在http://example.org/peopleInfo#查詢年齡在24歲以上的人,具體的查詢語句如下:
(2)構(gòu)建RDQL查詢語句
RDQL滿足一定的范式,類似數(shù)據(jù)庫查詢中的SQL語句,因此構(gòu)建RDQL查詢語句的時候,只需要按照語法規(guī)則將查詢內(nèi)容和條件填充到指定的位置即可。其中SELECT字句銜接的是從檢索詞中抽取出來的提問中心,也就是標注為“WHAT”的查詢詞;WHERE字句銜接的是查詢條件,也就是生成的語義關(guān)系組合,即滿足一定語義關(guān)系的用戶查詢組合。因此把2(4)中形成的語義關(guān)系組合添加到WHERE字句之后,而FROM和USING字句分別銜接的RDF模型和本體的URI地址,在本文中即為農(nóng)學(xué)本體。以“清代描述大麻栽培的農(nóng)書有哪些”為例,生成的查詢語句如下:
SELECT?x WHERE(c:齊民要術(shù),c:has_edtion,?x),(c:華東地區(qū),c:collected,?x)
USING c for http://www.owl-ontologies.com/unnamed.owl#
(3)查詢結(jié)果處理
將(1)中形成的查詢語句交給本體模型,如果本體中存在符合語義關(guān)系組合的三元組則返回屬性值;如果不存在,則返回NULL。
4 本體管理模塊
以樹形結(jié)構(gòu)表示本體的等級體系,將本體中的類表示為根節(jié)點,將實例表示為葉子節(jié)點,點擊樹的節(jié)點,可以顯示該節(jié)點相關(guān)的各種屬性。通過對樹的瀏覽實現(xiàn)對本體的內(nèi)容瀏覽,通過關(guān)鍵詞查詢可以檢索到該關(guān)鍵詞在本體中的等級關(guān)系以及所有的屬性。
解析方法:
圖6-10 領(lǐng)域本體導(dǎo)航圖
(1)類的解析
利用listHierarchyRootClasses(?。┓椒ǖ玫奖倔w的根節(jié)點,然后利用listSubClasses(?。┓椒▽ΩY(jié)點判斷是否有子類,通過遞歸的方法得到所有的子類。
(2)實例的解析
根據(jù)(1)得到的類,對每個類通過listSubClasses( )方法判斷并獲取類的實例,利用getLocalName(?。┓椒ǖ玫綄嵗拿Q。
(3)屬性的解析
首先利用is Datatype Property( )和isObject Type Property(?。┓椒ㄅ袛嗍菙?shù)據(jù)屬性還是對象屬性,然后利用各自不同的特征對屬性進行進一步解析。如果是Datatype屬性,則屬性值為Literal類型,如果是Object Type屬性,則屬性值為Resource類型。
免責聲明:以上內(nèi)容源自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容。