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