張 婷,段躍興,張月琴
(太原理工大學 信息與計算機學院,太原 030024)
隨著旅游產業和互聯網相關技術的迅速發展[1],如何準確、全面地獲取旅游信息資源是亟待解決的問題。基于關鍵字的傳統查詢方式因為缺乏語義層次上的處理和表示所以無法將用戶輸入的檢索內容與數據資源庫中的內容相匹配,造成結果的不完整、不精確,甚至沒有符合用戶需求的結果[2]。為了提高旅游信息的查準率和查全率,一些學者建議將本體技術應用于旅游信息的搜索,并獲得了一定的進展[3-6]。但多半的方法只是基于本體技術的基礎并沒有充分考慮到實例和屬性之間的關系。此外,本體的推理功能未充分用于發現本體中的隱式關系。鑒于上述原因,本文建立在基于旅游領域本體的基礎上,提出了用于發現隱含關系的推理規則。通過分析本體中概念間的關系以及結構上的差別,加之推理規則和相似度算法的支持,將現有基于關鍵字級別的信息組織方式提高到語義級別,設計出一種可以挖掘出隱含信息的搜索方式,通過了解語義的深度,達到優化搜索結果的目的。
17世紀古希臘哲學領域的相關研究者提出了本體論的概念,它被定義為對世界客觀存在的系統描述。本體形象地描述了概念間關系的同時還支持邏輯推理。因此本體技術的引入能夠更好地改進檢的效率,并且在語義上得到更多保證[7]。以本體為基礎的語義檢索技術是目前科研發展的熱門方向之一,很多學者都進行了相關的探索[8-11]。
旅游領域本體是指用機器可以理解的語言表達形式來組織旅游知識的模型。CHHAVI et al[12]所提出的本體構建思想在某種程度上有助于提高構建本體的效率,然而并沒有形成通用的本體構建標準。為此,根據領域間的差異,結合現實情況來選擇適當的搭建方式。本文采用七步法的思想來構建旅游本體,由Protege[13]來實現。搭建過程如圖1所示。

圖1 旅游領域本體構建方法流程圖Fig.1 Flow chart of ontology construction method in tourism field
根據上述的構建流程,采用《中國分類詞庫》、《旅游服務基本條款(GB/T 16766-1997)》和《旅游規劃總則(TB/T 18971-2003)》[14],以山西省五臺山作為研究對象,整理其中所包含的重要內容,用Protege工具搭建旅游領域本體。本體的類結構如圖2所示,共有57個本體類,此外還包括34個數據屬性和24個對象屬性來描述類的所包含的信息。

圖2 五臺山旅游本體層次局部結構圖Fig.2 Local structure map of tourism ontology level in wutai mountain
1.2.1本體推理機
本體的一個重要特征是推理能力,在領域本體語義關系的推理中,推理機起著重要的作用,相關推理技術的引入使得更多的隱含信息被發現,并且消除所有類以及實例與類之間的沖突。目前,具有代表性的推理機有Pellet、Racer、FaCT++、KAON2等[15]。本文選擇了開源的Jena推理機,它不僅支持OWL等自然語言推理,還通過DIG接口與其他推理機器如Pellet等連接[16]。
1.2.2本體的推理規則
為了給用戶檢索提供更加全面而準確的信息,基于推理機制,結合推理規則,充分利用旅游領域本體中概念間的關聯關系,尋找到旅游領域本體內未曾建立屬性關聯的實例,并發掘其中所包含的隱藏信息。
本文使用正向的推理規則完成推理的過程。所謂的正向的推理規則指的是左側條件為真的條件下就可以獲取到所需的結論,同時結論信息位于推理規則的右側位置。和所研究領域沒有直接關系的推理規則稱為通用規則,換句話說,指的就是任何本體都能運用的規則。如:
(?c1,rdfs:subClassOf,?p),(?p,rdfs:subClassOf,?c2) → (?c1,rdfs:subClassOf,?c2)
領域規則是以通用規則為基礎,通過將通用規則的實例化,結合特定領域相關的內容所形成的。例如:
Rule 1:(?xbelongs to ?y),(?ysubclass of ?z)→(?xbelongs to ?z)
Rule 2:(?xhas ?y),(?ysame as ?z)→(?xhas ?z)
Rule 3:(?x,takePartIn,?y)→(?y,hasParticipant,?x)
Rule 4:(?x,rdf:type,Tourist),(?x,hasUphillPath,?y)→(?y,rdf:type,UphillPath)
1.2.3本體的推理過程
本文主要是根據旅游領域本體中所定義的屬性來定義推理規則,并通過Jena推理機,將自定義的推理規則加入Jena推理機中完成旅游本體的語義擴展。接著運用SPARQL語言,完成旅游信息的推薦。
為了提高檢索的效率,往往需要確定概念集合與搜索內容間的一致性,即需要計算原始概念與搜索內容的相似性。針對該問題當前的方法主要有4類,每一類都有其經典的代表算法及優缺點[17]。
以距離為基礎的方法是最基本的方法,雖然計算簡單,但是準確度較低。基于內容的計算方法僅考慮概念本身中包含的信息,且取決于所計算的語料庫,不同數據資源庫獲得的結果通常不一樣。基于屬性的計算方法需要找到兩個概念之間共同的屬性,雖然利用了概念的屬性來計算相似度,但是計算的復雜程度大大增加。混合式的計算方法具有較高的準確性,由于該方法最大限度地利用了概念節點的語義信息,因此混合計算更為精確,是目前的研究重點。文獻[18]中提出了一個概念相似度算法,該算法基于本體樹結構,將語義距離、上下位概念重合度以及概念節點層次深度等影響因素結合起來,它用于解決病蟲害領域的檢索效率。在文獻[19]中,將Jaccard系數添加到基于距離和信息量的計算方法中進行相似度的計算。在文獻[20]中考慮到概念中所包含的信息量的同時結合了諸如概念的位置和速度等影響因子,提出了一種計算語義相似性的混合方法。本文綜合分析了混合相似度算法在各領域內的研究現狀,提出了一種適用于旅游領域的混合語義相似度計算方法。
概念間可能存在多種連接方式,因此,在計算相似度大小的時候,有必要考慮關系路徑的影響。
2.1.1關系權重
本體樹結構中包括許多概念信息,不同概念之間在關系上的差異導致了概念間在語義層面上相似性大小的差異。
(1)
其中,w1代表概念的關系權重值。
2.1.2節點深度權重
以本體的樹形結構為基礎,從最頂端的thing開始,逐步向下進行細化。葉子節點含有的信息量最多。
w2=(1/2depth(c)+1/2depth(c)-1+…+1/2) .
(2)
式中:w2代表概念的節點深度權重值;depth(c)代表本體層中概念c的深度,概念c為概念c1和概念c2的最近公共父節點。
2.1.3密度權重
在本體結構圖中,概念所含子概念數目的多少,決定了對事物描述的詳細程度。密度越大的節點,事物描述的信息越詳細。若樹結構中某一部分的密度很大,則其父節點所包含的信息更加精確。
(3)
式中:out()表示某概念在本體中有向無環圖的出度。out(c)表示概念c的出度,概念c為概念c1和概念c2的最近公共父節點。out(root)表示本體樹根節點的出度。
2.1.4關系路徑權重
將上文3種影響因素綜合考慮,得到綜合關系路徑權重。
w=α×w1+β×w2+λ×w3.
(4)
其中,α+β+λ=1.
距離與權重的關系如下式所示:
(5)
綜上,得到概念c1和概念c2之間語義的相似度計算公式:
(6)
其中,α為調節因子。
基本思想是比較兩個概念(類)之間共享的信息,相同信息數量的多少將會影響到相似度的大小,二者成正比關系。通過本體所構建的樹形結構可以得到子節點間相似度,子節點間的相似度大小可以用其共同的父節點所承載的內容來權衡。
(7)
(8)
式中:N代表本體分類樹中所有概念的總數;N(c)代表概念在本體樹中出現的頻率,概念c為概念c1和概念c2的最近公共父節點。
各類不同特質的屬性是對事物的描述,公共屬性數量的多少決定了事物之間是否有聯系。任意節點間所包含的屬性相同項越多則代表二者在語義上的相似程度越高。
(9)
其中,count(c1)代表概念c1所擁有的屬性個數。
綜合考慮基于本體所搭建的樹形結構的特點,結合上面所建立用于計算相似度的方法,提出了最終的語義相似度計算方法如下:
sim(c1,c2)=α×sim(c1,c2)dis+β× sim(c1,c2)ic+λ×sim(c1,c2)attr.
(10)
其中,α,β,λ分別表示路徑距離、信息含量、屬性的調節系數,α+β+λ=1.
本文提出的基于本體的旅游信息檢索模型是以山西五臺山旅游信息為例。通過查找與旅游相關的文檔,建立具體的旅游信息結構,即構建本體。然后運用爬蟲技術采集與其相關的文檔,通過預處理建立數據資源庫。基于Jena推理規則及語義相似度算法實現模型的構建。本文所提出的檢索模型采用B/S架構見圖3,主要由以下4部分組成。

圖3 旅游信息檢索模型Fig.3 Tourism information retrieval model
1) 用戶界面模塊。該模塊主要用于用戶與檢索模型的信息交流,連接著預處理模塊,用戶使用圖形化界面輸入他們所要查詢的信息,經過處理后,用戶界面將會展示出最終結果。
2)檢索預處理模塊。通過漢語詞法分析系統(ICTCLAS)對用戶輸入的查詢語句進行分詞操作以及主謂賓關系的提取操作,此外,引入了用戶自定義詞典以及停用詞表來提高分詞效果。該模塊實現了準確而標準化的標記并對用戶的初始搜索信息進行了處理。
3) 數據存儲模塊。該模塊的作用是構建檢索模型的核心部分本體結構,通過收集與旅游相關的文檔,篩選出其中的主要信息,并確定出一系列的概念、關系以及實例、屬性集合。
4) 檢索模塊。該模塊的主要功能是根據新的檢索信息檢索數據資源庫,并比較查詢實例與數據資源庫中數據之間的相似性,以相似度的大小作為評判標準,將檢索出來的結果逆序排序,從中篩選出高于基準值的結果展示在用戶界面上。
本次實驗是在Windows平臺下使用Java開發工具idea(JDK1.8)進行開發工作,具體開發環境如表1所示。
本次實驗以旅游本體中的所有實例作為數據源,通過對旅游論壇上的問題(百度旅游貼吧、旅游問答_知了吧等網站),進行收集整理總結。將游客的問題分為以下8類問句,如表2所示。

表1 系統開發環境Table 1 System development environment

表2 關于五臺山景區的用戶問題示例Table 2 Examples of user problems in wutaishan scenic spot
根據上述問題類型,將用戶查詢語句拆分后進行實驗,分別計算出每個查詢任務的完整性和精確度。部分查詢信息見表3.

表3 查詢條件Table 3 Query criteria
本實驗采用比較法,以信息完整程度、準確程度作為判定優越性的判斷依據,通過與傳統的基于關鍵詞的搜索方法相比較,反映出系統的優越性。具體的實驗結果以折線圖的方式進行對比,見圖4、圖5.

圖4 不同方法的查全率Fig.4 Recall of different methods

圖5 不同方法的查準率Fig.5 Precision of different methods
從圖4和圖5中可以看出,本文所使用的搜索方法,無論是完整性還是精確度都優于以關鍵字為基礎的搜索方法,即證明了以本體為基礎的查詢方式提高了旅游信息的搜索效率。因此,每個評估指標均高于基于關鍵字的搜索方法。
傳統的搜索方式,缺乏概念在語義層面上的處理,這嚴重限制了檢索結果的準確性。因此,本文通過本體和相似度算法,提出了基于語義層面上的語義搜索模型。從實驗數據可以看出,與基于關鍵字的檢索模型相比,該模型能夠更加深入地理解用戶輸入的搜索內容,是改進旅游信息檢索的有效方法。隨著各類相關技術的發展,為了提高總體的檢索效率,對目前所建立的檢索模型的優化任務是接下來的重點工作。