基于微信公众号个性化新闻推送平台设计与实现
2019-03-07李姣燕刘潇
李姣燕 刘潇
摘要:本文设计并实现了一个个性化新闻信息浏览与推送功能,利用网络爬虫合法抓取其他网站提供的RSS内容,把聚合的内容重新整理成个性化信息利用微信公众号推送给不同的用户群体。在本文中,主要阐述了完成这样一个平台需要实现的业务逻辑和服务执行逻辑。
关键词:网络爬虫;个性化推送;新闻;微信公众号
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2019)36-0015-03
在信息化时代,紧张的生活节奏使得人们对于新闻的关注程度大大降低,但使用微信[1]的人却越来越多,微信公众号又提供了丰富的网页接口给第三方平台,可以方便地与用户进行交互,利用这个特性,可以开展基于微信公众号的个性化新闻推送服务。
在目前的推送服务产品中来看,推送服务大部分都是APP的附属产物或者面向电脑端的服务[2],而且几乎都是对自身平台的数据进行推送,对于消息聚合再对用户进行推送的平台发展得非常好的是百度APP,对文章内关键词,新闻头条等分析非常准确,因为基于搜索引擎行业的多年的积淀表现比较亮眼。而如今的微信公众号大部分都是通过发表推文吸引读者关注和阅读,做个性化信息推送的公众号较少,而QQ看点,百度推荐,今日头条多是其平台白己的文章,信息渠道较窄,存在商业竞争情况下,信息往往不全,无法有效聚合信息。
利用微信的用户快速推广用户群体,而且在内容优质的情况下使用微信作為介质可以提高用户黏性,可以简化用户对于自己关注部分的新闻浏览。目前使用微信公众号作为介质做聚合内容的智能推荐平台的厂商非常少,传统的智能信息推送平台基本无法做到多平台聚合内容,用户使用纯移动端网页无法做到不错的用户体验。有的商家为了推广APP,甚至强制用户使用APP才能体验全部功能。开发这样的基于微信的新闻推送系统让用户可以随时查看自己所关注的文章或新闻又不需要额外安装其他的APP为移动端的新闻阅读带来极大的方便。
基于微信公众号的个性化新闻推送为关注了该微信公众号的用户提供一个推送平台,根据用户的兴趣去搜集信息并定期推送给用户[5]。使用微信公众号进行平台的推广和运维,从管理者角度来看更便捷;从开发者角度来看可省去用户注册的麻烦,但开发者对用户管理模块的开发及维护成本却高于正常开发。但新领域新平台与微信公众号进行对接可以更快速让更多的更大用户群体接纳,也可以拓宽微信公众平台的业务多样性。
本文提出的个性化新闻推送想,利用了目前的多数互联网新闻平台提供RSS接口[4]。该接口是一个简易信息聚合,基于XML标准的一种规范,个性化新闻推送系统利用这种规范使用爬虫技术[3]合法的抓取新闻平台的文章摘要信息。再通过用户个性化特点推送给相关用户。
1系统总体框架
本系统由爬虫自动爬取选定的RSS源所提供文章,然后系统进行分析处理后根据用户个性化特点进行推送。文章的RSS源由管理员手动维护,将需要RSS订阅入口链接添加至系统中,系统的RSS爬虫服务会自动运行抓取RSS源中的文章信息。整个系统框架流程见图l。
系统采用PHP7.0和ThinkPHP5.Oc5]框架进行开发。PHP是目前小型网站开发与搭建的首选语言[6]。ThinkPHP则则是一个基于PHP的MVC开发框架,它自己有提供模型层和控制器完整的接口,也有一套完整的模板引擎,在开的时候仅仅使用一个框架就可以完成MVC的所有层次[7][8][9]。前端采用LayUI,其有着自己的模块定义和引用方式,强大的弹出层和丰富的官方组件使得开发变得更快更好[10]。
2新闻文章的获取
公众号推送的文章来源于别的新闻网站,如果直接从别的地方抓取文章,不同的网站不能使用同一套规则,而且网站一旦改版,规则也要重新进行修改,平台的维护需要开发人员,这导致开发和维护成本会非常高。大多数新闻网站都支持RSS协议的文章输出,利用这个协议,可以实现只写一套规则就可以抓取所有服务列表中RSS站点的文章了。维护方面就只需要管理员将RSS源的链接添加至平台中。从列表中查询出RSS最短更新周期的配置,然后根据这个值,查询最后更新时间在刚刚查询出来的结果时间前的所有记录。再调用爬虫方法去抓取远程服务器的列表数据,返回结果为一个XML格式的数据,但需要比较复杂的流程去处理编码问题。经过处理后,将文章信息读出并储存。文章信息包括链接、标题、内容描述、作者、发布时间等信息。爬虫工作流程详细可见图2所示。
3个性化推送服务
微信公众平台目前分成消息接口和通用接口两大模块[11],本服务使用的是消息接口中的微信客服接口,内容需要做到个性化,所以不能使用群发功能,但客服接口有限制:只有用户主动与微信公众号进行互动后的48小时内才能调用该接口,只需要用户每两天与公众号进行互动(公众号可发消息提示等诱发性互动)。服务开始执行的时候从文章库中取出当前时间大于或等于更新时间的所有记录,然后调用生成用户推荐文章的算法接口,将得到的文章使用微信客服接口推送给用户,不论成功与否都将推送结果写入日志,然后将表中对应记录的下次推送时间字段的内容修改为用户设置的所有推送时间中的下一次推送时间的时间戳,好方便服务在调用时做时间的判断。
个性化新闻推送中个性化技术研究比较活跃。基于协同过滤算法的文献[11]改进了文本相似性的判断,基于深度学习算法的文献[12]的研究了目前主流的个性化新闻推送,以及还有采用微博数据进行用户建模的能包含更多活跃和丰富的用户特征。本文的个性化特点主要体现在文章的标签和用户标签上。
标签类别由系统初始设定也可后期增加。通过对文本进行分析得到的文章的标签。用户标签表中的权重记录为用户i对该标签i的偏好,由用户对该标签的点击与时间的函数值在p篇文章上的累加和aij=∑aij。用户未阅读该文,则ai=0,否则取某个时间函数,离当前时间越近则该值越大,离现在越远该值越小,体现出用户兴趣随时间推移的关系。在用户关注了多个标签的情况下,该记录对用户的具体习惯有比较稳定的数据。首先计算同当前用户的兴趣权值差距,计算公式如下:
d=∑(aij一aij)2((l)
其中i为用来比较的用户,i为标签,k为当前用户。取(1最小的M个邻居,然后在基于系统过滤算法在M个用户中利用皮尔逊相关系数计算用户相似性,求出TOP-N邻居,然后利用这N个邻居,作为参照用户,推荐参照用户阅读最多的文章。
文章表中有记录所有用户的点击数,点击数高的说明该新闻的关注度比较高,也比较容易得到文章对应的标签用户群的关注,其次,文章的时效性也会有很大的影响,新闻的时效性大约是一天内,其他类型的根据RSS源的更新频率,一般取到最近发布的50条记录的时间,这个时间段内取的文章的优先度很高,根据以上几个要点从候选列表中取若十条对应用户未访问文章加入文章表中,并返回这几条筛选排序后的结果,排序中对含图片的文章有更高的优先级,更符合移动端用户阅读习惯,整套算法大部分在SQL语句中完成,减少了程序与数据库的交互可以更大提高程序的运行效率,该接口完成后将在两个业务场景中被调用,其一是自动推送服务中,其二是用户在首页浏览文章时下拉触发刷新推荐文章。标签管理员可以手动在后台的RSS列表配置中进行修改。标签表的权重字段是rss表中对应标签的记录数。
4结论
本文设计并实现了一个基于微信公众号的个性化信息推送系统,利用爬虫爬取广泛的可用的RSS订阅来源,然后利用新闻标签和用户的爱好标签,以及新闻的时效性和热门性,进行个性化推荐。目前这方面的基于微信公众号的信息推送系统较少,本系统可以为许多渴望更多可靠信息来源,没时间进行信息筛选客户提供更高效更低成本的信息来源,并且在用户不需要的情况下不打扰客户,在客户需要时随时激活提供最新的服务。系统的个性化服务基于标签,标签的更新体现了用户对新闻推送的反馈,长期的使用将更为精确。未来在个性化服务方面将更多的挖掘文本的具体信息,提取更精确的文本特征,对用户个性特征也将进行更多维的描述,以达到更准确的信息推送。本文详细描述了系统的设计开发过程,也可为想开发此类程序的初学者提供借鉴。
参考文献:
[1]微信公众平台技术文档[EB/OL]https://mp.weixln.qq.com/wi-ki.2017.
[2]张钊.个性化新闻事件推荐系统的研究与实现[D].2016.
[3]徐远超,刘江华,刘丽珍,等.基于Web的网络爬虫的没计与实现[J].微计算机信息,2007,23 (21):119-121.
[4]刘兆臻.基于RSS的網络学习内容聚合系统研究[D].华东师范大学,2005.
[5]李沛.个性化信息推送服务及其在图书馆中的应用[J].河南图书馆学刊,2010,30(5):115-117.
[6] PHP Documentation[EB/OL]http://php.net/manual/en/, 2018.
[7] ThinkPHP5.0完全开发手册[EB/OL]https://www.kancloud.cn/manual/thinkphp5, 2018.
[8]王俊芳,李隐峰,王池.基于MVC模式的ThinkPHP框架研究[J].电子科技,2014,27(4):151-153.
[9]宋尚平,李兴保.PHP模板引擎Smarty的安装配置及应用实现[J].现代教育技术,2007,17(9):80-82.
[10] LayUI开发使用文档[EB/OL]http://www.layui.e om/doc/,2018.
[11]杨鹏.基于改进SVD算法的个性化新闻推荐系统设计和实现[D].西安电子科技大学,2015.
[12]梁仕威,张晨蕊,曹雷,等.基于协同表示学习的个性化新闻推荐[J].中文信息学报,2018,32(11).
【通联编辑:唐一东】
收稿日期:2019-08-20
基金项目:本课题得到湖南省教育厅科学研究项目一般项目资助(12C0769)
作者简介:李姣燕,讲师,研究方向为商务智能,运筹学。