楊萍



摘 要:通常的推薦系統不能滿足游客的個性化需求,尤其是民族文化旅游因其信息量大、游客需求類型多,當前的旅游信息推薦系統很難滿足其時效性。針對云南民族文化旅游實際情況,設計了旅游信息推薦算法,采用云服務器、MVC模式開發了旅游信息推薦系統。該系統能夠通過客戶信息、偏好規劃處最佳旅游路線,并實現旅游消息推送。與大型網站推薦的旅游攻略相比,該系統時效性強,能夠為游客提供更加合理的旅游路線。
關鍵詞:推薦算法;MVC模式;云服務器;時效性
中圖分類號:TP 391
文獻標志碼:A
文章編號:1007-757X(2020)11-0033-03
Abstract:The general recommendation system cannot meet the personalized needs of tourists, especially for the large amount of information and many types of tourists' needs. The current tourism information recommendation system is difficult to meet its timeliness. According to the actual situation of Yunnan ethnic culture tourism, this paper designs a tourism information recommendation algorithm, and develops a tourism information recommendation system using cloud server and MVC mode. The system can push the best travel route through customer information and preference planning. Compared with the tourism strategies recommended by large-scale websites, the system has strong timeliness and can provide more reasonable tourism routes for tourists.
Key words:recommendation algorithm;MVC mode;ECs;timeliness
0?引言
推薦系統廣泛應用于互聯網的內容社區、搜索引擎以及電子商務等領域,它在項目特性和用戶特性的基礎上面向客戶需求提供所需的項目,雙向提高了企業和用戶的效率[1]。但是,當前大眾化的推薦系統很難完全滿足旅游行業的需求,首先,很難捕捉到完整的用戶信息,向客戶精準推薦合適的項目;其次,用戶需求個性化特征明顯、需求各異,難以進行多維度項目匹配;最后,旅游項目的多樣性使得推薦結果難以全面滿足客戶需求。旅游推薦系統必須基于適用于旅游業的專業算法進行開發,由算法給出的結果來確定最適宜的旅游行程,并通過客戶端與用戶進行需求與結論的交互,以此來提高旅游推薦系統的有效性和多樣性,最大限度地簡化游客的準備環節并滿足其個性旅游的需求[2]。
1?旅游推薦系統整體設計
本系統的設計主要圍繞以下幾點展開:創建用戶興趣集;求解模型后針對用戶為景點評分;使用戶能夠直觀地選擇景點;按照景點的推薦結果基于專業算法為用戶提供最合理的行程規劃。此外,基于本系統開發了用戶客戶端。
1.1?系統結構設計
本系統主要包括數據庫、客戶端以及云服務器三個部分。用戶和景點的信息存儲于數據庫中,客戶端為用戶提供查詢服務和可視化信息,云服務器的主要作用是整合各種信息與客戶端輸入的需求以完成景點和行程推薦。系統結構及各部分工作流程,如圖1所示。
1.2?推薦算法設計
系統推薦算法主要包括3個過程。
步驟1:創建用戶興趣集,并基于該集建立推薦項目模型;
步驟2:以項目景點為主題,分為靜態(地理位置、游客評價等)和動態(是否適宜出行)兩個部分進行評分,使用戶能夠直觀地選擇目的地;
步驟3:結合游客的出發地和計劃出行時間為其推薦最合理的行程規劃,劃分出同批出行的旅客及其出行路線。
1.3?服務器架構
云服務器由HTTP服務器、后臺管理系統和數據庫三個部分組成,其整體架構及各部分工作流程,如圖2所示。
HTTP服務器接收客戶端用戶通過網絡所輸入的需求信息,并依據這些信息創建用戶模型,基于推薦算法為客戶進行出行規劃;后臺管理系統用于企業對用戶、景點的信息進行即時更新;上述信息全部存儲于數據庫中。
2?客戶端功能設計與實現
推薦系統通過客戶端面向客戶提供可視化服務,其功能完善性極其重要。
2.1?整體功能設計
客戶端由6個模塊組成,如圖3所示。
基本信息模塊,包括用戶認證信息、用戶輸入信息、用戶旅行記錄等;路線規劃模塊,為用戶提供地圖導航、路線規劃、路線更改、特色景點與商戶推薦等智能服務;消費模塊,為用戶提供就餐下榻地點預定、門票預定、商品團購等增值服務;信息推送模塊,向用戶提供定位、天氣信息、商品優惠等信息推動服務;行程模塊,記錄用戶的歷史行程、服務評價等信息;發現模塊,用于用戶出行體驗的分享、交流等。
2.2?客戶端關鍵功能設計與實現
推薦系統的功能主要依靠基本信息、路線規劃和行程三個模塊得以實現。
(1) 基本信息模塊
用戶認證的過程中需要填寫真實姓名、出生日期、性別、聯系方式等信息并設置登錄密碼,此外,系統支持多種登錄方式供用戶選擇,包括用戶名密碼登錄、
證碼登錄以及第三方軟件(微信、QQ等)登錄等[3]。此外,用戶可以根據需要絕對是否保存已出行行程,以供日后出行參考。
(2) 路線規劃模塊
用戶需要通過推薦系統所獲取的信息,最主要的部分都來自于路線規劃模塊,該模塊由輸入和顯示兩個部分構成。輸入部分的主要內容是用戶根據實際需要所錄入的行程持續時間、出發地、目的地、經費預算等信息。客戶端輸入部分用戶的輸入程序實現流程[4],如圖4所示。
顯示部分的主要內容是客戶端向用戶反饋的旅行路線推薦結果,這些結果用戶可選擇通過列表顯示,也可以選擇通過地圖顯示。
路線推薦并以列表或地圖展示實現過程的關鍵代碼如下。
<!—路線推薦列表-->
android:id="@+id/LinearLayout01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/ydg_top_bg"> android:id="@+id/explvrouteinfo" android:layout_width="match_parent" android:layout_height="wrap_content"> public View GetGroutView(int groupPosition,boolean isExpanded, View convertView,ViewGroup parent){ View view=convertView; if(view=null) view=inflater.inflate(R.layout.item_route,null); TextView remNum=(TextView)view.findViewById(R.id.recommendrum); …… public View getChildView(int groupPosition,int childPosition, boolean isLastChild,View convertView,ViewGroup parent){ View view=convertView; if(view=null) view=inflater.inflate(R.layout.listview_routespot,null); //選中路線時定位到地圖上 view.setTag(routes.get(groupPosition)); ListView listView=(ListView)view.findViewById(R.id.routespotlist); SpotInfoAdapter adapter=new SpotInfoAdapter(activity, routes.get(groupPosition).getSpotInfo(childPosition),childPosition); listView.setAdapter(adapter); (3) 消息推送模塊 系統后臺通過該模塊向用戶提供旅行中所需的位置信息、天氣信息、商品優惠信息等,屬于貼心服務項目,能夠增強用戶的旅行體驗。 其中,位置信息推送對于旅行中的客戶尤為重要,通過這些消息用戶能夠隨時了解整個行程的詳細信息,其實現流程,如圖5所示。 消息推送過程實現的關鍵代碼如下。 //開始定位 public booIean startLocationProvider(IMyLocationConsumer myLocationConsumer){ mMyLocationConsumer=myLocationConsumer; booIean result=false; for (final String provider:mLocationManager.getProviders(true)){ if(LocationManager.GPS_PROVIDER.equals(provider) ||LocationManager.NETWORK_PROVIDER.equals(provider)){ result=true; mLocationManager.requestLocationUpdates(provider,mLocationUpdateMinTime, mLocationUpdateMinDistance,this); …… mMapView.getTileProvider().getTileSource().getTileSystem(); final float radius=lastFix.getAccuracy() /(float)tileSystem.GroundResolution(lastFix.getLatitude(), mapView.getZoomLevel()); mCirclePaint.setAlpha(50); mCirclePaint.setStyle(Style.FILL); canvas.drawCircle(mMapCoords.x>>zoomDiff,mMapCoords.y>>zoomDiff, radius,mCirclePaint); mCirclePaint.setAlpha(150); mCirclePaint.setStyle(Style.STROKE); canvas.drawCircle(mMapCoords.x>>zoomDiff, radius,mCirelePaint); 3?系統應用測試 行程規劃功能是整個推薦系統的核心功能,系統測試主要圍繞規劃功能展開。從攜程網站摘選50篇關于云南昆明市的詳細旅游攻略、手記,創建包含行程距離、耗時等因素的數據集,對其中的景點進行多維度綜合評分。具體測試過程為:1) 由每篇攻略中篩選出景點數量、景點間距、行程總距離、景點逗留時長、行程總時長等數據作為多維度評分因子;2) 對各景點進行多維度評分,得出優選景點推薦;3) 基于景點多維度評分結果,通過本文提出的推薦算法,得到推薦行程的結果;4) 基于推薦行程計算其時效比數值(景點觀賞游玩時長/行程總距離);5) 對攻略行程和推薦行程的時效比進行比較分析。網上攻略與推薦行程中的旅游行程數據對比結果,如表1所示。 對兩表中的時效比數值可見,本系統通過推薦算法所得出的推薦行程相較于攻略文章中所總結的行程在時間和距離上具有明顯的優勢。提取所有數據繪制成時效比曲線圖能夠更加清晰地體現攻略行程與推薦行程的差異,如圖6所示。 在所選取的50條旅游行程攻略中,大多數本系統推薦行程的時效比數值都要高于原攻略,由此可見經過本系統推薦后游客能夠在出行需求不變的情況下獲得更佳的旅游體驗。 4?總結 本文針對當前旅行出游的旺盛需求設計了一種旅游推薦系統,解決了大部分游客用戶出行選擇難的問題,該系統基于專業的旅游算法按客戶意愿為其推薦最適宜的出行路線[5]。通過測試和實際驗證,系統功能有效、時效性強能夠幫助用戶提前指定最合理的旅游規劃。 參考文獻 [1] 牛俊潔,崔忠偉,趙晨潔,等.個性化旅游推薦技術研究及發展綜述[J].物聯網技術,2020,10(3):86-88. [2]?王萍,王明松.基于Hadoop的旅游景點推薦系統的設計與實現[J].信息與電腦(理論版),2020,32(4):86-87. [3]?祁明明,馬文明,單榮杰.基于循環神經網絡的旅游地點推薦系統設計與實現[J].電子技術與軟件工程,2020(1):184-185. [4]?周家昊,李民.基于旅游用戶數據和評論的推薦系統的設計[J].軟件,2019,40(11):174-177. [5]?李維.基于案例推理的浙江旅游智能推薦系統研究[J].中國集體經濟,2019(32):124-126. (收稿日期:2020.05.07)