亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于協(xié)同過濾算法的微信小程序智能助手①

        2019-07-26 03:16:16李永杰
        計算機系統(tǒng)應(yīng)用 2019年5期
        關(guān)鍵詞:助手框架程序

        劉 勇,李永杰

        (青島科技大學(xué) 信息科學(xué)與技術(shù)學(xué)院,青島 266061)

        隨著移動互聯(lián)網(wǎng)的發(fā)展,微信成為目前國內(nèi)最大的互聯(lián)網(wǎng)入口之一.微信每天為用戶提供上億次搜索服務(wù).隨著騰訊對微信小程序的推廣,微信小程序借助微信巨大流量入口迅速崛起.我們可以通過用戶在碎片時間對微信小程序的使用來獲取海量的用戶習(xí)慣和不同用戶的個性特點,并且利用微信小程序可以迅速掃碼傳播[1],因此可以迅速獲取海量不同類型的用戶數(shù)據(jù).因此我們利用協(xié)同過濾技術(shù),微信小程序開放數(shù)據(jù)平臺,互聯(lián)網(wǎng)技術(shù),構(gòu)建基于協(xié)同過濾算法的微信小程序智能助手,通過分析用戶的行為習(xí)慣和個性特點,智能助手能夠在合適的時間和地點為用戶推送合適的服務(wù)信息,這樣可以節(jié)省大量用戶搜索的時間.

        1 系統(tǒng)概述

        基于協(xié)同過濾算法的微信小程序智能助手借助微信,將用戶在微信上的操作行為和興趣愛好數(shù)據(jù)上傳到平臺,然后與協(xié)同過濾算法結(jié)合.基于地理位置的分析,為用戶在提供實時的信息推薦服務(wù).根據(jù)用戶的具體位置和相關(guān)時間點,為用戶推送相關(guān)信息服務(wù)和事件提醒,同時微信小程序智能助手可以根據(jù)用戶的個性特點為用戶推送餐飲和乘車等相關(guān)的生活服務(wù)信息.

        基于協(xié)同過濾算法的微信小程序智能助手主要由數(shù)據(jù)采集層,數(shù)據(jù)分析層,數(shù)據(jù)存儲層,數(shù)據(jù)接口層和數(shù)據(jù)應(yīng)用層四大部分組成.系統(tǒng)總體架構(gòu)示意圖如圖1.

        圖1 系統(tǒng)總體架構(gòu)圖

        1.1 數(shù)據(jù)采集層

        數(shù)據(jù)采集層主要包括三部分.1)利用百度地圖接口,獲取用戶所在地區(qū)的公交與地鐵的路線資料.同時獲取公交站牌地理位置信息與地鐵口相關(guān)地理位置信息.2)利用Python的Scrapy 框架,通過爬蟲從網(wǎng)頁獲取不同地區(qū)的餐飲、商店、加油站等相關(guān)數(shù)據(jù)并提交至服務(wù)器.3)人工數(shù)據(jù)錄入.對于部分地區(qū)或資料無法獲取,利用手機小程序端和電腦端將一些數(shù)據(jù)進行填寫并提交.

        1.2 數(shù)據(jù)分析層

        數(shù)據(jù)分析層主要通過分析用戶數(shù)據(jù),利用協(xié)同過濾算法對用戶推薦相關(guān)的個性化信息.其中數(shù)據(jù)主要包括兩部分.1)基于用戶在微信的搜索或點擊查看記錄.同時利用微信提供的數(shù)據(jù)地理位置相關(guān)服務(wù),可以將用戶相關(guān)記錄與用戶所處地理位置同時上傳至數(shù)據(jù)分析層.2)基于用戶對推薦服務(wù)的反饋.當(dāng)微信小程序智能助手為用戶推薦相關(guān)生活服務(wù)信息,用戶對于結(jié)果的反饋數(shù)據(jù)也將提交至服務(wù)器.采用開源框架Spark MLlib 框架進行協(xié)同過濾[2],該框架支持分布式處理,解決海量數(shù)據(jù)處理速度過慢的問題.

        1.3 數(shù)據(jù)存儲層

        由于采集的數(shù)據(jù)與用戶個性化數(shù)據(jù)比較繁雜,其中包括結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù).因此采用了關(guān)系型數(shù)據(jù)庫MYSQL 與非關(guān)系型數(shù)據(jù)庫Redis 分別存儲不同的數(shù)據(jù).對于車站、餐飲以及店鋪等信息,由于數(shù)據(jù)資料比較穩(wěn)定,不會被頻繁修改,將其保存至MYSQL 數(shù)據(jù)庫.同時由于其數(shù)據(jù)量較大,數(shù)據(jù)訪問壓力較大,我們采用MYSQL 讀寫分離技術(shù),這樣避免數(shù)據(jù)庫同時讀寫造成的訪問緩慢的問題.而對于用戶在使用微信小程序智能助手產(chǎn)生的記錄數(shù)據(jù),由于需要被頻繁更新,且數(shù)據(jù)量大的特點,則存儲于Redis 數(shù)據(jù)庫中,并且會在特定時間對數(shù)據(jù)持久化操作.

        1.4 數(shù)據(jù)接口層

        基于Laravel 框架提供RESTful 接口,微信小程序智能助手利用該接口進行數(shù)據(jù)交互與處理.RESTful 原則是客戶端與服務(wù)器之間交互請求無狀態(tài)的,多數(shù)的HTTP 請求都被轉(zhuǎn)移到前端服務(wù)器上,降低服務(wù)器的負(fù)荷,因此十分適合云計算環(huán)境[3].同時利用Swoole 框架對數(shù)據(jù)分析層產(chǎn)生的推薦數(shù)據(jù)進行實時推送.

        1.5 數(shù)據(jù)應(yīng)用層

        數(shù)據(jù)管理層主要包括基于移動終端的微信.微信小程序智能助手可以根據(jù)用戶實時位置和時間來給用戶推送相關(guān)生活服務(wù)信息,包括公交到站提醒,就餐提醒等.并且,用戶可以查看推薦的相關(guān)信息,包括基于用戶飲食特點的美食等數(shù)據(jù).

        2 系統(tǒng)設(shè)計與實現(xiàn)

        2.1 軟件系統(tǒng)總體設(shè)計

        在數(shù)據(jù)分析層,采用了跨平臺的Java 開發(fā)語言,使用開源框架Spark MLlib 框架進行數(shù)據(jù)分析處理.在數(shù)據(jù)接口層與數(shù)據(jù)展示層,采用PHP 語言進行開發(fā),采用開源框架Larvel + Swoole + Nginx.通過Nginx 進行負(fù)載均衡[4].采用關(guān)系型數(shù)據(jù)庫MYSQL 和非關(guān)系型數(shù)據(jù)庫Redis.MYSQL 數(shù)據(jù)庫用來存儲結(jié)構(gòu)化數(shù)據(jù),包括采集的餐飲等數(shù)據(jù),而Redis 用來存儲通過微信小程序智能助手上傳的包含用戶個性化特點的非結(jié)構(gòu)化數(shù)據(jù).開發(fā)工具采用PhpStorm 和IntelliJ IDEA 作為主要的開發(fā)工具.系統(tǒng)功能架構(gòu)如圖2所示.

        圖2 功能架構(gòu)圖

        2.2 功能詳細(xì)設(shè)計與說明

        2.2.1 個人中心

        微信小程序智能助手基于微信的開放平臺接口,用戶可授權(quán)微信序獲取個人信息,即可完成登錄.在用戶注冊完成后,可以獲取到用戶的微信頭像,微信昵稱.同時用戶可以自己設(shè)置消息免打擾時間,用戶興趣愛好以及查看用戶日常瀏覽記錄等.用戶個人中心如圖3.

        2.2.2 服務(wù)消息

        基于用戶在微信內(nèi)產(chǎn)生的操作數(shù)據(jù),同時基于當(dāng)前用戶所處的地理位置,使用協(xié)同過濾算法中的UserCF 來實現(xiàn)個性化推薦并同時將推薦數(shù)據(jù)實時推送給用戶.生活服務(wù)推薦數(shù)據(jù)如圖4所示.

        在工作日期間基于用戶歷史數(shù)據(jù),系統(tǒng)會根據(jù)當(dāng)前用戶所處位置[5],通過協(xié)同過濾算法,并結(jié)合與當(dāng)前用戶有相似飲食特點用戶數(shù)據(jù),來為用戶推送用餐消息,同時基于用戶的反饋情況,來不斷提高推薦結(jié)果的準(zhǔn)確度.服務(wù)消息推送效果如圖5所示.

        臨近下班時刻,系統(tǒng)會基于用戶的乘車記錄和相關(guān)的公交實時位置,為用戶進行公交車班次提醒.系統(tǒng)會根據(jù)用戶所處位置,為用戶推薦最佳出發(fā)時間和乘車線路,確保用戶可以準(zhǔn)時到達公交車站,解決在公交車站等待時間過長的問題.微信小程序智能助手推送出行服務(wù)消息如圖6所示.

        圖3 個人中心

        圖4 生活服務(wù)推薦數(shù)據(jù)

        消息推薦采用Swoole 開源框架,該框架是一款高性能網(wǎng)絡(luò)通信框架.可以基于Websocket 進行數(shù)據(jù)推送,避免了傳統(tǒng)的Ajax 輪詢獲取數(shù)據(jù)導(dǎo)致頁面卡頓和手機發(fā)熱嚴(yán)重的問題.該框架基于多線程,其基于epoll/kqueue的Multi-Reactor模型可以充分利用服務(wù)器的多核CPU 性能.

        圖5 微信小程序智能助手消息推送

        圖6 微信小程序智能助手出行消息推送

        2.2.3 生活服務(wù)

        基于用戶在日常使用微信瀏覽、搜索、點擊等數(shù)據(jù)信息,將數(shù)據(jù)上傳到數(shù)據(jù)分析后臺,通過分析用戶數(shù)據(jù),利用協(xié)同過濾算法中的ItemCF 進行信息推薦[6].在數(shù)據(jù)采集層采集包括美食、車站、超市、酒店等各類生活服務(wù)信息,因此協(xié)同過濾算法會基于用戶的個性化特點來推薦給用戶相關(guān)生活服務(wù)信息,節(jié)省大量用戶篩選過濾信息的時間.系統(tǒng)還會根據(jù)用戶點擊、瀏覽時間、搜索查詢等數(shù)據(jù)來對推薦系統(tǒng)進行不斷改進,這樣可以根據(jù)用戶興趣愛好隨時調(diào)整推薦結(jié)果,確保用戶能夠獲取合適的服務(wù)消息.實現(xiàn)界面如圖7所示.

        圖7 生活服務(wù)推薦

        2.2.4 新聞資訊

        基于用戶的興趣愛好,基于協(xié)同過濾算法來分析用戶習(xí)慣并提供用戶感興趣的新聞內(nèi)容.系統(tǒng)還會根據(jù)用戶在個人中心設(shè)置的個人興趣,結(jié)合用戶地理位置信息,為用戶提供其有效的新聞資訊.實現(xiàn)界面如圖8.

        3 系統(tǒng)關(guān)鍵技術(shù)分析

        3.1 數(shù)據(jù)采集技術(shù)

        推薦給用戶的生活服務(wù)信息,需要通過爬蟲采集網(wǎng)絡(luò)上的相關(guān)資訊和信息.由于數(shù)據(jù)量較大,且需要對多個平臺進行數(shù)據(jù)采集,涉及到多線程采集,采集的數(shù)據(jù)需要進行預(yù)處理,方便數(shù)據(jù)分析層進行分析使用.因此采用Python的開源框架Scrapy.該框架是基于多線程的異步處理框架,能夠支持上千個Url 地址進行并行采集,降低對采集服務(wù)器的壓力[7].該框架具有高可定制性,可以基于不同的場景,不同的數(shù)據(jù)結(jié)構(gòu)來編寫不同的采集規(guī)則進行處理,在不同Item Pipeline中,可以對不同層次的數(shù)據(jù)進行分析過濾.在采集的過程中會自動進行去重操作,保證采集的數(shù)據(jù)不會重復(fù).

        圖8 新聞資訊推薦

        3.2 大數(shù)據(jù)存儲技術(shù)

        在處理協(xié)同過濾系統(tǒng)產(chǎn)生的數(shù)據(jù)的過程中,由于數(shù)據(jù)為非關(guān)系型結(jié)構(gòu)類型,因此傳統(tǒng)的關(guān)系型數(shù)據(jù)庫保存此類數(shù)據(jù)比較困難.而且推薦數(shù)據(jù)要實時為用戶推送,因此從的MYSQL 數(shù)據(jù)庫中讀取速度太慢,存在IO 瓶頸.因此采用Redis 進行數(shù)據(jù)存儲.

        Redis 是一個開源的使用ANSI C 語言編寫基于內(nèi)存的Key-Value 數(shù)據(jù)庫,由Vmware 支持開發(fā)[8].

        3.3 協(xié)同過濾算法

        協(xié)同過濾這一概念首次于1992年由Goldberg Nicols Oki 及Terry 提出,他們展示了一種新的推薦思想.目前主要有兩類協(xié)同過濾算法:基于用戶的協(xié)同過濾算法UserCF 和基于項目的協(xié)同過濾算法ItemCF.

        UserCF的基本思想為[9]:要為A 用戶推薦物品,首先需要計算其他用戶與A 用戶的用戶相似度,如表1所示,用戶C 與用戶A的相似度最高,因此會將用戶C喜歡的商品推薦給用戶A.

        表1 基于用戶協(xié)同過濾算法

        ItemCF的基本思想為:計算物品A,B,C的相似度,得到物品A 與物品C 相似度高,那么在用戶C 選取物品A 后,為將商品C 推薦給用戶C.如表2所示.

        表2 基于物品協(xié)同過濾算法

        相似度計算方法[10]則是將用戶評分看作是n維空間上的向量,如果用戶沒有對物品進行評分,則用戶對該物品的評分為0,用戶間的相似性通過計算向量間余弦夾角.用戶i和用戶j在n維物品空間上的評分分別表示為向量i,j,則用戶i和j之間的相似度sim(i,j)為:

        分子為兩個用戶評分向量的內(nèi)積,分母為兩個用戶向量模的乘積.其中Ri,c和Rj,c分別代表用戶i和用戶j對物品c的評分.

        基于微信的實時定位的特點可以方便的獲取用戶的地理位置.因此我們在協(xié)同過濾模型中增加地理位置,在計算用戶之間相似度的時把地理位置作為一個距離分布的參數(shù)數(shù)據(jù)來進行分析,從而使得最后的推薦數(shù)據(jù)忽略掉距離位置較遠(yuǎn)數(shù)據(jù),提高推薦算法的準(zhǔn)確性[11].

        3.4 Websocket網(wǎng)絡(luò)通信技術(shù)

        當(dāng)用戶在使用微信小程序智能助手過程中,系統(tǒng)需要將推薦的信息推送至用戶手機.傳統(tǒng)的消息推送是采用Ajax 進行長連接輪詢方式,該方式采用了請求/響應(yīng)模型,通信請求只能由客戶端發(fā)起,服務(wù)端對請求作出應(yīng)答處理.但是這種通信模型有一個弊端:HTTP 協(xié)議無法實現(xiàn)服務(wù)器主動向客戶端發(fā)起消息,而且頻繁的Ajax 輪詢導(dǎo)致效率低下,浪費資源,并且使得手機耗電量迅速增加.

        采用Websocket網(wǎng)絡(luò)通信技術(shù)可以解決上述問題.Websocket 連接允許客戶端和服務(wù)器端進行雙工通信,以便任一方可以通過建立的連接將數(shù)據(jù)推送到另一端.同時該連接只要建立一次,就可以一直保持連接狀態(tài),通信效率大大提高,降低手機的耗電量.采用基于Swoole的Websocket 框架可以實現(xiàn)通過異步非阻塞、多線程模式進行消息推送[12].

        4 系統(tǒng)運行結(jié)果分析

        微信小程序智能助手平穩(wěn)運行半年,累積采集數(shù)據(jù)7300 條有效數(shù)據(jù),采集數(shù)據(jù)包括車站信息,新聞資訊,餐飲超市等.數(shù)據(jù)采集結(jié)果如圖9所示.

        圖9 數(shù)據(jù)采集結(jié)果

        微信小程序智能助手為用戶生成有效推薦結(jié)果大約6000 次,其中新聞推薦3000 多次,餐飲推薦數(shù)據(jù)1600 余次,公交服務(wù)推薦814 次,其他相關(guān)生活服務(wù)推薦約500 次.在用戶使用過程中,用戶有效反饋數(shù)據(jù)大約為3300 次,通過有效反饋數(shù)據(jù),最終推薦結(jié)果提高了30%左右.并且通過用戶的評價系統(tǒng),推薦結(jié)果滿意度達到85%.運行結(jié)果數(shù)據(jù)分析如圖10所示.

        圖10 運行數(shù)據(jù)分析

        5 總結(jié)

        隨著互聯(lián)網(wǎng)的不斷發(fā)展,產(chǎn)生的數(shù)據(jù)信息將會越來越多.如何能更加高效的分析用戶的興趣愛好和行為習(xí)慣,并基于此為用戶從海量的數(shù)據(jù)中推薦用戶最感興趣的信息將變得更加重要.而且隨著移動設(shè)備的不斷普及,用戶從傳統(tǒng)的PC 開始不斷向移動終端轉(zhuǎn)移,利用移動終端的快速地理定位、頻繁的數(shù)據(jù)信息交互等特性中充分挖掘用戶數(shù)據(jù),分析出有價值的數(shù)據(jù),從而為用戶提供更加精準(zhǔn)有效的推薦數(shù)據(jù).

        本文針對都市白領(lǐng)人群對于生活服務(wù)信息的需求進行了設(shè)計和實現(xiàn),在系統(tǒng)設(shè)計中遇到的問題進行積極探索并找到合適的解決方案,包括數(shù)據(jù)的采集、數(shù)據(jù)的分析、數(shù)據(jù)的存儲以及數(shù)據(jù)的推送的穩(wěn)定性等.

        通過對基于協(xié)同過濾算法的微信小程序智能助手的開發(fā)與研究,實現(xiàn)了對資源數(shù)據(jù)的采集,利用協(xié)同過濾算法挖掘出用戶的興趣愛好并為用戶推薦用戶感興趣的數(shù)據(jù),保證用戶能夠隨時獲取最新的、最符合用戶興趣的數(shù)據(jù),并且基于用戶的日常行為對用戶進行合理提醒與建議;通過研究數(shù)據(jù)網(wǎng)絡(luò)通信機制,為用戶提供穩(wěn)定和高效的數(shù)據(jù)推送,減低用戶手機電量的消耗.在開發(fā)過程中,深深體會到了要合理充分挖掘用戶行為習(xí)慣,利用協(xié)同過濾算法不斷優(yōu)化推薦結(jié)果,實現(xiàn)企業(yè)獲取穩(wěn)定用戶和流量的重要保障.

        猜你喜歡
        助手框架程序
        框架
        廣義框架的不相交性
        試論我國未決羈押程序的立法完善
        “程序猿”的生活什么樣
        WTO框架下
        法大研究生(2017年1期)2017-04-10 08:55:06
        英國與歐盟正式啟動“離婚”程序程序
        小助手
        創(chuàng)衛(wèi)暗訪程序有待改進
        一種基于OpenStack的云應(yīng)用開發(fā)框架
        靈感助手表彰大會(二)
        日本免费a级毛一片| 日韩在线一区二区三区中文字幕| 校园春色综合久久精品中文字幕| 人与动牲交av免费| 国内少妇人妻丰满av| 青青草免费激情自拍视频| 国产一区二区三区青青草| 国产精品毛片一区二区三区| 69精品丰满人妻无码视频a片| 在线a人片免费观看高清| 一区二区三区精品免费| 久久狠狠色噜噜狠狠狠狠97| 亚洲av色先锋资源电影网站| 国产午夜亚洲精品不卡免下载| 亚洲中文字幕精品久久a| 不卡一卡二卡三乱码免费网站| 五月天激情小说| 免费人成黄页网站在线观看国内| 美女视频一区二区三区在线 | 91精品人妻一区二区三区水蜜桃 | 婷婷丁香开心五月综合| 国产成人无码18禁午夜福利p| 国产精品原创巨作AV女教师| 日本经典中文字幕人妻 | 亚洲欧美日韩另类精品一区 | 日韩国产欧美| 麻豆夫妻在线视频观看| 国产女人好紧好爽| 亚洲成色www久久网站夜月| 国产福利97精品一区二区| 成人大片免费在线观看视频| 国模无码一区二区三区| 国产精选免在线观看| 亚洲一区二区三区天堂av | 亚洲色成人网站www永久四虎| 国产高潮精品久久AV无码| 伊人狼人激情综合影院| 成人国成人国产suv| 国偷自产av一区二区三区| 国产毛片一区二区日韩| 久久免费看黄a级毛片|