張 敏,張臘梅,陳正玉
(常熟理工學院 江蘇 常熟 215500)
互聯網發展日新月異,大量的旅游信息依托旅游網站應運而出,而這些網站不僅要整理繁多的景區信息還要管理用戶的海量數據。對于用戶而言,很難在海量的信息當中高效地找到滿足個人需求的信息。傳統的旅游推薦信息大多是根據熱門推薦或者是將景點按照簡單的類型分類推薦,這種推薦的方式對用戶而言缺乏個性化。為了滿足用戶個性化的需求,目前比較合適的技術是將協同過濾算法與推薦系統相結合[1]。系統可以根據不同用戶的歷史行為來預測彼此的喜好,并有針對性的推薦偏好景區。目前,很多領域都有使用個性化推薦系統,比如:音樂推薦、電影推薦、電子商務等。由于旅游信息紛繁復雜,所以將個性化推薦系統與旅游領域相結合的旅游推薦相對較少,因此本文是將協同過濾算法應用在旅游景點的推薦上。綜上所述,經濟飛速增長,智能時代的來臨,大量信息蜂擁而至,國內旅游網站對于個性化推薦算法的應用并不完善,也難以滿足用戶個性化的需求。通過協同過濾算法與旅游推薦的結合,將旅游信息的各個方面進行科學化的管理以及個性化的推薦,同時也可以豐富對旅游信息系統的研究。
國內外對協同過濾算法的應用已經很廣泛,比較典型的是電子商務和多媒體領域。同時經過多年的研究,協同算法也運用到很多推薦系統中,相對成熟的有用于電子郵件推薦的Tapestry、用于新聞推薦的GroupLens、用于音樂推薦的Ringo以及用于電影推薦的MovieLens等[2]。協同過濾算法主要分為基于用戶和基于物品兩種類型。比較典型的MovieLens采用的是基于用戶的協同過濾,觀影人在觀影后會對影片評分,通過評分的相似度來尋找相似愛好的觀影人,然后獲取相似用戶的愛好電影。比較知名的亞馬遜商城運用的是基于物品的協同過濾算法,通過對比物品的相似性來篩選出相似率高的物品進行推薦。就目前而言,所研究的協同過濾算法本身也存在著很多問題,比如初始用戶沒有歷史行為無法獲得協同推薦信息、推薦的準確性不高、延展性較差等[3]。對此專業人士提出很多解決方案,比如在考慮協同因素時加入時間這一因素、采用云模型等[4]。雖然該算法目前仍存在不足,但卻是解決用戶個性化需求問題的好方法。將基于協同過濾的個性化推薦算法與旅游推薦相結合已經成為滿足游客個性化需求的發展趨勢,而且該推薦系統可以提高用戶信息管理的效率。
基于web的旅游推薦系統開發設計的任務:首先是對基于協同過濾算法的推薦系統的發展背景、研究意義以及研究現狀進行論述。然后根據相關用戶進行需求分析確定系統開發的設計方案,主要設計的用戶包括游客和管理員。游客使用的功能包括出行攻略推薦、用戶評論、個人中心,管理員使用的功能包括管理員賬號管理、添加新聞、添加景區等。通過用戶和管理員角色功能模塊的設計以及協同過濾算法的實現,進行信息存儲和個性化推薦。最后實現上述模塊功能并在系統實現后對各個功能進行測試。
該系統是采用Java語言開發的,該語言具有跨平臺的無關性、面向對象、安全性得以保障、支持多個任務、多種編寫方式,代碼編寫簡單的特征[5],與其他程序開發語言相比,Java語言具有明顯的優勢和良好的發展趨勢,可以應用于網站以及大型游戲等方面。數據庫使用的是 MySQL,該數據庫對數據的存儲結構與其他存儲方式不同的是即使開發的系統數據庫不同,但是對數據的存儲和接口的使用方式可以是相同的,因此用MySQL數據庫存儲數據十分便捷。采用的是B/S結構,該結構主要是通過瀏覽器進行網站訪問,可以在遠程服務器上進行安裝,然后通過連接網絡就可以訪問,系統使用B/S結構進行開發具有極大的便利性,用戶使用起來就會不受時間、地點的限制[6]。
協同過濾推薦算法分為基于用戶的推薦算法和基于物品的推薦算法[7]。本文主要使用的是基于用戶的協同過濾算法。通過計算用戶對景點評論作為相似度權重,首先通過余弦相似度計算用戶歷史行為的相似性,然后將相似度靠前的用戶定義為相似用戶,最后將自己評論過的景點推薦給相似好友。概念圖如圖1所示。

圖1 協同過濾推薦概念圖
基于web的旅游推薦系統開發設計的目標是更好的管理協同過濾的旅游信息,對系統的開發目標確認后,對系統進行可行性分析,從技術、操作以及經濟等方面進行分析。
3.1.1 技術可行性
本系統開發采用Java,系統基于B/S結構以及MySQL 數據庫進行數據存儲,系統開發功能完整,使用簡單,建立的數據庫穩定并且安全,開發人員對系統開發技術易于掌握,所以基于協同過濾的旅游推薦系統在技術方面具有開發的可行性。
3.1.2 操作可行性
基于web的旅游推薦系統頁面設計簡潔大方,用戶可以直觀的選擇相關功能的使用。如果操作失誤會有報錯提示。本系統具有易操作、易管理、交互性好的特點。
3.1.3 經濟可行性
該系統開發環境是idea,用的數據庫是MySQL,這些軟件都可以購買。因此在開發經濟上成本低,開發規模小,開發周期較短,在經濟方面具有較高的可行性。
3.2.1 系統開發流程
在對系統進行具體模塊的詳細設計之前先做好需求分析以及功能模塊的整體設計[8]。完成詳細設計之后要對相應模塊進行測試以及完善。本系統的開發流程如圖2所示。

圖2 系統開發流程圖
3.2.2 用戶登錄流程
如果想要進入后臺管理系統就必須以管理員的身份登錄,游客第一次使用可以在不登錄的情況下瀏覽景區、新聞、攻略等,但是要想對景區進行評論就必須先在前臺登錄。如圖3所示。

圖3 登錄流程圖
3.2.3 系統操作流程
用戶要想實現前臺的全部功能,就要先憑注冊的賬號進行登錄。所輸入信息與數據信息比對,無誤可以進行各項前臺功能操作。操作流程如圖4所示。

圖4 系統操作流程圖
完成系統分析后要進行的是系統設計。系統設計主要包含詳細設計和總體設計[9]。設計在執行過程時客戶端向服務器發出請求,服務器將數據轉達到數據庫進行驗證比對然后又通過服務器將信息發回到客戶端。基于協同過濾的旅游推薦系統工作原理圖如圖5所示。

圖5 系統工作原理圖
構思系統架構圖是系統設計階段的主要部分,系統的總體架構決定了整個系統的模式,是系統的基礎[10]。基于協同過濾的旅游推薦系統的整體結構設計如圖6所示。

圖6 系統結構圖
數據庫是存儲數據信息的重要載體,在編寫數據庫之前先完成整體ER圖的設計,如圖7所示。

圖7 系統結構圖
(1)管理員賬號模塊:在后臺管理系統中,可以在賬號管理模塊對用戶的賬號信息進行添加或刪除,也可以通過賬號名或者添加時間來查找用戶的信息。
(2)用戶模塊:在用戶管理模塊,輸入用戶名、密碼、姓名、手機號等信息進行用戶添加。
(3)景點模塊:在后臺景點模塊,可以添加或者刪減景區信息也可以通過地區名、添加景區的時間來查找景點信息。
(4)新聞模塊:管理員對新聞管理進行查詢和添加、也可以根據新聞的名稱以及增添新聞的時間來查詢新聞信息等操作。
(5)評論模塊:管理員對評論管理進行編輯和刪除等操作。
(6)瀏覽記錄模塊:管理員對瀏覽記錄管理進行編輯和刪除等操作。
(7)出行攻略模塊:管理員對出行攻略管理進行編輯和刪除等操作。
(8)系統模塊:管理員對系統管理進行編輯和刪除等操作。
(1)登錄:游客輸入自己的賬號、密碼以及正確形式的驗證碼進行登錄,賬號和密碼與數據庫信息進行比對,若信息有誤會出現異常提示。如果信息核對正確,可以登錄成功,進入后臺管理系統。用戶在未登錄前可以進入系統首頁,可以在首頁看見協同推薦的景點。也可以選擇景點信息、新聞信息、出行攻略、用戶注冊以及后臺管理模塊。
(2)游客注冊:用戶填寫姓名、手機號等個人信息進行注冊,有了注冊的賬號方便進行前臺登錄。
(3)出行攻略:用戶可以查看出行攻略,了解具體出行方案,選擇合適心儀的攻略。
(4)景點信息:用戶可以在景區模塊查看景點具體信息,在詳細景點信息下面,可以編寫自己的評論。
(5)個人中心:用戶對個人中心進行修改密碼和修改個人資料等操作。
該系統采用SSM框架不僅便于數據信息的分類與管理,而且很大程度上減少了編寫程序的代碼量,然后將協同過濾的算法與景區推薦系統相結合,不僅在景區推薦上可以實現協同的作用,在推薦出行攻略時也同樣適用。隨著用戶評論的歷史行為增多,協同效果會逐漸明顯,從而更好地滿足用戶個性化需求,在很大程度上提高了檢索信息的效率。