陳 丹,王東燦,蔣玉香
(西南交通大學希望學院 四川 成都 610400)
大數據時代是信息過載的時代,個人旅游決策干擾因素驟然增加。與此同時,推薦系統得到越來越廣泛的應用,其應用范疇由電子商務領域延伸到社交網絡、旅游推薦等領域。在旅游推薦領域,較之搜索引擎,推薦系統具有“私人定制”特點,可貼合用戶使用習慣,滿足不同用戶獨特旅游需求。協同過濾是一種智能推薦算法,可以進一步提升推薦系統的運行精準度。因此,探究基于協同過濾的景區智能推薦系統具有非常突出的現實意義。
傳統協同過濾算法可以計算用戶(或物品)相似度,推薦相似用戶(或物品)相關的用戶(或物品),但是存在長尾效應(零散差異化需求在需求曲線上形成長長的“尾巴”,促使冷門推薦物累加形成一個較熱門推薦物更大的結果),導致部分冷門但用戶可能會感興趣的商品難以出現在用戶的推薦列表內,埋下旅游攻略推薦算法對應推薦度偏離實際的隱患,抑制最終推薦的攻略覆蓋度。基于此,綜合考慮用戶、城市、攻略之間的聯系,在User-CF-1 算法和Item-CF-1 算法混合協同過濾算法(以下簡稱Final 算法)內,分別計算基于旅游用戶的推薦度、基于旅游攻略的推薦度、基于旅游城市推薦的推薦度并平衡3 個推薦度[1]。同時全面研究旅游攻略產品,根據景區旅游攻略的數據特點以及先推薦城市景區再推薦旅游攻略的特殊流程,加入城市熱度和攻略熱度等影響旅游攻略推薦的各種參數,并對相關參數加以懲罰,以抑制熱度高的城市景區景點或攻略推薦度,促使冷門的城市景區景點或攻略能順利展示在推薦列表內,提高旅游推薦覆蓋度。
算法輸入為User-Item 評分矩陣Final,最近鄰個數k和前列排名值N,輸出列表內前列排名景區數據。
第一步,收集User 評分數據,預先進行清洗過濾、格式轉換,建立User-Item 評分矩陣Final,如式(1)所示。
式(1)中,每一個User 為一個m維向量,其中Nnm表示第n個User 對第m個景區的評分值。在User 為系統已評分游客時,可在式(1)內借助User 特征向量Um=(Nm1,Nm2,…,Nmm)與其他游客特征向量,開展相似度運算,獲得相似用戶;在User 為未對系統內景區評分游客時,根據游客信息提取特征對其開展相似度計算,獲得相似游客對景區評分加權數作為新游客評分加入Final 矩陣。
第二步,收集景區評價指標數據,預先清洗過濾、格式轉換,建立scenic-evaluate 指標矩陣Jmn。因景區數量較為穩定且遠遠小于用戶數量,所獲得的scenic-evaluate 指標矩陣數據密集,變量之間基本存在共有值,根據景區相似度輸出要求,可以Final 矩陣內數據為依據,推測評價指標體系每一項數據權重,構建指標矩陣如式(2)所示。
式(2)中,每一行代表1 個景區的數據,每一列代表已構建評價指標數據。將每一列數據、指標權重相乘,可得到scenic-evaluate 指標相似度。

表1 普通游客信息表(局部)
選取前20 名作為景區相似景區,相似景區列表記錄為I1,可設定景區核心代碼如下:

第三步,根據層次分析思路,確定景區評價指標的權重。
第四步,根據評價指標權重,加入scenic-evaluate 指標矩陣內指標類數據,獲得景區之間相似度。以景區a、景區b為例,將景區a內指標數據集合Ja(a1,a2,…,an)(n≥1)與b的指標集合Jb(b1,b2,…,bn)(n≥1)代入矩陣Jmn,得出景區a、景區b的相似度sim(a,b)。
第五步,計算Final 矩陣中每2 個景點的相似度值,根據結果排序,選取排名前列的最近毗鄰集合。
第六步,在Final 矩陣中,利用User 對景點的評分,推測游客間相似度,獲得游客最近鄰游客,選取排名前列的鄰居游客。
第七步,根據排名前列的鄰居游客對游客未評價景區的評分,以加權方式,預先估測游客對未評價景區的評分。
第八步,判斷預先估測評價分值中較高的景區數量,在景區數量少于推薦列表個數時,利用列表中已有景區的相似經典補充缺失部分[2]。
景區智能推薦系統的服務對象為游客,主要參與者為普通游客和系統管理維護人員[3]。普通游客需要景區智能推薦系統具有景區信息瀏覽、未注冊或未登錄熱門景區推薦、景區評分查看、景區攻略發布與分享、個人名稱與密碼修改、預訂信息修改等功能。
系統管理維護人員要求景區智能推薦系統具有用戶信息管理(含注冊用戶管理、密碼修改)、景區資訊管理、站內新聞管理、旅游攻略信息管理等幾個部分。
“Don’t put me off,Anna.Are you afraid of being chaotic?”(1972:247)
除功能需求外,基于協同過濾的景區智能推薦系統還需要滿足安全性需求,確保普通游客登錄系統安全以及數據存取安全。同時系統應當可根據外部需求動態而擴展,允許優化維護,適應未來發展需要[4]。
基于協同過濾算法的系統總體架構如圖1 所示。

圖1 基于協同過濾的景區智能推薦系統總體框架
由圖1 可知,基于協同過濾的景區智能推薦系統由數據應用層、數據接口層、數據存儲層、數據采集層幾個層級組成。其中數據應用層主要是系統操作界面,包括旅游資訊、景區推薦、旅游小助手、個人中心等。旅游資訊主要根據普通游客歷史瀏覽喜好推薦網絡爬蟲采集的旅游新聞、圖片、短視頻信息;景區推薦主要根據改進Final 算法生成推薦列表,便于用戶查看景區推薦信息;旅游小助手可將后臺智能生成推薦數據推送至APP 端,為用戶推薦景區周邊與用戶需求相符的內容;個人中心主要是用戶個人資料設置以及歷史訪問足跡查看位置。
數據接口層主要為編程開發訪問服務器Websocket接口;數據存儲層主要為分布式數據庫,包括非結構化數據庫、MySQL 結構化數據庫;數據采集層主要為網絡爬蟲、旅游APP 接口[5]。
在系統數據庫設計時,可以先進行數據模型的構建,如景區實體數據模型如圖2 所示。

圖2 景區實體數據模型
由圖2 可知,景區實體數據模型是景區智能推薦的重要支撐,有景區編號、景區介紹、地址等幾個屬性。在景區實體數據模型構建后,可以從實體與實體之間聯系著手,進行數據庫表的構建,包括普通游客信息表、景區推薦信息表、景區攻略信息表、后臺維護管理人員信息表等。以普通游客信息表為例,局部數據庫表信息如表1 所示。
基于協同過濾的景區智能推薦系統實現環境為Windows 10,網絡站點服務器為MyEclipse 2022.1.0 +Tomcat 8.5 +JDK 8.5, 數據庫管理系統為 SQL Server 2020。
旅游景點推薦界面主要面對普通游客,需提供景區信息、景區攻略、景區線路等搜索、瀏覽、留言、分享服務。其中景區信息瀏覽為站內瀏覽模式,游客可在系統首頁瀏覽推薦信息。根據游客歷史瀏覽信息的差異,旅游景點推薦界面顯示景區信息也具有一定差異。對于部分新注冊登錄游客,因其無歷史瀏覽數據,僅推薦當前熱門旅游景區;對于已注冊登錄一段時間的游客,系統自動記錄其歷史瀏覽數據,借助協同過濾技術為其推薦所需的旅游景區。局部實現代碼如下所示:
3.2.2 用戶注冊登錄界面
用戶注冊登錄界面主要面對系統用戶,需要提供系統賬戶注冊、系統登錄以及登錄后用戶個人信息修改、密碼口令修改服務。在注冊時,系統要求用戶提供有效名稱和密碼口令,并自動驗證用戶輸入信息是否與已注冊信息重復,若重復,則提醒用戶重新注冊。在用戶登錄界面,系統要求用戶填寫注冊名及密碼口令,并在后臺驗證用戶輸入注冊名、密碼是否有誤,一方有誤即提示重新登錄,當且僅當注冊名、密碼均正確的情況下,用戶可進入景區旅游推薦系統主界面。進入主界面后,用戶可以根據需要修改個人名稱、簡介、簽名等信息,也可以重新設置密碼口令。若需重新設置密碼口令,用戶需利用注冊手機號重新驗證。
3.2.3 后臺信息管理界面
后臺信息管理界面主要面對系統管理維護人員,是系統前端運行的基礎,主要包括用戶信息管理、景區信息管理、景區攻略管理等。在功能齊全、操作簡單便捷原則指導下,后臺界面可劃分為功能列表、系統名稱、操作界面三個部分。在功能列表部分,后臺操作者可以點擊各個功能列表,根據需要更新功能;對于系統名稱,權限內的后臺操作者可以進行修改;在操作界面,后臺操作者可以在個人權限范圍內進行操作。
景區旅游攻略推薦是系統核心功能,也是測試的主要對象。因攻略是旅行市場的一款產品,由用戶創建,被用戶閱覽,優質旅游攻略包含標題、內容、旅游城市、游玩景點,平均旅游攻略篇數過萬,覆蓋多個城市,且多數城市相互毗鄰。基于此,系統功能測試選擇覆蓋度指標,利用游客覆蓋度、城市覆蓋度、旅游攻略覆蓋度幾個二級指標進行評價,覆蓋度高代表通過基于協同過濾的景區智能推薦系統推薦景區能力強,覆蓋度低則表示基于協同過濾算法的景區智能推薦系統推薦效果不佳。在系統核心功能測試指標及判定依據明確的情況下,選擇旅游網站真實用戶,評測的普通游客用戶歷史行為記錄為42 362 條,優質旅游攻略為11 251 篇,城市為1 525 個,分別計算User-CF-1 算法、Item-CF-1 算法、Final 算法支持下的景區智能推薦系統游客覆蓋度、城市覆蓋度、旅游功率覆蓋度。得出基于用戶協同過濾算法的景區智能推薦系統覆蓋度見表2。

表2 基于用戶協同過濾算法的景區智能推薦系統覆蓋度 %
由表2 可知,基于Final 協同過濾算法的景區智能推薦系統游客覆蓋度、城市覆蓋度、旅游攻略覆蓋度最高,分別為44.36%、78.36%、49.68%,各項覆蓋度指標均高于基于User-CF-1 算法的景區智能推薦系統覆蓋度、基于Item-CF-1 算法的景區智能推薦系統覆蓋度,表明改進的Final 算法推薦效果較佳,基于Final 算法的景區智能推薦系統具有較大的推廣應用價值。
綜上所述,協同過濾推薦算法是智能推薦系統的核心算法,利用協同過濾算法對景區景點信息進行過濾與選取,可以有效解決景區景點信息泛濫問題,并為游客提供個性化推薦方案。借鑒協同過濾系統Tapestry 開發經驗,景區可以整合傳統User-CF-1 算法和Item-CF-1 算法兩種協同過濾推薦算法,打造一個極具特色的旅游攻略推薦系統,增加推薦攻略的覆蓋度,解決“長尾效應”的推薦問題。進而在景區智能推薦系統中,分析游客歷史旅游行為,對景區景點信息進行分類,并為不同游客提供個性化旅游建議,滿足游客個性化游覽需求。