李姣燕 劉瀟
摘要:本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)個(gè)性化新聞信息瀏覽與推送功能,利用網(wǎng)絡(luò)爬蟲合法抓取其他網(wǎng)站提供的RSS內(nèi)容,把聚合的內(nèi)容重新整理成個(gè)性化信息利用微信公眾號(hào)推送給不同的用戶群體。在本文中,主要闡述了完成這樣一個(gè)平臺(tái)需要實(shí)現(xiàn)的業(yè)務(wù)邏輯和服務(wù)執(zhí)行邏輯。
關(guān)鍵詞:網(wǎng)絡(luò)爬蟲;個(gè)性化推送;新聞;微信公眾號(hào)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)36-0015-03
在信息化時(shí)代,緊張的生活節(jié)奏使得人們對(duì)于新聞的關(guān)注程度大大降低,但使用微信[1]的人卻越來越多,微信公眾號(hào)又提供了豐富的網(wǎng)頁接口給第三方平臺(tái),可以方便地與用戶進(jìn)行交互,利用這個(gè)特性,可以開展基于微信公眾號(hào)的個(gè)性化新聞推送服務(wù)。
在目前的推送服務(wù)產(chǎn)品中來看,推送服務(wù)大部分都是APP的附屬產(chǎn)物或者面向電腦端的服務(wù)[2],而且?guī)缀醵际菍?duì)自身平臺(tái)的數(shù)據(jù)進(jìn)行推送,對(duì)于消息聚合再對(duì)用戶進(jìn)行推送的平臺(tái)發(fā)展得非常好的是百度APP,對(duì)文章內(nèi)關(guān)鍵詞,新聞?lì)^條等分析非常準(zhǔn)確,因?yàn)榛谒阉饕嫘袠I(yè)的多年的積淀表現(xiàn)比較亮眼。而如今的微信公眾號(hào)大部分都是通過發(fā)表推文吸引讀者關(guān)注和閱讀,做個(gè)性化信息推送的公眾號(hào)較少,而QQ看點(diǎn),百度推薦,今日頭條多是其平臺(tái)白己的文章,信息渠道較窄,存在商業(yè)競(jìng)爭(zhēng)情況下,信息往往不全,無法有效聚合信息。
利用微信的用戶快速推廣用戶群體,而且在內(nèi)容優(yōu)質(zhì)的情況下使用微信作為介質(zhì)可以提高用戶黏性,可以簡(jiǎn)化用戶對(duì)于自己關(guān)注部分的新聞瀏覽。目前使用微信公眾號(hào)作為介質(zhì)做聚合內(nèi)容的智能推薦平臺(tái)的廠商非常少,傳統(tǒng)的智能信息推送平臺(tái)基本無法做到多平臺(tái)聚合內(nèi)容,用戶使用純移動(dòng)端網(wǎng)頁無法做到不錯(cuò)的用戶體驗(yàn)。有的商家為了推廣APP,甚至強(qiáng)制用戶使用APP才能體驗(yàn)全部功能。開發(fā)這樣的基于微信的新聞推送系統(tǒng)讓用戶可以隨時(shí)查看自己所關(guān)注的文章或新聞?dòng)植恍枰~外安裝其他的APP為移動(dòng)端的新聞閱讀帶來極大的方便。
基于微信公眾號(hào)的個(gè)性化新聞推送為關(guān)注了該微信公眾號(hào)的用戶提供一個(gè)推送平臺(tái),根據(jù)用戶的興趣去搜集信息并定期推送給用戶[5]。使用微信公眾號(hào)進(jìn)行平臺(tái)的推廣和運(yùn)維,從管理者角度來看更便捷;從開發(fā)者角度來看可省去用戶注冊(cè)的麻煩,但開發(fā)者對(duì)用戶管理模塊的開發(fā)及維護(hù)成本卻高于正常開發(fā)。但新領(lǐng)域新平臺(tái)與微信公眾號(hào)進(jìn)行對(duì)接可以更快速讓更多的更大用戶群體接納,也可以拓寬微信公眾平臺(tái)的業(yè)務(wù)多樣性。
本文提出的個(gè)性化新聞推送想,利用了目前的多數(shù)互聯(lián)網(wǎng)新聞平臺(tái)提供RSS接口[4]。該接口是一個(gè)簡(jiǎn)易信息聚合,基于XML標(biāo)準(zhǔn)的一種規(guī)范,個(gè)性化新聞推送系統(tǒng)利用這種規(guī)范使用爬蟲技術(shù)[3]合法的抓取新聞平臺(tái)的文章摘要信息。再通過用戶個(gè)性化特點(diǎn)推送給相關(guān)用戶。
1系統(tǒng)總體框架
本系統(tǒng)由爬蟲自動(dòng)爬取選定的RSS源所提供文章,然后系統(tǒng)進(jìn)行分析處理后根據(jù)用戶個(gè)性化特點(diǎn)進(jìn)行推送。文章的RSS源由管理員手動(dòng)維護(hù),將需要RSS訂閱入口鏈接添加至系統(tǒng)中,系統(tǒng)的RSS爬蟲服務(wù)會(huì)自動(dòng)運(yùn)行抓取RSS源中的文章信息。整個(gè)系統(tǒng)框架流程見圖l。
系統(tǒng)采用PHP7.0和ThinkPHP5.Oc5]框架進(jìn)行開發(fā)。PHP是目前小型網(wǎng)站開發(fā)與搭建的首選語言[6]。ThinkPHP則則是一個(gè)基于PHP的MVC開發(fā)框架,它自己有提供模型層和控制器完整的接口,也有一套完整的模板引擎,在開的時(shí)候僅僅使用一個(gè)框架就可以完成MVC的所有層次[7][8][9]。前端采用LayUI,其有著自己的模塊定義和引用方式,強(qiáng)大的彈出層和豐富的官方組件使得開發(fā)變得更快更好[10]。
2新聞文章的獲取
公眾號(hào)推送的文章來源于別的新聞網(wǎng)站,如果直接從別的地方抓取文章,不同的網(wǎng)站不能使用同一套規(guī)則,而且網(wǎng)站一旦改版,規(guī)則也要重新進(jìn)行修改,平臺(tái)的維護(hù)需要開發(fā)人員,這導(dǎo)致開發(fā)和維護(hù)成本會(huì)非常高。大多數(shù)新聞網(wǎng)站都支持RSS協(xié)議的文章輸出,利用這個(gè)協(xié)議,可以實(shí)現(xiàn)只寫一套規(guī)則就可以抓取所有服務(wù)列表中RSS站點(diǎn)的文章了。維護(hù)方面就只需要管理員將RSS源的鏈接添加至平臺(tái)中。從列表中查詢出RSS最短更新周期的配置,然后根據(jù)這個(gè)值,查詢最后更新時(shí)間在剛剛查詢出來的結(jié)果時(shí)間前的所有記錄。再調(diào)用爬蟲方法去抓取遠(yuǎn)程服務(wù)器的列表數(shù)據(jù),返回結(jié)果為一個(gè)XML格式的數(shù)據(jù),但需要比較復(fù)雜的流程去處理編碼問題。經(jīng)過處理后,將文章信息讀出并儲(chǔ)存。文章信息包括鏈接、標(biāo)題、內(nèi)容描述、作者、發(fā)布時(shí)間等信息。爬蟲工作流程詳細(xì)可見圖2所示。
3個(gè)性化推送服務(wù)
微信公眾平臺(tái)目前分成消息接口和通用接口兩大模塊[11],本服務(wù)使用的是消息接口中的微信客服接口,內(nèi)容需要做到個(gè)性化,所以不能使用群發(fā)功能,但客服接口有限制:只有用戶主動(dòng)與微信公眾號(hào)進(jìn)行互動(dòng)后的48小時(shí)內(nèi)才能調(diào)用該接口,只需要用戶每?jī)商炫c公眾號(hào)進(jìn)行互動(dòng)(公眾號(hào)可發(fā)消息提示等誘發(fā)性互動(dòng))。服務(wù)開始執(zhí)行的時(shí)候從文章庫中取出當(dāng)前時(shí)間大于或等于更新時(shí)間的所有記錄,然后調(diào)用生成用戶推薦文章的算法接口,將得到的文章使用微信客服接口推送給用戶,不論成功與否都將推送結(jié)果寫入日志,然后將表中對(duì)應(yīng)記錄的下次推送時(shí)間字段的內(nèi)容修改為用戶設(shè)置的所有推送時(shí)間中的下一次推送時(shí)間的時(shí)間戳,好方便服務(wù)在調(diào)用時(shí)做時(shí)間的判斷。
個(gè)性化新聞推送中個(gè)性化技術(shù)研究比較活躍?;趨f(xié)同過濾算法的文獻(xiàn)[11]改進(jìn)了文本相似性的判斷,基于深度學(xué)習(xí)算法的文獻(xiàn)[12]的研究了目前主流的個(gè)性化新聞推送,以及還有采用微博數(shù)據(jù)進(jìn)行用戶建模的能包含更多活躍和豐富的用戶特征。本文的個(gè)性化特點(diǎn)主要體現(xiàn)在文章的標(biāo)簽和用戶標(biāo)簽上。
標(biāo)簽類別由系統(tǒng)初始設(shè)定也可后期增加。通過對(duì)文本進(jìn)行分析得到的文章的標(biāo)簽。用戶標(biāo)簽表中的權(quán)重記錄為用戶i對(duì)該標(biāo)簽i的偏好,由用戶對(duì)該標(biāo)簽的點(diǎn)擊與時(shí)間的函數(shù)值在p篇文章上的累加和aij=∑aij。用戶未閱讀該文,則ai=0,否則取某個(gè)時(shí)間函數(shù),離當(dāng)前時(shí)間越近則該值越大,離現(xiàn)在越遠(yuǎn)該值越小,體現(xiàn)出用戶興趣隨時(shí)間推移的關(guān)系。在用戶關(guān)注了多個(gè)標(biāo)簽的情況下,該記錄對(duì)用戶的具體習(xí)慣有比較穩(wěn)定的數(shù)據(jù)。首先計(jì)算同當(dāng)前用戶的興趣權(quán)值差距,計(jì)算公式如下:
d=∑(aij一aij)2((l)
其中i為用來比較的用戶,i為標(biāo)簽,k為當(dāng)前用戶。?。?最小的M個(gè)鄰居,然后在基于系統(tǒng)過濾算法在M個(gè)用戶中利用皮爾遜相關(guān)系數(shù)計(jì)算用戶相似性,求出TOP-N鄰居,然后利用這N個(gè)鄰居,作為參照用戶,推薦參照用戶閱讀最多的文章。
文章表中有記錄所有用戶的點(diǎn)擊數(shù),點(diǎn)擊數(shù)高的說明該新聞的關(guān)注度比較高,也比較容易得到文章對(duì)應(yīng)的標(biāo)簽用戶群的關(guān)注,其次,文章的時(shí)效性也會(huì)有很大的影響,新聞的時(shí)效性大約是一天內(nèi),其他類型的根據(jù)RSS源的更新頻率,一般取到最近發(fā)布的50條記錄的時(shí)間,這個(gè)時(shí)間段內(nèi)取的文章的優(yōu)先度很高,根據(jù)以上幾個(gè)要點(diǎn)從候選列表中取若十條對(duì)應(yīng)用戶未訪問文章加入文章表中,并返回這幾條篩選排序后的結(jié)果,排序中對(duì)含圖片的文章有更高的優(yōu)先級(jí),更符合移動(dòng)端用戶閱讀習(xí)慣,整套算法大部分在SQL語句中完成,減少了程序與數(shù)據(jù)庫的交互可以更大提高程序的運(yùn)行效率,該接口完成后將在兩個(gè)業(yè)務(wù)場(chǎng)景中被調(diào)用,其一是自動(dòng)推送服務(wù)中,其二是用戶在首頁瀏覽文章時(shí)下拉觸發(fā)刷新推薦文章。標(biāo)簽管理員可以手動(dòng)在后臺(tái)的RSS列表配置中進(jìn)行修改。標(biāo)簽表的權(quán)重字段是rss表中對(duì)應(yīng)標(biāo)簽的記錄數(shù)。
4結(jié)論
本文設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于微信公眾號(hào)的個(gè)性化信息推送系統(tǒng),利用爬蟲爬取廣泛的可用的RSS訂閱來源,然后利用新聞標(biāo)簽和用戶的愛好標(biāo)簽,以及新聞的時(shí)效性和熱門性,進(jìn)行個(gè)性化推薦。目前這方面的基于微信公眾號(hào)的信息推送系統(tǒng)較少,本系統(tǒng)可以為許多渴望更多可靠信息來源,沒時(shí)間進(jìn)行信息篩選客戶提供更高效更低成本的信息來源,并且在用戶不需要的情況下不打擾客戶,在客戶需要時(shí)隨時(shí)激活提供最新的服務(wù)。系統(tǒng)的個(gè)性化服務(wù)基于標(biāo)簽,標(biāo)簽的更新體現(xiàn)了用戶對(duì)新聞推送的反饋,長(zhǎng)期的使用將更為精確。未來在個(gè)性化服務(wù)方面將更多的挖掘文本的具體信息,提取更精確的文本特征,對(duì)用戶個(gè)性特征也將進(jìn)行更多維的描述,以達(dá)到更準(zhǔn)確的信息推送。本文詳細(xì)描述了系統(tǒng)的設(shè)計(jì)開發(fā)過程,也可為想開發(fā)此類程序的初學(xué)者提供借鑒。
參考文獻(xiàn):
[1]微信公眾平臺(tái)技術(shù)文檔[EB/OL]https://mp.weixln.qq.com/wi-ki.2017.
[2]張釗.個(gè)性化新聞事件推薦系統(tǒng)的研究與實(shí)現(xiàn)[D].2016.
[3]徐遠(yuǎn)超,劉江華,劉麗珍,等.基于Web的網(wǎng)絡(luò)爬蟲的沒計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007,23 (21):119-121.
[4]劉兆臻.基于RSS的網(wǎng)絡(luò)學(xué)習(xí)內(nèi)容聚合系統(tǒng)研究[D].華東師范大學(xué),2005.
[5]李沛.個(gè)性化信息推送服務(wù)及其在圖書館中的應(yīng)用[J].河南圖書館學(xué)刊,2010,30(5):115-117.
[6] PHP Documentation[EB/OL]http://php.net/manual/en/, 2018.
[7] ThinkPHP5.0完全開發(fā)手冊(cè)[EB/OL]https://www.kancloud.cn/manual/thinkphp5, 2018.
[8]王俊芳,李隱峰,王池.基于MVC模式的ThinkPHP框架研究[J].電子科技,2014,27(4):151-153.
[9]宋尚平,李興保.PHP模板引擎Smarty的安裝配置及應(yīng)用實(shí)現(xiàn)[J].現(xiàn)代教育技術(shù),2007,17(9):80-82.
[10] LayUI開發(fā)使用文檔[EB/OL]http://www.layui.e om/doc/,2018.
[11]楊鵬.基于改進(jìn)SVD算法的個(gè)性化新聞推薦系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)[D].西安電子科技大學(xué),2015.
[12]梁仕威,張晨蕊,曹雷,等.基于協(xié)同表示學(xué)習(xí)的個(gè)性化新聞推薦[J].中文信息學(xué)報(bào),2018,32(11).
【通聯(lián)編輯:唐一東】
收稿日期:2019-08-20
基金項(xiàng)目:本課題得到湖南省教育廳科學(xué)研究項(xiàng)目一般項(xiàng)目資助(12C0769)
作者簡(jiǎn)介:李姣燕,講師,研究方向?yàn)樯虅?wù)智能,運(yùn)籌學(xué)。