潘祿生
(甘肅畜牧工程職業(yè)技術(shù)學(xué)院智能與信息學(xué)院,甘肅武威,733006)
隨著互聯(lián)網(wǎng)技術(shù)滲透到生活的各個方面,信息過載導(dǎo)致有效數(shù)據(jù)被淹沒在海量信息中,降低了信息利用率[1]。推薦系統(tǒng)就是為了解決這種問題應(yīng)運(yùn)而生,但隨著互聯(lián)網(wǎng)的普及,網(wǎng)絡(luò)數(shù)據(jù)呈現(xiàn)出隨意化,個性化等特點(diǎn),傳統(tǒng)推薦系統(tǒng)面臨著數(shù)據(jù)稀疏的問題[2]。以旅游信息為例,不同人對相同景點(diǎn)的評價差異較大,且與游客的年齡,性別,興趣愛好等各種因素息息相關(guān),這就導(dǎo)致了旅游信息的離散化程度非常高。如何根據(jù)現(xiàn)有知識信息實(shí)現(xiàn)旅游信息的個性化推薦,對提升甘肅省旅游產(chǎn)業(yè)的發(fā)展具有重大意義。
在旅游網(wǎng)站中,旅游線路信息包括大量的景點(diǎn)信息,如地點(diǎn),門票,酒店,交通線路,旅游線路特色等。針對傳統(tǒng)推薦算法對離散數(shù)據(jù)推薦不準(zhǔn)確的問題,提出了基于知識圖譜的旅游線路推薦方法。
個性化推薦方法的優(yōu)劣取決于旅游線路領(lǐng)域知識圖譜的完善程度,然而由于旅游線路信息分布于各旅游信息網(wǎng)站中,因此需要對旅游網(wǎng)站信息采集,而采集到的數(shù)據(jù)是否滿足旅游路線知識圖譜構(gòu)建的需求,需要采用大數(shù)據(jù)技術(shù)進(jìn)行分析,然后與已有的數(shù)據(jù)進(jìn)行相似度計算,滿足閾值的數(shù)據(jù)才可以作為有效數(shù)據(jù)存儲數(shù)據(jù)庫中。旅游線路領(lǐng)域知識圖譜構(gòu)建總體流程如圖1所示。
圖1 旅游線路領(lǐng)域知識圖譜構(gòu)建流程
在旅游線路領(lǐng)域知識圖譜的構(gòu)建過程中,數(shù)據(jù)采集負(fù)責(zé)從旅行網(wǎng)站,點(diǎn)評網(wǎng)站,百科網(wǎng)站等采集相應(yīng)的景點(diǎn)實(shí)體信息,通過在爬取數(shù)據(jù)過程中進(jìn)行預(yù)處理,去除噪音數(shù)據(jù),然后通過數(shù)據(jù)的類型,如結(jié)構(gòu)化數(shù)據(jù),非結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行存儲。在數(shù)據(jù)抽取階段,將采集到數(shù)據(jù)按照數(shù)據(jù)抽取模型,抽取構(gòu)建領(lǐng)域知識圖譜所需的實(shí)體數(shù)據(jù)、屬性數(shù)據(jù)和關(guān)系數(shù)據(jù)。在知識融合階段通過同義詞庫將抽取的實(shí)體,屬性和關(guān)系數(shù)據(jù)進(jìn)行數(shù)據(jù)融合,包括實(shí)體歧義的消除,屬性歧義的消除以及同義關(guān)系的合并等[3]。最后利用這些數(shù)據(jù)構(gòu)建實(shí)體/屬性/屬性值三元組,從而構(gòu)建旅游線路領(lǐng)域知識圖譜。由于旅游線路信息本就離散且稀疏,因此高效的知識融合方案直接決定了旅游領(lǐng)域知識圖譜的完整性。領(lǐng)域知識圖譜的知識融合首先需要對實(shí)體,屬性和屬性值等知識結(jié)構(gòu)主體進(jìn)行擴(kuò)充,以擴(kuò)大領(lǐng)域知識圖譜的使用范圍,其次是對各知識結(jié)構(gòu)主體值的融合,以提高知識圖譜的準(zhǔn)確度。
1.2.1 屬性知識擴(kuò)充流程
知識主體擴(kuò)充是指通過信息采集技術(shù)持續(xù)將滿足領(lǐng)域知識圖譜構(gòu)建所需信息納入知識圖譜的過程。知識圖譜中實(shí)體用三元組<實(shí)體E,屬性A,屬性值V>表示,關(guān)系用三元組<實(shí)體E1,關(guān)系R,實(shí)體E2>表示。知識主體擴(kuò)充包括實(shí)體擴(kuò)充,屬性擴(kuò)充和關(guān)系擴(kuò)充。本文主要研究知識圖譜的屬性擴(kuò)充,針對旅游線路的特點(diǎn),整理出10個典型的屬性,屬性名和說明如表1所示。
表1 旅游線路實(shí)體屬性名
為了實(shí)現(xiàn)知識圖譜的覆蓋范圍,提高知識圖譜的準(zhǔn)確性,需要對屬性知識進(jìn)行擴(kuò)充。所謂的屬性知識擴(kuò)充方法指對給定實(shí)體的屬性和屬性值進(jìn)行擴(kuò)充的過程。為了提高準(zhǔn)確度,本文采用了基于模式匹配和詞義的混合屬性知識擴(kuò)充方法,知識擴(kuò)充方法的基本流程如圖2所示。
圖2 混合屬性知識擴(kuò)充方法基本流程
在信息抽取和語料預(yù)處理階段,從攜程旅行網(wǎng)和馬蜂窩網(wǎng)站上抽取關(guān)于甘肅旅游領(lǐng)域的124個旅游景點(diǎn)實(shí)體的列表,對列表中的旅游景點(diǎn),提取<實(shí)體,屬性,屬性值>三元組數(shù)據(jù)。語料的預(yù)處理包括對字符串的處理和自然語言處理,包括分詞,詞性標(biāo)注等?;谀J狡ヅ涞闹饕蝿?wù)是將抽取結(jié)果與給定模式的字符串作為候選屬性值,然后基于同義詞詞匯[4]進(jìn)行擴(kuò)展。對于不同候選屬性的詞性列表,將候選屬性值標(biāo)記出來,并對這些屬性值進(jìn)行人工標(biāo)注。在模式匹配階段使用WEKA分析工具[5]中的分類器對部分符合屬性值特征屬性和不符合屬性值特征屬性的候選集進(jìn)行訓(xùn)練,并使用多分類器投票的集成式分類方式來預(yù)測結(jié)果。在基于詞義的屬性知識擴(kuò)充方法中,屬性來源包括基本屬性及其同義詞,百科網(wǎng)站的infobox[6]的屬性名,屬性值以及模式匹配的屬性值。在基于詞義的屬性知識擴(kuò)充方法中需要對每個詞根據(jù)來源賦予權(quán)重。在數(shù)據(jù)采集之后對候選語句中詞匯的屬性權(quán)重進(jìn)行計算,計算方法就是將所有的屬性權(quán)重相加,然后計算該語句中詞匯的平均權(quán)重,然后決定該語句是否進(jìn)入候選語句。
1.2.2 屬性知識擴(kuò)充方法
(1)基于同義詞的屬性知識擴(kuò)充方法
在旅游領(lǐng)域知識圖譜構(gòu)建過程中,基于模式匹配的屬性知識擴(kuò)充方法主要依靠人工構(gòu)建模式和自動構(gòu)建模式兩種方法實(shí)現(xiàn)模式匹配,而主要以人工構(gòu)建模式為主,這種方式較為適合固定模式下屬性知識的構(gòu)建。一個模式如“<月牙泉>位于<甘肅省敦煌市西南5公里鳴沙山北麓>”表示景區(qū)的位置信息,“<莫高窟>是<世界上現(xiàn)存規(guī)模最大、內(nèi)容最豐富的佛教藝術(shù)地>”表示景區(qū)的特色等,利用類似的模式可以獲得知識主體的屬性信息。同時為了增加模式匹配的適用性,可以對知識主體(景點(diǎn))和知識屬性(地理位置,最大特色等)之間表示關(guān)系的同義模式進(jìn)行擴(kuò)展,如“位于”和“坐落于”,“地處”等。為此,本文對表1中提取的10個屬性構(gòu)建了總計187條原始模式,同時使用同義詞擴(kuò)展了873條擴(kuò)展模式,且每個模式都有知識主體,知識屬性和知識關(guān)系三項構(gòu)成。具體方法流程如圖3所示。
圖3 基于同義詞的屬性知識擴(kuò)充方法
(2)基于模式匹配的屬性知識擴(kuò)充方法
對于旅游信息網(wǎng)站和百科類網(wǎng)站的獲取的語料信息,需要將其抽取為<實(shí)體,屬性,屬性值>的三元組,在進(jìn)行實(shí)體屬性抽取之前需要對同義或者連續(xù)實(shí)體屬性進(jìn)行合并,合并完成之后就可以使用基于模式匹配的屬性知識[7]擴(kuò)充方法,其具體過程如圖4所示。
圖4 基于模式匹配的屬性知識擴(kuò)充方法
在使用模式匹配的方法后,最終獲取甘肅旅游線路信息的三元組24435條,經(jīng)過篩選,其中22187條三元組可以用于甘肅旅游領(lǐng)域知識圖譜的構(gòu)建工作。
由于甘肅旅游資源非常豐富,且從區(qū)域到類別都非常廣泛,一般來說,甘肅旅游可以按距離分為短程,中程,遠(yuǎn)程旅游,按時間可以分為一日,二日,三日或多日旅游,按旅游線路的性質(zhì)可分為觀光游和專題游等。而不同的人群根據(jù)個人時間,經(jīng)濟(jì)能力,旅游性質(zhì)等適合不同的旅游線路,比如在周末適合三人親子游,假期情侶適合多日旅游等。為了滿足個性化旅游線路推薦,需要根據(jù)用戶的類型和興趣,依靠旅游領(lǐng)域知識圖譜構(gòu)建多條旅游線路供用戶選擇。
在規(guī)劃旅游線路過程中,除了景點(diǎn)的建議旅游時間外,景點(diǎn)與景點(diǎn)之間的距離也是必須考慮的問題,交通時間的計算時間如下:
圖5 基于知識圖譜的用戶旅游線路總體流程
對于speed來說,不同的距離使用不同的交通工具,通常以步行,公交,駕車三擋速度為基準(zhǔn)。在規(guī)劃線路過程時,可以采用Dijkstra算法來規(guī)劃各景點(diǎn)之間的路線。
對于旅游線路的綜合體驗評分來說,旅游線路的體驗評分包括兩類:各景點(diǎn)的加分和交通路徑上的減分,一般來說,景點(diǎn)的加分以旅游景點(diǎn)的綜合評分為參考,交通路徑上的減分以交通時間為基準(zhǔn),時間越長,減分越多,旅游線路的綜合評分可用如下公式計算。
其中α和β分別表示旅游線路和交通時間的均衡參數(shù)。把所有推薦的旅游線路按照分?jǐn)?shù)高低排名,并返回給用戶之后,用戶就可以根據(jù)個人的需求進(jìn)行篩選。
本實(shí)驗使用neo4j工具[8]構(gòu)建甘肅旅游領(lǐng)域知識圖譜,從攜程,馬蜂窩,百度百科,大眾點(diǎn)評等網(wǎng)站總共抽取22187條<主體,屬性,屬性值>三元組構(gòu)建甘肅旅游知識圖譜,以甘肅旅游領(lǐng)域知識圖譜如圖6所示。
圖6 甘肅旅游線路目的地圖譜模型(張掖局部)
為了表示該方法的效果,本文以敦煌出發(fā),家庭2日游為例,推薦的結(jié)果如表2所示。
表2 實(shí)驗結(jié)果
從推薦結(jié)果可看出來,對于家庭旅游而言,該個性化旅游推薦方案主要以游和玩兩個特點(diǎn),且不同的線路適合不同的家庭類型,如線路1景點(diǎn)較多,線路較長,適合家庭三代人旅游,而線路2景點(diǎn)較少,且交通方便,適合于家庭中有較大年紀(jì)的老人旅游,而線路3更偏向于父母攜帶孩子旅游,而線路4更符合年輕家庭旅游。
針對傳統(tǒng)旅游推薦面臨的準(zhǔn)確度不高,旅游線路單調(diào)的問題,提出了基于知識圖譜的個性化旅游線路推薦方法。通過使用屬性知識擴(kuò)充方法增加知識獲取的廣度,提升旅游領(lǐng)域知識圖譜的覆蓋面和準(zhǔn)確度,然后將用戶旅游時間,旅游類型需求,計算各旅游景點(diǎn)的評分和景點(diǎn)的距離計算評分,獲得合適的旅游線路,將旅游線路進(jìn)行排序推薦給用戶,實(shí)現(xiàn)旅游線路個性化推薦。