基于Android智能终端的个性化新闻推荐系统❋

2015-08-07 12:11周晨程陈慧萍华娇娇赵衎衎秦莹莹
微处理机 2015年3期
关键词:服务器端客户端个性化

李 洁,周晨程,陈慧萍,华娇娇,赵衎衎,秦莹莹

(河海大学物联网工程学院,常州213022)

基于Android智能终端的个性化新闻推荐系统❋

李 洁,周晨程,陈慧萍,华娇娇,赵衎衎,秦莹莹

(河海大学物联网工程学院,常州213022)

为更好的让智能终端的新闻阅读有针对性,本课题对新闻个性化推荐技术展开了研究,设计并实现了基于Android智能终端的个性化新闻推荐系统。系统采用C/S架构,服务器端首先进行新闻爬取和分类建模,然后根据新闻相似性和用户阅读行为,分阶段利用三种推荐模型即基于新闻分类的粗粒度推荐、基于内容的新闻推荐及基于内容和基于用户协同过滤混合的新闻推荐进行个性化新闻推荐;客户端负责个性化新闻阅读以及用户行为数据上传。经测试,本系统的分阶段不同个性化推荐算法可以很好的满足广大用户的个性化新闻阅读需求。

新闻推荐;用户模型;基于内容;协同过滤;混合推荐

1 引 言

随着移动互联网通信技术的普及和快速发展,移动互联网已成为网络技术发展的主流,移动互联网已经真正地融入人们的日常生活。与此同时,移动终端设备的性能也在不断提高,手机操作系统日趋智能化,依赖于移动智能终端来处理工作生活中的各种事务已经成为人们的习惯。为适应市场需求,新浪,搜狐,网易等各大网络在线新闻门户网站纷纷推出自己的手机新闻客户端。2014年2月24日,全球领先的移动互联网第三方数据挖掘和整合营销机构艾媒咨询发布的《2013年中国手机新闻客户端市场研究报告》显示,2013年中国手机新闻客户端用户规模达到3.44亿,同比增长48.3%,环比增长9.2%,手机新闻客户端在中国手机网民中的渗透率达到60.4%[1]。目前市场上的此类应用虽然拥有良好的人机交互界面和实时动态更新海量新闻的强大能力,然而面对千差万别的用户需求,仍没有一款应用能够真正做到针对具体用户的具体兴趣爱好来对其进行个性化新闻推荐,它们所谓的定制新闻和推荐都是非常粗粒度的推荐,不具备根据用户历史记录及用户兴趣来学习和动态更新用户模型的能力。

个性化推荐系统,由Robert Armstrong等人在1995年的美国人工智能协会上被首次提出,其本质在于根据收集到的用户兴趣特点,主动向用户提供用户可能会感兴趣的信息[2]。在信息过载的今天,个性化推荐在各个领域都发挥着重要作用。目前主流的个性化推荐算法可分为两类,一类是基于内容的,一类是协同过滤的,两种算法各有侧重点,较为成熟的个性化推荐应用一般会将两种推荐算法使用不同的方式和原理混合起来使用,以达到更加高质量的推荐目的[3]。本课题将用户使用情况分阶段处理,在不同阶段使用不同推荐算法以弱化推荐系统中常出现的冷启动和数据稀疏带来的影响。

2 系统分析与总体设计

2.1 系统需求描述

系统主要用于实现用户的个性化新闻推荐,能够根据用户的历史行为来自动获取用户的阅读兴趣,通过组合推荐技术从每天产生的海量新闻中挖掘出比较符合用户阅读兴趣并且用户从未阅读过的新闻提供给用户。另外为提高用户体验满意度,挖掘用户其它方面的潜在兴趣,在向用户提供个性化推荐新闻的同时,还具有新闻分类阅读、用户私有系统设置、用户收藏管理以及用户信息管理等功能。利用该系统,用户可以方便的了解感兴趣的新闻事件,不需要浪费太多精力去查找。而且更重要的是,该系统非常适用于用户需求不是很明确的情况。

2.2 系统总体设计

根据系统需求描述,本课题设计实现了基于C/S架构的个性化新闻推荐系统。服务器子系统主要有两个目标,一方面需要不断地获取最新新闻作为数据来源,另一方面接收来自客户端的请求,提供个性化推荐新闻集[4]。根据上述目标将服务器端分为三个功能模块,分别是新闻爬取模块、用户建模及个性化推荐模块和Web服务接口,其中Web服务接口用于服务器和客户端间各种数据的交互以及公共服务的调度。客户端子系统主要有三个目标,其一,从服务器端获取和展现针对用户的个性化推荐新闻数据;其二,向服务器端发送用户的喜爱指示器信息即用户在客户端的各种行为数据;其三,增进用户体验,增加用户黏着度[4]。基于上述目标,将客户端分为五个子模块,分别是个性化推荐阅读模块、用户行为实时上传模块、用户信息管理模块、用户收藏管理模块以及新闻分类展现阅读模块。在服务器端与客户端的协作下满足用户的需求。图1为系统架构图。

图1 系统架构图

服务器子系统由新闻爬取模块、用户建模及个性化推荐模块、Web服务接口三部分组成。新闻爬取模块负责定时对预定义实时在线新闻站点URL进行解析,获取最新的新闻数据,并添加至数据库,进而调用Web公共服务接口进行新入库新闻的关键词抽取、词数统计以及雷同新闻过滤等操作。用户建模及个性化推荐模块在客户端向服务器端Web服务发送请求后被调用,根据新闻之间相似性或者用户之间相似性,结合用户历史行为数据集进行用户建模,从而利用分阶段的不同个性化推荐算法生成推荐结果返回给客户端并存入数据库。Web服务接口负责与客户端进行数据交互,其数据交换格式采用轻量级的JSON格式。

客户端子系统由用户信息管理、用户收藏管理、用户行为实时上传、新闻分类呈现阅读以及个性化推荐阅读五个模块组成。在客户端,新用户首先必须完成用户注册,之后在登录验证成功后进入系统。系统根据用户动作使用轻量级的SOAP(简单对象访问协议)开发包动态调用Web服务接口来完成数据请求并将JSON格式数据返回给客户端。客户端在收到数据后进行解析,使用自定义的数据适配器进行页面布局,完成新闻列表及新闻具体内容的显示。在进行具体新闻阅读时,用户可完成对该条新闻的评分,系统会实时将用户对新闻的评分数据上传至服务器端数据库。此外,为获得更好的用户体验,系统还具有用户私人系统设置功能。

3 服务器端设计与实现

服务器端主要分为三大模块,分别是定时新闻爬取、用户建模及个性化推荐算法、Web服务,其分别采用Java和C#语言开发实现[5]。遵循需求分析目标,主要完成实时新闻数据的获取;接受Web服务调用,对用户行为数据和新闻进行建模,使用分阶段不同推荐算法进行推荐结果的生成;调用公共服务,与客户端进行数据交互。服务器系统结构图如图2所示。

图2 系统服务器端功能模块划分

3.1 新闻爬取

预定义新浪、新华网、腾讯和搜狐四大主流在线新闻站点URL,提取当前站点主页的所有链接,判断当前链接所属新闻分类,若不属于预设新闻类别中任何一类,则跳过继续判断下一个链接,相反,则对该链接进行网页源代码解析,提取出新闻要素信息。在新闻要素信息过滤处理阶段,首先使用现有的Java分词Jar包来提取新闻标题、摘要和关键字、主体内容等。其次,由于每个站点的页面布局等特征不同,需要根据不同站点的特征来分别进行内容过滤清理。最后若当前新闻包含图片信息,还需要提取出新闻图片URL,在上述工作全部完成后,将爬取到的新闻要素插入至服务器端系统数据库的news数据表中。在本轮的新闻数据爬取完成后,先后调用Web服务的关键词提取、新闻词数统计以及雷同新闻过滤接口,分别完成新入库新闻关键词提取,统计每条新闻内容词数以及雷同新闻过滤[6]。

3.2 用户建模及个性化推荐

模块是整个系统的核心和创新点所在。上文中已提到,本系统采用分阶段不同推荐算法生成个性化推荐新闻,其分阶段依据为用户历史行为数据量以及系统用户群体规模。服务器端在接受Web服务调用后,判断当前所处阶段,使用不同的推荐算法为目标用户产生符合阶段特征的新闻列表。

第一阶段,基于新闻分类的粗粒度推荐

由于缺乏新注册用户的历史行为数据,那就意味着无法获得用户的兴趣偏好,进而无法为用户提供高质量的个性化的新闻推荐结果集。因此新进系统用户得到的个性化推荐新闻集实际上是按照用户注册时提供的感兴趣新闻分类,将近两日用户未阅读过的且属于用户感兴趣新闻分类的新闻随机混合后提供给用户,是非常粗粒度的推荐结果。同时需要指出的是,该阶段属于用户的最初历史数据积累阶段。

第二阶段,基于内容的新闻推荐

在用户的历史行为记录数量达到系统设定的阈值时,系统开始使用基于内容的个性化新闻推荐算法向用户进行推荐,其具体过程分为三个步骤。

(1)项目表示

在文本推荐领域,一般需要先将非结构化数据的新闻转化为结构化数据——关键词集合的形式。本系统采用向量空间模型来表征一篇新闻,将所有新闻集合记为D={d1,d2,...,dN},假设当前新闻记为di,则di可被表示为[7]:

其中Ki表示当前新闻的第i个关键词,wij表示新闻j中第i个关键词的权重。将第i个关键词在新闻j中出现的次数与新闻j总词数的比值(即相对词频)作为wij。最终第i个关键词在新闻j中的权重由公式(1)获得:

其中TF(ki,dj)表示第i个关键词在新闻j中出现的次数,SumWords(dj)表示新闻j总的词数。抽取新闻关键词的操作将在线下进行,在每轮次的新闻爬取工作完成后,调用NLPIR分词系统对新爬取的新闻进行关键词抽取和词数统计并存至数据库,方便日后进行新闻之间相似性的计算。

(2)最近邻查找

系统使用基于余弦相似度的方法来计算新闻之间的相似度。为提高推荐效率,本系统在新闻相似性比对时,会首先将用户的阅读历史按照新闻大类进行分类,选取用户每个阅读大类的最近50条用户阅读记录来作为用户历史行为数据,学习用户对该类新闻的阅读偏好,建立用户-项目评分矩阵。选取最近两天爬取到的用户未看过的该类新闻作为新的项目集合。对于每一个新的新闻,与用户阅读过的该类所有项目进行余弦相似性的计算,其余弦相似性计算公式如(2)所示。

注A,B,表示两篇新闻,n表示两篇文档关键词的并集,Ai表示关键词i在A新闻中的权重,Bi表示关键词i在B新闻中的权重。

在上述相似性计算完毕后,从该类用户阅读过的所有新闻中找到与此新闻最相似的k篇新闻,然后依据用户对这k篇新闻的评分来预测当前用户对此候选新闻的评分,其评分预测如公式(3)所示。

注:Prei,p表示用户i对新闻p的评分预测,KNN集合表示新闻p的k近邻集合,simp,n表示新闻p与n的相似度,Ri,n表示用户i对新闻n的评分。

(3)推荐结果生成

将上述预测到的评分集合存储至数据库。在将评分集合按照评分高低进行降序排列后,作为最后的推荐结果列表以JSON数据格式返回给客户端。

第三阶段,基于内容和基于用户协同过滤混合的新闻推荐

在用户历史行为记录数量以及系统用户群体数量增加至系统预设的更高阈值时,系统开始进行基于内容和基于用户协同过滤的混合推荐。该混合推荐以基于用户的协同过滤算法为主,在基于用户的协同过滤算法生成推荐结果的质量不足的情况下,辅以基于内容的推荐结果,最后将两种推荐算法生成的结果集混合后排序,存入数据库并返回给客户端。

在此之前,上文已对基于内容的新闻推荐进行了详述,下文将主要对基于用户的协同过滤算法进行论述。该算法在传统的协同过滤基础上进行了一定创新,即在用户相似性比对之前,首先对用户-评分矩阵中当前用户未有过行为item使用基于内容的方法进行评分预测,使得用户之间共同评分的item集合增大,减弱数据稀疏性的影响[8]。

该改良后的算法由两部分组成,分别是近邻寻找及推荐结果集产生。

(1)近邻寻找

首先计算用户和阅读过的新闻集合的并集Uij,预测用户i和j在新闻集合Uij未阅读新闻的评分,其预测方法与基于内容的新闻评分预测相同。在上述预测结束后,集合Uij中的所有新闻评分已经全部存在。则对于任意新闻p有p∈NRi,用户i对新闻p的评分如公式(4)所示。

然后在新闻集合Uij上采用修正的余弦相似性方法来计算用户i和用户j之间的相似性,具体如公式(5)所示。

在用户相似性计算完毕后,将相似性按照降序排序,找出当前用户的K近邻用户。

(2)推荐结果集产生

在找出当前用户的最近邻用户集合C后,接下来要产生推荐结果。设当前用户为Cu,用户Cu对新闻i的预测评分为Pr(Cu,i),计算如公式(6)所示。

在公式中,sim(Cu,n)表示用户Cu与用户n的相似性,Rn,i表示用户n对新闻i的评分表示用户Cu对i项目的平均评分,Rn表示用户n对项目i的平均评分。

3.3 Web服务

一般地,Web Service负责接收客户端请求和返回请求数据。Web Service将函数接口暴露给客户端,接受来自客户端的请求,执行相应的函数[9]。根据其功能划分,本系统的Web Service接口可分为五类。其一,用户信息管理,能够进行用户信息验证以及用户信息获取等操作。其二,用户收藏管理,能够对服务器端数据库中目标用户收藏数据及客户端SQLite数据库中目标用户的收藏数据进行同步操作。其三,用户行为实时上传,能够将客户端发送的隐式或者显式用户行为存储至用户历史行为记录表。其四,公共服务关键词抽取,新闻词数统计等的调用。其五,新闻数据获取,能够根据客户端请求,以JSON格式返回其所请求的新闻数据。

4 客户端设计与实现

在本系统的客户端,采用Android原生开发技术,主要提供用户个性化新闻推荐的展示与阅读[10]。同时遵循个性化系统的原理,将用户对新闻的各种行为数据实时上传至服务器端数据库,不断进行用户历史数据的积累,以达到更好的推荐效果。此外,为增进用户体验和发现用户潜在兴趣,还附加了新闻分类呈现及用户私人设置等功能。客户端系统结构图如图3所示。

图3 系统客户端功能模块划分

4.1 用户信息管理

个性化推荐系统其本质就在于根据用户的历史行为来发掘出用户的兴趣爱好,向用户推荐他们可能喜欢的新闻。因此,为区分不同用户的行为,系统就必须具备用户注册、登录等功能。本系统在具备上述功能外,还在用户信息管理模块中提供了密码找回以及包含系统字体设置和背光度设置在内的用户私人设置功能,使得系统有更加出色的用户体验。

4.2 用户收藏管理

本系统允许用户收藏自己喜欢的新闻,同时若用户收藏该条新闻则代表用户对该新闻的评价最高。用户在进行收藏新闻的管理时,系统会调用Web服务接口将服务器端的收藏信息与客户端同步,避免出现服务器端数据库与客户端数据库信息不一致的情况。

4.3 用户行为实时上传

海量用户行为数据是个性化推荐系统提供用户高质量推荐结果的重要保障。因此,客户端必须能够收集用户对新闻的所有有用行为。本系统客户端能够实时上传用户对具体新闻的显式评分和隐式评分。所谓显式评分即系统在新闻阅读页面下方会有四个级别评分的选项,分别是添加收藏、非常关注、一般关注和不关注,代表用户对新闻的偏爱程度依次降低。而隐式评分指用户在当前新闻阅读页面的停留时长。显式评分和隐式评分在具体使用时,会经过一定的转化,从而协调统一[11]。

4.4 个性化推荐阅读及新闻分类呈现

向用户展示个性化推荐新闻是客户端的主要目标之一,用户在进入推荐页面后,客户端会自动调用特定Web服务接口,Web服务调用个性化推荐算法模块产生推荐结果。最后该Web服务接口以JSON格式返回个性化推荐结果,按照既定页面布局显示。由于推荐过程的复杂性,推荐结果的生成需要一定的时间,因此,本系统的个性化推荐及新闻分类呈现模块都采用异步数据获取的方式,杜绝应用出现假死的情况。新闻分类呈现模块与一般新闻客户端相同,不同分类窗口展示不同类别的新闻,该模块有助于用户潜在兴趣的进一步挖掘。

5 结束语

课题设计并实现了基于Android智能终端的个性化新闻推荐系统,采用C/S的体系架构和模块化设计方式。在此阐述了系统的整个架构、模块划分以及各模块作用,主要论述了服务器端个性化新闻推荐和各个系统模块的工作流程。大量的系统测试表明,本系统实现了新闻的个性化推荐阅读,能够很好地满足广大用户的需求。

[1] 艾媒咨询.2013年中国手机新闻客户端市场研究报告[EB/OL].http://www.iimedia.cn/37080.htm l,2014-03-03.

[2] 百度百科.个性化推荐系统[EB/OL].http://baike.baidu.com/view/4362864.htm?fr=aladdin,2013-04-29.

[3] 唐朝.资源自适应个性化新闻推荐系统的研究与实现[D].杭州:浙江大学,2010.

[4] Tavakolifard M,Gulla JA,Almeroth K C,et al.Tailored news in the palm of your hand:a multi-perspective transparentapproach to news recommendation[C].//Proceedings of the 22nd international conference on World Wide Web companion.International World Wide Web Conferences Steering Committee,2013:305-308.

[5] Christian Nage,Bill Evjen,等著.C#高级编程(第7版)[M].黄静,等译.北京:清华大学出版社,2010.

[6] Lv Y,Moon T,Kolari P,et al.Learning to model relatedness for news recommendation[C].//Proceedings of the 20th international conference on World wide web.ACM,2011:57-66.

[7] 吴丽花,刘鲁.个性化推荐系统用户建模技术综述[J].情报学报,2006,25(1):55-62.

[8] 孙铁利,杨焱.基于内容预测的协同过滤推荐[J].计算机科学,2005,32(8):181-182.

[9] 百度百科.Web Service[EB/OL].http://baike.baidu.com/link?url=2EzKjNkG8Rb8CNxIf96oCk_3ryICWEF2VLkQaXXeClS3SBmNtdoqM3aGJYE3OHXz,2014-04-15.

[10] 李刚.疯狂Android讲义[M].北京:电子工业出版社,2011.

[11] 彭菲菲,钱旭.基于用户关注度的个性化新闻推荐系统[J].计算机应用研究,2012,29(3):1005-1006.

Personalized News Recommendation System Based on Android Intelligent Term inal

Li Jie,Zhou Chencheng,Chen Huiping,Hua Jiaojiao,Zhao Kankan,Qin Yingying
(College of Internet of Things Engineering,Hohai University,Changzhou 213022,China)

In order tomake the news reading in the intelligent terminalmore personalized,we design and implement the system of personalized news recommendation based on the Android intelligent terminal.The system,based on C/S structure,firstly crawls news and establishes the models with classifications in the server terminal,and then,in different phases to carry out the personalized news recommendation in accordance with similarities between news and users'reading behaviors,uses different recommendation models such as the coarse-grained recommendation based on news classification,the news recommendation based on content and themixed recommendation based on news content and users collaborative filtering.The client terminal is used for reading personalized news and uploading user behavior data.After test,the personalized recommendation algorithm of the system in different phases can satisfy the users'reading needs for the personalized news.

News recommendation;User-Model;Content-Based;Collaborative-filtering;Hybrid recommendation

10.3969/j.issn.1002-2279.2015.03.012

TP311

A

1002-2279(2015)03-0038-05

国家大学生创新实践项目资助(201210294075)

李洁(1992-),女,江苏人,学士,主研方向:计算机科学与技术。

2014-07-22

猜你喜欢
服务器端客户端个性化
Linux环境下基于Socket的数据传输软件设计
坚持个性化的写作
如何看待传统媒体新闻客户端的“断舍离”?
新闻的个性化写作
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
基于Qt的安全即时通讯软件服务器端设计
上汽大通:C2B个性化定制未来
基于Qt的网络聊天软件服务器端设计