原 越,范家豪,寇 哲,安超凡
(北京信息科技大學(xué) 計(jì)算機(jī)學(xué)院,北京 100101)
得益于信息技術(shù)的發(fā)展,線上景點(diǎn)數(shù)據(jù)日趨豐富。目前在各個(gè)領(lǐng)域都存在著知識(shí)圖譜技術(shù)的廣泛應(yīng)用。針對(duì)旅游領(lǐng)域來(lái)說(shuō),現(xiàn)有的基于網(wǎng)頁(yè)進(jìn)行搜索的方式能夠提供的旅游景點(diǎn)信息缺乏關(guān)聯(lián)度和完整性,不利于用戶(hù)獲取有效信息。而知識(shí)圖譜作為一種關(guān)聯(lián)知識(shí)組織技術(shù),能夠描述現(xiàn)實(shí)世界中存在的各種實(shí)體和屬性,以及實(shí)體之間的關(guān)系。同時(shí),知識(shí)圖譜能夠幫助計(jì)算機(jī)更好地理解人類(lèi)語(yǔ)言模式,從而更加智能化地對(duì)用戶(hù)所需要的各類(lèi)信息進(jìn)行反饋。
在知識(shí)圖譜構(gòu)建技術(shù)方面,劉嶠等人介紹了自底向上的知識(shí)圖譜構(gòu)建技術(shù)。在知識(shí)獲取方面,姚萍等人介紹了知識(shí)獲取的過(guò)程。在知識(shí)圖譜的應(yīng)用方面,邵嘉進(jìn)等人將知識(shí)圖譜用于旅游領(lǐng)域,構(gòu)建了每個(gè)用戶(hù)的畫(huà)像,并為每個(gè)用戶(hù)推薦旅游景點(diǎn)。
與傳統(tǒng)的富文本形式相比,知識(shí)圖譜更注重強(qiáng)調(diào)對(duì)實(shí)體的覆蓋,其包含的語(yǔ)義豐富,語(yǔ)義關(guān)系的建模具有多樣化的特點(diǎn)。例如針對(duì)景點(diǎn)、酒店、餐飲這3個(gè)實(shí)體,可以引申出相同地理位置的景點(diǎn)、相同等級(jí)的景點(diǎn)以及景點(diǎn)附近相鄰的酒店和餐飲三個(gè)關(guān)系,對(duì)比分散性查詢(xún)信息可以提供極大的便利。因此,本文通過(guò)對(duì)景點(diǎn)數(shù)據(jù)的高效整理來(lái)構(gòu)建旅游景點(diǎn)知識(shí)圖譜,且在此基礎(chǔ)上設(shè)計(jì)并實(shí)現(xiàn)了基于知識(shí)圖譜的旅游景點(diǎn)應(yīng)用系統(tǒng)。
知識(shí)圖譜在邏輯上可分為模式層與數(shù)據(jù)層兩個(gè)層次:模式層在數(shù)據(jù)層之上,是知識(shí)圖譜的核心,通常采用本體庫(kù)來(lái)管理知識(shí)圖譜的模式層。兩者之間的聯(lián)系以及區(qū)別通過(guò)如下例子進(jìn)行說(shuō)明。
(1)模式層:實(shí)體-屬性-屬性值
(2)數(shù)據(jù)層:故宮-面積-72萬(wàn)平方公里
(3)模式層:實(shí)體-關(guān)系-實(shí)體
(4)數(shù)據(jù)層:故宮-位于-北京
這里,對(duì)構(gòu)建流程可做探討分述如下。
(1)原始材料的收集。根據(jù)互聯(lián)網(wǎng)的信息進(jìn)行爬取。
(2)本體構(gòu)建。是對(duì)獲取的知識(shí)進(jìn)行加工,模式層的建立。
(3)信息抽取。需要將內(nèi)容抽取成三元組的形式。
(4)知識(shí)存儲(chǔ)。將最終的內(nèi)容存儲(chǔ)到圖數(shù)據(jù)庫(kù)中,利用自身的語(yǔ)句進(jìn)行增刪改查。
目前,多用2種構(gòu)建知識(shí)圖譜的方法。一是自頂向下:從模式層開(kāi)始構(gòu)建,再往里面添加實(shí)例,直至構(gòu)建的完成。二是自底向上:從數(shù)據(jù)層開(kāi)始構(gòu)建,再向上抽象出來(lái)概念和關(guān)系,直至構(gòu)建完成。
本文選擇2種方法相融合進(jìn)行旅游景點(diǎn)知識(shí)圖譜的構(gòu)建。首先定義并構(gòu)建本體,建立模式層;根據(jù)模式層抽取出景點(diǎn)、旅店、餐館的概念、屬性、屬性值以及各自的概念、屬性、屬性值之間的關(guān)系;最后將所有知識(shí)存入Neo4j圖數(shù)據(jù)庫(kù)。構(gòu)建流程如圖1所示。
圖1 知識(shí)圖譜構(gòu)建流程圖Fig.1 Flow chart of knowledge graph construction
景點(diǎn)的知識(shí)的本體構(gòu)建選用經(jīng)典的七步法,并且根據(jù)實(shí)際情況簡(jiǎn)化不必要的步驟。主要分為5個(gè)步驟:確定本領(lǐng)域的范疇、獲取爬取的信息、旅游領(lǐng)域標(biāo)簽確定、抽取本體概念、本體建模。本體構(gòu)建流程如圖2所示。
圖2 本體構(gòu)建流程圖Fig.2 Flow chart of ontology construction
本體建模的過(guò)程:使用Protégé軟件利用自上而下法進(jìn)行本體構(gòu)建、旅游景點(diǎn)知識(shí)圖譜的構(gòu)建。對(duì)此擬展開(kāi)研究論述如下。
(1)確定本領(lǐng)域的范疇。不同的領(lǐng)域本體的構(gòu)建內(nèi)容和方式是不同的,研究旨在確定本體領(lǐng)域研究范圍重要的因素。本文著重研究的是旅游領(lǐng)域知識(shí)圖譜的構(gòu)建,所以重點(diǎn)在于以旅游景點(diǎn)為中心的本體構(gòu)建。
(2)獲取有關(guān)信息。通過(guò)爬取得到的數(shù)據(jù)作為景點(diǎn)信息的來(lái)源,在其中獲取旅游景點(diǎn)、旅店、餐館的相關(guān)的信息。
(3)旅游領(lǐng)域標(biāo)簽的確定。根據(jù)爬取的信息,確定初步的旅游領(lǐng)域的標(biāo)簽,如:旅游攻略、酒店、餐館、景區(qū)風(fēng)景、等級(jí)等等。
(4)抽取本體概念。通過(guò)篩選抽取出來(lái)本體的概念有地區(qū)、等級(jí)兩個(gè)類(lèi)。
研究得到的本體類(lèi)層級(jí)如圖3所示。根據(jù)旅游景點(diǎn)的等級(jí)和采集到的數(shù)據(jù),可以將景點(diǎn)分為AAAA和AAAAA級(jí)景區(qū)。地區(qū)可以根據(jù)中國(guó)的省份進(jìn)行劃分,分為:黑龍江省、四川省、吉林省等等。
圖3 本體類(lèi)層級(jí)圖Fig.3 Hierarchical diagram of ontology classes
(5)本體建模。本體建模的具體實(shí)現(xiàn)如圖4所示。
圖4 本體建模圖Fig.4 Ontology modeling diagram
(6)部分結(jié)果展示。見(jiàn)圖5。
圖5 部分結(jié)果展示Fig.5 Part of the results show
相對(duì)于文本形式的表達(dá),將各景點(diǎn)以及景點(diǎn)周邊設(shè)施的信息以圖的形式展現(xiàn)可以幫助用戶(hù)在盡可能短的時(shí)間內(nèi)多角度、全方位地搜索到自己感興趣的目標(biāo),功能需求如下:
(1)多樣化輸入法格式。因?yàn)槊恳粋€(gè)用戶(hù)的搜索形式不同,有的用戶(hù)可能只輸入關(guān)鍵詞進(jìn)行搜索,而有的用戶(hù)會(huì)輸入整句進(jìn)行搜索,所以系統(tǒng)要盡可能滿足不同用戶(hù)的輸入法格式,無(wú)論是輸入關(guān)鍵詞、還是整句,都能搜索到相應(yīng)內(nèi)容。
(2)多景點(diǎn)圖譜可視化展示。以圖的形式將各景點(diǎn)的信息展示出來(lái),以導(dǎo)航形式將信息串聯(lián)起來(lái),如此用戶(hù)使用起來(lái)將更加方便。
(3)當(dāng)用戶(hù)點(diǎn)擊某個(gè)景點(diǎn)節(jié)點(diǎn)時(shí),與其處于相同等級(jí)或者相同地理位置的景點(diǎn)就會(huì)被列舉出來(lái),這時(shí)用戶(hù)可以從中選擇自己感興趣的景點(diǎn)。若要獲得某一景點(diǎn)的周邊服務(wù),例如酒店、餐飲時(shí),只需要點(diǎn)擊該景點(diǎn),就會(huì)實(shí)現(xiàn)跳轉(zhuǎn),獲得更加詳細(xì)的信息。
系統(tǒng)采用B/S架構(gòu),對(duì)于設(shè)計(jì)實(shí)現(xiàn)中用到的關(guān)鍵技術(shù),這里將給出剖析表述如下。
(1)數(shù)據(jù)爬取與預(yù)處理。通過(guò)爬取https://www.ctrip.com和https://www.qunar.com作為信息的來(lái)源。在爬取方法上,采用分布式爬蟲(chóng)的方法,能夠提高爬取數(shù)據(jù)的效率;在搜索策略上,采用廣度優(yōu)先的網(wǎng)頁(yè)搜索策略;在分析方法上,采用基于文本的網(wǎng)頁(yè)分析算法,很大程度上借用了文本檢索的技術(shù),利用網(wǎng)頁(yè)的標(biāo)簽,快速有效地對(duì)網(wǎng)頁(yè)信息進(jìn)行分類(lèi)和聚類(lèi);在爬蟲(chóng)技術(shù)上,分為URL讀取和存儲(chǔ)、頁(yè)面元素分析、數(shù)據(jù)存儲(chǔ)三個(gè)模塊,最終將其存儲(chǔ)到csv文件中。
(2)知識(shí)圖譜存儲(chǔ)。利用將Phantom JS和Selenium結(jié)合搭建爬蟲(chóng)框架,通過(guò)正則化表達(dá)式導(dǎo)入存入csv文件中,利用圖數(shù)據(jù)庫(kù)Neo4j自身的import語(yǔ)句導(dǎo)入Neo4j中。Neo4j數(shù)據(jù)庫(kù)中的知識(shí)圖譜如圖6所示。知識(shí)圖譜中,實(shí)體包括:景點(diǎn)、餐館、酒店。景點(diǎn)的屬性有圖片、名稱(chēng)、電話、簡(jiǎn)介、票價(jià)、等級(jí)、地址;酒店屬性包括酒店的名稱(chēng)、類(lèi)型、酒店鏈接、評(píng)分、地址、電話、簡(jiǎn)介、好評(píng)率;餐館包括餐館的名稱(chēng)、餐館菜系、地址、特色美食、人均費(fèi)用、評(píng)分這幾個(gè)屬性。關(guān)系則包括:同地區(qū)、相同等級(jí)、近鄰。
圖6 Neo4j數(shù)據(jù)庫(kù)中知識(shí)圖譜Fig.6 Knowledge graph in Neo4j database
(3)信息檢索。將前端網(wǎng)頁(yè)輸入的關(guān)鍵詞請(qǐng)求傳送到后臺(tái),調(diào)用相關(guān)的語(yǔ)句,匹配關(guān)鍵詞,返回信息,展示給用戶(hù)。
(4)搜索結(jié)果可視化。本文采用roc-echarts實(shí)現(xiàn)知識(shí)圖譜的網(wǎng)頁(yè)可視化,后臺(tái)通過(guò)Cypher語(yǔ)句完成信息檢索。
景點(diǎn)搜索頁(yè)面是主要應(yīng)用知識(shí)圖譜的頁(yè)面,頁(yè)面主要分為四大塊,分別為:左側(cè)、上面、中間、下面。旅游景點(diǎn)網(wǎng)站主要展示這個(gè)景點(diǎn)的信息,并將信息分成4部分,分別為:基本信息、簡(jiǎn)介、小貼士、知識(shí)圖譜的可視化。從知識(shí)圖譜中可以清晰地看到,景點(diǎn)的信息、和本景點(diǎn)相同地點(diǎn)的景點(diǎn)、和本景點(diǎn)相同等級(jí)的景點(diǎn)。本次研發(fā)得到的景點(diǎn)信息頁(yè)面如圖7所示。
圖7 景點(diǎn)信息頁(yè)面Fig.7 Scenic spots informations page
目前的旅游攻略?xún)H有富文本信息流單一形式,用戶(hù)難以獲取足夠的、有關(guān)聯(lián)的、真正感興趣的旅游信息,所以專(zhuān)門(mén)針對(duì)該需求,本次研究開(kāi)了發(fā)旅游知識(shí)圖譜。研發(fā)中,利用Phantom JS和Selenium結(jié)合搭建爬蟲(chóng)框架,獲取精細(xì)粒度旅游數(shù)據(jù),以景點(diǎn)、旅店、餐廳為對(duì)象實(shí)體構(gòu)造知識(shí)節(jié)點(diǎn),持久化在圖數(shù)據(jù)庫(kù)中;在前端使用roc-charts技術(shù)實(shí)現(xiàn)圖譜的可視化。最終解決信息孤島,實(shí)現(xiàn)旅游信息的知識(shí)圖譜,并基于圖譜實(shí)現(xiàn)搜索系統(tǒng),最終成果將封裝成Web形式提供服務(wù)。