楊萍
摘 要:通常的推薦系統(tǒng)不能滿足游客的個性化需求,尤其是民族文化旅游因其信息量大、游客需求類型多,當前的旅游信息推薦系統(tǒng)很難滿足其時效性。針對云南民族文化旅游實際情況,設(shè)計了旅游信息推薦算法,采用云服務(wù)器、MVC模式開發(fā)了旅游信息推薦系統(tǒng)。該系統(tǒng)能夠通過客戶信息、偏好規(guī)劃處最佳旅游路線,并實現(xiàn)旅游消息推送。與大型網(wǎng)站推薦的旅游攻略相比,該系統(tǒng)時效性強,能夠為游客提供更加合理的旅游路線。
關(guān)鍵詞:推薦算法;MVC模式;云服務(wù)器;時效性
中圖分類號: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?引言
推薦系統(tǒng)廣泛應(yīng)用于互聯(lián)網(wǎng)的內(nèi)容社區(qū)、搜索引擎以及電子商務(wù)等領(lǐng)域,它在項目特性和用戶特性的基礎(chǔ)上面向客戶需求提供所需的項目,雙向提高了企業(yè)和用戶的效率[1]。但是,當前大眾化的推薦系統(tǒng)很難完全滿足旅游行業(yè)的需求,首先,很難捕捉到完整的用戶信息,向客戶精準推薦合適的項目;其次,用戶需求個性化特征明顯、需求各異,難以進行多維度項目匹配;最后,旅游項目的多樣性使得推薦結(jié)果難以全面滿足客戶需求。旅游推薦系統(tǒng)必須基于適用于旅游業(yè)的專業(yè)算法進行開發(fā),由算法給出的結(jié)果來確定最適宜的旅游行程,并通過客戶端與用戶進行需求與結(jié)論的交互,以此來提高旅游推薦系統(tǒng)的有效性和多樣性,最大限度地簡化游客的準備環(huán)節(jié)并滿足其個性旅游的需求[2]。
1?旅游推薦系統(tǒng)整體設(shè)計
本系統(tǒng)的設(shè)計主要圍繞以下幾點展開:創(chuàng)建用戶興趣集;求解模型后針對用戶為景點評分;使用戶能夠直觀地選擇景點;按照景點的推薦結(jié)果基于專業(yè)算法為用戶提供最合理的行程規(guī)劃。此外,基于本系統(tǒng)開發(fā)了用戶客戶端。
1.1?系統(tǒng)結(jié)構(gòu)設(shè)計
本系統(tǒng)主要包括數(shù)據(jù)庫、客戶端以及云服務(wù)器三個部分。用戶和景點的信息存儲于數(shù)據(jù)庫中,客戶端為用戶提供查詢服務(wù)和可視化信息,云服務(wù)器的主要作用是整合各種信息與客戶端輸入的需求以完成景點和行程推薦。系統(tǒng)結(jié)構(gòu)及各部分工作流程,如圖1所示。
1.2?推薦算法設(shè)計
系統(tǒng)推薦算法主要包括3個過程。
步驟1:創(chuàng)建用戶興趣集,并基于該集建立推薦項目模型;
步驟2:以項目景點為主題,分為靜態(tài)(地理位置、游客評價等)和動態(tài)(是否適宜出行)兩個部分進行評分,使用戶能夠直觀地選擇目的地;
步驟3:結(jié)合游客的出發(fā)地和計劃出行時間為其推薦最合理的行程規(guī)劃,劃分出同批出行的旅客及其出行路線。
1.3?服務(wù)器架構(gòu)
云服務(wù)器由HTTP服務(wù)器、后臺管理系統(tǒng)和數(shù)據(jù)庫三個部分組成,其整體架構(gòu)及各部分工作流程,如圖2所示。
HTTP服務(wù)器接收客戶端用戶通過網(wǎng)絡(luò)所輸入的需求信息,并依據(jù)這些信息創(chuàng)建用戶模型,基于推薦算法為客戶進行出行規(guī)劃;后臺管理系統(tǒng)用于企業(yè)對用戶、景點的信息進行即時更新;上述信息全部存儲于數(shù)據(jù)庫中。
2?客戶端功能設(shè)計與實現(xiàn)
推薦系統(tǒng)通過客戶端面向客戶提供可視化服務(wù),其功能完善性極其重要。
2.1?整體功能設(shè)計
客戶端由6個模塊組成,如圖3所示。
基本信息模塊,包括用戶認證信息、用戶輸入信息、用戶旅行記錄等;路線規(guī)劃模塊,為用戶提供地圖導(dǎo)航、路線規(guī)劃、路線更改、特色景點與商戶推薦等智能服務(wù);消費模塊,為用戶提供就餐下榻地點預(yù)定、門票預(yù)定、商品團購等增值服務(wù);信息推送模塊,向用戶提供定位、天氣信息、商品優(yōu)惠等信息推動服務(wù);行程模塊,記錄用戶的歷史行程、服務(wù)評價等信息;發(fā)現(xiàn)模塊,用于用戶出行體驗的分享、交流等。
2.2?客戶端關(guān)鍵功能設(shè)計與實現(xiàn)
推薦系統(tǒng)的功能主要依靠基本信息、路線規(guī)劃和行程三個模塊得以實現(xiàn)。
(1) 基本信息模塊
用戶認證的過程中需要填寫真實姓名、出生日期、性別、聯(lián)系方式等信息并設(shè)置登錄密碼,此外,系統(tǒng)支持多種登錄方式供用戶選擇,包括用戶名密碼登錄、
證碼登錄以及第三方軟件(微信、QQ等)登錄等[3]。此外,用戶可以根據(jù)需要絕對是否保存已出行行程,以供日后出行參考。
(2) 路線規(guī)劃模塊
用戶需要通過推薦系統(tǒng)所獲取的信息,最主要的部分都來自于路線規(guī)劃模塊,該模塊由輸入和顯示兩個部分構(gòu)成。輸入部分的主要內(nèi)容是用戶根據(jù)實際需要所錄入的行程持續(xù)時間、出發(fā)地、目的地、經(jīng)費預(yù)算等信息??蛻舳溯斎氩糠钟脩舻妮斎氤绦?qū)崿F(xiàn)流程[4],如圖4所示。
顯示部分的主要內(nèi)容是客戶端向用戶反饋的旅行路線推薦結(jié)果,這些結(jié)果用戶可選擇通過列表顯示,也可以選擇通過地圖顯示。
路線推薦并以列表或地圖展示實現(xiàn)過程的關(guān)鍵代碼如下。
<!—路線推薦列表-->
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) 消息推送模塊 系統(tǒng)后臺通過該模塊向用戶提供旅行中所需的位置信息、天氣信息、商品優(yōu)惠信息等,屬于貼心服務(wù)項目,能夠增強用戶的旅行體驗。 其中,位置信息推送對于旅行中的客戶尤為重要,通過這些消息用戶能夠隨時了解整個行程的詳細信息,其實現(xiàn)流程,如圖5所示。 消息推送過程實現(xiàn)的關(guān)鍵代碼如下。 //開始定位 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?系統(tǒng)應(yīng)用測試 行程規(guī)劃功能是整個推薦系統(tǒng)的核心功能,系統(tǒng)測試主要圍繞規(guī)劃功能展開。從攜程網(wǎng)站摘選50篇關(guān)于云南昆明市的詳細旅游攻略、手記,創(chuàng)建包含行程距離、耗時等因素的數(shù)據(jù)集,對其中的景點進行多維度綜合評分。具體測試過程為:1) 由每篇攻略中篩選出景點數(shù)量、景點間距、行程總距離、景點逗留時長、行程總時長等數(shù)據(jù)作為多維度評分因子;2) 對各景點進行多維度評分,得出優(yōu)選景點推薦;3) 基于景點多維度評分結(jié)果,通過本文提出的推薦算法,得到推薦行程的結(jié)果;4) 基于推薦行程計算其時效比數(shù)值(景點觀賞游玩時長/行程總距離);5) 對攻略行程和推薦行程的時效比進行比較分析。網(wǎng)上攻略與推薦行程中的旅游行程數(shù)據(jù)對比結(jié)果,如表1所示。 對兩表中的時效比數(shù)值可見,本系統(tǒng)通過推薦算法所得出的推薦行程相較于攻略文章中所總結(jié)的行程在時間和距離上具有明顯的優(yōu)勢。提取所有數(shù)據(jù)繪制成時效比曲線圖能夠更加清晰地體現(xiàn)攻略行程與推薦行程的差異,如圖6所示。 在所選取的50條旅游行程攻略中,大多數(shù)本系統(tǒng)推薦行程的時效比數(shù)值都要高于原攻略,由此可見經(jīng)過本系統(tǒng)推薦后游客能夠在出行需求不變的情況下獲得更佳的旅游體驗。 4?總結(jié) 本文針對當前旅行出游的旺盛需求設(shè)計了一種旅游推薦系統(tǒng),解決了大部分游客用戶出行選擇難的問題,該系統(tǒng)基于專業(yè)的旅游算法按客戶意愿為其推薦最適宜的出行路線[5]。通過測試和實際驗證,系統(tǒng)功能有效、時效性強能夠幫助用戶提前指定最合理的旅游規(guī)劃。 參考文獻 [1] ??崳拗覀?,趙晨潔,等.個性化旅游推薦技術(shù)研究及發(fā)展綜述[J].物聯(lián)網(wǎng)技術(shù),2020,10(3):86-88. [2]?王萍,王明松.基于Hadoop的旅游景點推薦系統(tǒng)的設(shè)計與實現(xiàn)[J].信息與電腦(理論版),2020,32(4):86-87. [3]?祁明明,馬文明,單榮杰.基于循環(huán)神經(jīng)網(wǎng)絡(luò)的旅游地點推薦系統(tǒng)設(shè)計與實現(xiàn)[J].電子技術(shù)與軟件工程,2020(1):184-185. [4]?周家昊,李民.基于旅游用戶數(shù)據(jù)和評論的推薦系統(tǒng)的設(shè)計[J].軟件,2019,40(11):174-177. [5]?李維.基于案例推理的浙江旅游智能推薦系統(tǒng)研究[J].中國集體經(jīng)濟,2019(32):124-126. (收稿日期:2020.05.07)