陳 丹,王東燦,蔣玉香
(西南交通大學希望學院 四川 成都 610400)
大數(shù)據(jù)時代是信息過載的時代,個人旅游決策干擾因素驟然增加。與此同時,推薦系統(tǒng)得到越來越廣泛的應用,其應用范疇由電子商務領域延伸到社交網(wǎng)絡、旅游推薦等領域。在旅游推薦領域,較之搜索引擎,推薦系統(tǒng)具有“私人定制”特點,可貼合用戶使用習慣,滿足不同用戶獨特旅游需求。協(xié)同過濾是一種智能推薦算法,可以進一步提升推薦系統(tǒng)的運行精準度。因此,探究基于協(xié)同過濾的景區(qū)智能推薦系統(tǒng)具有非常突出的現(xiàn)實意義。
傳統(tǒng)協(xié)同過濾算法可以計算用戶(或物品)相似度,推薦相似用戶(或物品)相關的用戶(或物品),但是存在長尾效應(零散差異化需求在需求曲線上形成長長的“尾巴”,促使冷門推薦物累加形成一個較熱門推薦物更大的結果),導致部分冷門但用戶可能會感興趣的商品難以出現(xiàn)在用戶的推薦列表內,埋下旅游攻略推薦算法對應推薦度偏離實際的隱患,抑制最終推薦的攻略覆蓋度。基于此,綜合考慮用戶、城市、攻略之間的聯(lián)系,在User-CF-1 算法和Item-CF-1 算法混合協(xié)同過濾算法(以下簡稱Final 算法)內,分別計算基于旅游用戶的推薦度、基于旅游攻略的推薦度、基于旅游城市推薦的推薦度并平衡3 個推薦度[1]。同時全面研究旅游攻略產(chǎn)品,根據(jù)景區(qū)旅游攻略的數(shù)據(jù)特點以及先推薦城市景區(qū)再推薦旅游攻略的特殊流程,加入城市熱度和攻略熱度等影響旅游攻略推薦的各種參數(shù),并對相關參數(shù)加以懲罰,以抑制熱度高的城市景區(qū)景點或攻略推薦度,促使冷門的城市景區(qū)景點或攻略能順利展示在推薦列表內,提高旅游推薦覆蓋度。
算法輸入為User-Item 評分矩陣Final,最近鄰個數(shù)k和前列排名值N,輸出列表內前列排名景區(qū)數(shù)據(jù)。
第一步,收集User 評分數(shù)據(jù),預先進行清洗過濾、格式轉換,建立User-Item 評分矩陣Final,如式(1)所示。
式(1)中,每一個User 為一個m維向量,其中Nnm表示第n個User 對第m個景區(qū)的評分值。在User 為系統(tǒng)已評分游客時,可在式(1)內借助User 特征向量Um=(Nm1,Nm2,…,Nmm)與其他游客特征向量,開展相似度運算,獲得相似用戶;在User 為未對系統(tǒng)內景區(qū)評分游客時,根據(jù)游客信息提取特征對其開展相似度計算,獲得相似游客對景區(qū)評分加權數(shù)作為新游客評分加入Final 矩陣。
第二步,收集景區(qū)評價指標數(shù)據(jù),預先清洗過濾、格式轉換,建立scenic-evaluate 指標矩陣Jmn。因景區(qū)數(shù)量較為穩(wěn)定且遠遠小于用戶數(shù)量,所獲得的scenic-evaluate 指標矩陣數(shù)據(jù)密集,變量之間基本存在共有值,根據(jù)景區(qū)相似度輸出要求,可以Final 矩陣內數(shù)據(jù)為依據(jù),推測評價指標體系每一項數(shù)據(jù)權重,構建指標矩陣如式(2)所示。
式(2)中,每一行代表1 個景區(qū)的數(shù)據(jù),每一列代表已構建評價指標數(shù)據(jù)。將每一列數(shù)據(jù)、指標權重相乘,可得到scenic-evaluate 指標相似度。
表1 普通游客信息表(局部)
選取前20 名作為景區(qū)相似景區(qū),相似景區(qū)列表記錄為I1,可設定景區(qū)核心代碼如下:
第三步,根據(jù)層次分析思路,確定景區(qū)評價指標的權重。
第四步,根據(jù)評價指標權重,加入scenic-evaluate 指標矩陣內指標類數(shù)據(jù),獲得景區(qū)之間相似度。以景區(qū)a、景區(qū)b為例,將景區(qū)a內指標數(shù)據(jù)集合Ja(a1,a2,…,an)(n≥1)與b的指標集合Jb(b1,b2,…,bn)(n≥1)代入矩陣Jmn,得出景區(qū)a、景區(qū)b的相似度sim(a,b)。
第五步,計算Final 矩陣中每2 個景點的相似度值,根據(jù)結果排序,選取排名前列的最近毗鄰集合。
第六步,在Final 矩陣中,利用User 對景點的評分,推測游客間相似度,獲得游客最近鄰游客,選取排名前列的鄰居游客。
第七步,根據(jù)排名前列的鄰居游客對游客未評價景區(qū)的評分,以加權方式,預先估測游客對未評價景區(qū)的評分。
第八步,判斷預先估測評價分值中較高的景區(qū)數(shù)量,在景區(qū)數(shù)量少于推薦列表個數(shù)時,利用列表中已有景區(qū)的相似經(jīng)典補充缺失部分[2]。
景區(qū)智能推薦系統(tǒng)的服務對象為游客,主要參與者為普通游客和系統(tǒng)管理維護人員[3]。普通游客需要景區(qū)智能推薦系統(tǒng)具有景區(qū)信息瀏覽、未注冊或未登錄熱門景區(qū)推薦、景區(qū)評分查看、景區(qū)攻略發(fā)布與分享、個人名稱與密碼修改、預訂信息修改等功能。
系統(tǒng)管理維護人員要求景區(qū)智能推薦系統(tǒng)具有用戶信息管理(含注冊用戶管理、密碼修改)、景區(qū)資訊管理、站內新聞管理、旅游攻略信息管理等幾個部分。
“Don’t put me off,Anna.Are you afraid of being chaotic?”(1972:247)
除功能需求外,基于協(xié)同過濾的景區(qū)智能推薦系統(tǒng)還需要滿足安全性需求,確保普通游客登錄系統(tǒng)安全以及數(shù)據(jù)存取安全。同時系統(tǒng)應當可根據(jù)外部需求動態(tài)而擴展,允許優(yōu)化維護,適應未來發(fā)展需要[4]。
基于協(xié)同過濾算法的系統(tǒng)總體架構如圖1 所示。
圖1 基于協(xié)同過濾的景區(qū)智能推薦系統(tǒng)總體框架
由圖1 可知,基于協(xié)同過濾的景區(qū)智能推薦系統(tǒng)由數(shù)據(jù)應用層、數(shù)據(jù)接口層、數(shù)據(jù)存儲層、數(shù)據(jù)采集層幾個層級組成。其中數(shù)據(jù)應用層主要是系統(tǒng)操作界面,包括旅游資訊、景區(qū)推薦、旅游小助手、個人中心等。旅游資訊主要根據(jù)普通游客歷史瀏覽喜好推薦網(wǎng)絡爬蟲采集的旅游新聞、圖片、短視頻信息;景區(qū)推薦主要根據(jù)改進Final 算法生成推薦列表,便于用戶查看景區(qū)推薦信息;旅游小助手可將后臺智能生成推薦數(shù)據(jù)推送至APP 端,為用戶推薦景區(qū)周邊與用戶需求相符的內容;個人中心主要是用戶個人資料設置以及歷史訪問足跡查看位置。
數(shù)據(jù)接口層主要為編程開發(fā)訪問服務器Websocket接口;數(shù)據(jù)存儲層主要為分布式數(shù)據(jù)庫,包括非結構化數(shù)據(jù)庫、MySQL 結構化數(shù)據(jù)庫;數(shù)據(jù)采集層主要為網(wǎng)絡爬蟲、旅游APP 接口[5]。
在系統(tǒng)數(shù)據(jù)庫設計時,可以先進行數(shù)據(jù)模型的構建,如景區(qū)實體數(shù)據(jù)模型如圖2 所示。
圖2 景區(qū)實體數(shù)據(jù)模型
由圖2 可知,景區(qū)實體數(shù)據(jù)模型是景區(qū)智能推薦的重要支撐,有景區(qū)編號、景區(qū)介紹、地址等幾個屬性。在景區(qū)實體數(shù)據(jù)模型構建后,可以從實體與實體之間聯(lián)系著手,進行數(shù)據(jù)庫表的構建,包括普通游客信息表、景區(qū)推薦信息表、景區(qū)攻略信息表、后臺維護管理人員信息表等。以普通游客信息表為例,局部數(shù)據(jù)庫表信息如表1 所示。
基于協(xié)同過濾的景區(qū)智能推薦系統(tǒng)實現(xiàn)環(huán)境為Windows 10,網(wǎng)絡站點服務器為MyEclipse 2022.1.0 +Tomcat 8.5 +JDK 8.5, 數(shù)據(jù)庫管理系統(tǒng)為 SQL Server 2020。
旅游景點推薦界面主要面對普通游客,需提供景區(qū)信息、景區(qū)攻略、景區(qū)線路等搜索、瀏覽、留言、分享服務。其中景區(qū)信息瀏覽為站內瀏覽模式,游客可在系統(tǒng)首頁瀏覽推薦信息。根據(jù)游客歷史瀏覽信息的差異,旅游景點推薦界面顯示景區(qū)信息也具有一定差異。對于部分新注冊登錄游客,因其無歷史瀏覽數(shù)據(jù),僅推薦當前熱門旅游景區(qū);對于已注冊登錄一段時間的游客,系統(tǒng)自動記錄其歷史瀏覽數(shù)據(jù),借助協(xié)同過濾技術為其推薦所需的旅游景區(qū)。局部實現(xiàn)代碼如下所示:
3.2.2 用戶注冊登錄界面
用戶注冊登錄界面主要面對系統(tǒng)用戶,需要提供系統(tǒng)賬戶注冊、系統(tǒng)登錄以及登錄后用戶個人信息修改、密碼口令修改服務。在注冊時,系統(tǒng)要求用戶提供有效名稱和密碼口令,并自動驗證用戶輸入信息是否與已注冊信息重復,若重復,則提醒用戶重新注冊。在用戶登錄界面,系統(tǒng)要求用戶填寫注冊名及密碼口令,并在后臺驗證用戶輸入注冊名、密碼是否有誤,一方有誤即提示重新登錄,當且僅當注冊名、密碼均正確的情況下,用戶可進入景區(qū)旅游推薦系統(tǒng)主界面。進入主界面后,用戶可以根據(jù)需要修改個人名稱、簡介、簽名等信息,也可以重新設置密碼口令。若需重新設置密碼口令,用戶需利用注冊手機號重新驗證。
3.2.3 后臺信息管理界面
后臺信息管理界面主要面對系統(tǒng)管理維護人員,是系統(tǒng)前端運行的基礎,主要包括用戶信息管理、景區(qū)信息管理、景區(qū)攻略管理等。在功能齊全、操作簡單便捷原則指導下,后臺界面可劃分為功能列表、系統(tǒng)名稱、操作界面三個部分。在功能列表部分,后臺操作者可以點擊各個功能列表,根據(jù)需要更新功能;對于系統(tǒng)名稱,權限內的后臺操作者可以進行修改;在操作界面,后臺操作者可以在個人權限范圍內進行操作。
景區(qū)旅游攻略推薦是系統(tǒng)核心功能,也是測試的主要對象。因攻略是旅行市場的一款產(chǎn)品,由用戶創(chuàng)建,被用戶閱覽,優(yōu)質旅游攻略包含標題、內容、旅游城市、游玩景點,平均旅游攻略篇數(shù)過萬,覆蓋多個城市,且多數(shù)城市相互毗鄰?;诖?,系統(tǒng)功能測試選擇覆蓋度指標,利用游客覆蓋度、城市覆蓋度、旅游攻略覆蓋度幾個二級指標進行評價,覆蓋度高代表通過基于協(xié)同過濾的景區(qū)智能推薦系統(tǒng)推薦景區(qū)能力強,覆蓋度低則表示基于協(xié)同過濾算法的景區(qū)智能推薦系統(tǒng)推薦效果不佳。在系統(tǒng)核心功能測試指標及判定依據(jù)明確的情況下,選擇旅游網(wǎng)站真實用戶,評測的普通游客用戶歷史行為記錄為42 362 條,優(yōu)質旅游攻略為11 251 篇,城市為1 525 個,分別計算User-CF-1 算法、Item-CF-1 算法、Final 算法支持下的景區(qū)智能推薦系統(tǒng)游客覆蓋度、城市覆蓋度、旅游功率覆蓋度。得出基于用戶協(xié)同過濾算法的景區(qū)智能推薦系統(tǒng)覆蓋度見表2。
表2 基于用戶協(xié)同過濾算法的景區(qū)智能推薦系統(tǒng)覆蓋度 %
由表2 可知,基于Final 協(xié)同過濾算法的景區(qū)智能推薦系統(tǒng)游客覆蓋度、城市覆蓋度、旅游攻略覆蓋度最高,分別為44.36%、78.36%、49.68%,各項覆蓋度指標均高于基于User-CF-1 算法的景區(qū)智能推薦系統(tǒng)覆蓋度、基于Item-CF-1 算法的景區(qū)智能推薦系統(tǒng)覆蓋度,表明改進的Final 算法推薦效果較佳,基于Final 算法的景區(qū)智能推薦系統(tǒng)具有較大的推廣應用價值。
綜上所述,協(xié)同過濾推薦算法是智能推薦系統(tǒng)的核心算法,利用協(xié)同過濾算法對景區(qū)景點信息進行過濾與選取,可以有效解決景區(qū)景點信息泛濫問題,并為游客提供個性化推薦方案。借鑒協(xié)同過濾系統(tǒng)Tapestry 開發(fā)經(jīng)驗,景區(qū)可以整合傳統(tǒng)User-CF-1 算法和Item-CF-1 算法兩種協(xié)同過濾推薦算法,打造一個極具特色的旅游攻略推薦系統(tǒng),增加推薦攻略的覆蓋度,解決“長尾效應”的推薦問題。進而在景區(qū)智能推薦系統(tǒng)中,分析游客歷史旅游行為,對景區(qū)景點信息進行分類,并為不同游客提供個性化旅游建議,滿足游客個性化游覽需求。