【基于混合算法的新闻资讯系统设计14000字(论文)】_第1页
【基于混合算法的新闻资讯系统设计14000字(论文)】_第2页
【基于混合算法的新闻资讯系统设计14000字(论文)】_第3页
【基于混合算法的新闻资讯系统设计14000字(论文)】_第4页
【基于混合算法的新闻资讯系统设计14000字(论文)】_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于混合推荐算法的新闻资讯推荐系统设计摘要国内外常用于新闻推荐系统的算法主要是基于内容推荐,部分是用户协同过滤推荐,混合推荐算法比较少见,融合了用户反馈机制和实时性推荐的混合推荐算法更少见。为了满足新闻用户兴趣变化快、个性化的推荐特点,本文通过用户兴趣度标签列表实现了基于内容的推荐、协同过滤推荐和基于用户反馈的推荐三种推荐算法的融合。基于用户反馈计算出用户对每个标签的兴趣度,并加入时间衰减函数,形成用户兴趣度标签列表,为用户推荐与相似用户兴趣度标签列表较匹配的新闻,提高了新闻推荐的实时性和多样性。同时采用信息熵法解决冷启动问题。系统功能测试显示该系统功能无误,符合用户的功能性需求。用户测试结果显示本文提出的新闻推荐系统在系统交互体验感、推荐时效性、推荐结果多样性、推荐结果准确度等方面均优于基于内容推荐或用户协同过滤的推荐系统。未来还应在提高算法效率、提高数据处理速度以及增加移动端应用等方面进行改进。关键词:新闻推荐;用户感兴趣标签;实时性;混合推荐算法目录第1章前言 11.1研究现状 11.1.1研究概述 11.1.2存在问题 21.2研究背景及意义 31.3主要研究内容 31.3.1算法部分 31.3.2系统实现 4第2章开发环境 52.1拟采取的关键技术及其技术路线 52.1.1关键技术 52.1.2技术路线 52.2拟采取的软硬件工具及平台说明 5第3章系统总体设计 63.1系统功能模块 63.1.1前台功能模块 63.1.2后台功能模块 63.2系统流程图 73.3E-R图 83.4数据表设计 9第4章混合推荐算法 124.1算法描述 124.2基于内容的推荐 124.3基于用户反馈的推荐 134.4协同过滤推荐 144.5混合式推荐 154.6算法融合 154.7改进之处 15第5章系统实现 175.1前台部分 175.1.1首页模块 175.1.2注册及登录模块 175.1.3标签选择模块 185.1.4热点新闻模块 185.1.5用户反馈模块 195.1.6推荐模块 215.2后台部分 225.2.1首页模块 225.2.2用户管理模块 225.2.3新闻管理模块 235.2.4轮播图管理模块 25第6章系统测试 266.1黑盒测试 266.2用户测试 29第7章总结 31参考文献 32第1章前言现在的时代是信息爆炸的时代,互联网规模和覆盖面的迅速增长带来了信息超载的问题。这时,用户想要从过量信息中提取自己想要的信息就成了一个问题。搜索引擎更倾向于人们有明确目标的使用场景,可以通过关键字得到返回结果。而推荐引擎更倾向于用户的目的模糊时,根据用户的历史行为或用户的兴趣偏好或人口统计学特征来进行推荐,可以给所有项目和内容提供可能的曝光机会,以此挖掘所有项目的潜在利润。推荐系统是根据用户的信息需求、兴趣等,将用户感兴趣的信息、产品等推荐给用户的个性化信息推荐系统。一个好的推荐系统不仅可以满足用户的个性化需求、提高用户的满意度,还能增加用户粘性,与用户建立长期、忠诚、稳定的关系。新闻作为海量信息的载体,也是未来推荐系统成长的一片沃土。传统的新闻门户只是扮演信息集合的角色,用户只能被动地浏览和查找网站提供的内容。而能提供用户需要信息的新闻推荐系统,如今日头条、凤凰新闻等将逐渐成为互联网用户获取新闻的主要途径。但是如何有效地、实时地、灵活地推送用户感兴趣的新闻以及对用户有价值的资讯,将直接关系到该服务的用户体验。1.1研究现状1.1.1研究概述近几年的新闻推荐系统可以分为基于内容推荐、协同过滤推荐、混合推荐等三类。(1)基于内容推荐:对新闻和用户建模,然后把与用户历史阅读新闻相似的新闻推荐给用户。这种推荐算法是最早被广泛使用的,同时此领域也有很多丰富的研究成功,包括NewT系统、PSUN系统、NewDude系统、INFOrmer系统、ACRNews系统及SIFTNetNew系统等[1]。基于内容的推荐方法一般包括以下三步:①新闻特征提取:在新闻的内容中抽取一些特征,用于结构化表示新闻;②用户画像学习:即用户建模,利用用户过去喜欢及不喜欢的新闻的特征数据,来学习出此用户的喜好特征;③生成推荐:通过计算前面得到的用户画像与候选新闻的特征相似度,为此用户推荐一组与用户喜好最相似的新闻[2]。(2)协同过滤算法:可分为基于物品的协同过滤和基于用户的协同过滤。基于物品的协同过滤侧重于物品的推荐,如天猫商品、当当网书籍等,关键是分析物品间相似度。基于用户的协同过滤侧重于搜索相似用户,将与不同用户关注的相似兴趣事物推荐给用户,主体是用户之间的相似度[3]。协同过滤算法参照“接近推荐生成问题”的两种主要方法:①基于存储器的算法利用整个用户项矩阵来识别类似的实体。在找到最近的邻居后,这些实体的过去评级被用于推荐;②基于内存的算法,其可以是基于用户的、基于项目的,也可以是混合的[4]。(3)混合推荐:目前大部分是融合基于内容推荐和协同过滤推荐这两种算法。杨屋等[5]提出的基于内容的推荐与协同过滤融合的新闻推荐方法的F值与整体多样性均有明显提高,且不存在冷启动。宋帅[6]则实现了基于混合策略的新闻推荐模型,将基于LDA的用户综合兴趣模型和基于命名实体集合的用户综合兴趣模型的结果进行了基于流水线式混合和并行式混合的混合计算,并将这两种混合策略的推荐结果进行并集运算,再加入热点新闻内容,得到最终的推荐列表。在混合推荐方法中,协同过滤推荐提高了基于内容推荐效果,基于内容推荐较好解决了协同过滤所面临的数据稀疏性问题和冷启动问题,因此混合推荐是未来个性化新闻推荐发展的方向。1.1.2存在问题(1)协同过滤推荐算法:①推荐个性化不足,相似用户群除去共同兴趣外的那部分,剩下的不一定是用户感兴趣的内容;②冷启动问题,包括没有足够信息来构建兴趣模型的用户冷启动,以及新加入的没有足够浏览数据的新闻冷启动,都很难进行推荐;③相似用户群的局限性,构建相似用户群时仅仅使用用户的行为数据,会造成明明是相似用户却未被构建到一类用户群的情况[7];④数据稀疏性问题,很多情况下用户并没有足够多的历史数据。(2)基于内容的推荐算法:①推荐多样性不足,只局限于自己了解的领域[7];②推荐准确性低,在一些场景下,简单通过内容分析难以准确获取用户兴趣。(3)混合推荐:可以兼顾用户对内容的多样性和个性化两方面的需求,但目前有些混合推荐方法仅仅将两者推荐结果筛选或按权重进行推荐,有些将一种方法的输出作为另一种方法的输入,有些加大了用户偏向方面的比重。这些方法依然是通过协同过滤来产生推荐结果,所以都必须等目标用户的相似用户群形成足够点击后才能产生针对目标用户的推荐结果,也就是仍存在冷启动问题[7]。(4)用户兴趣变化(时效性)[8]:如何把用户的潜在需求转化为现实需求并进行个性化推荐,如何识别用户兴趣的改变,针对用户兴趣的改变做出个性化推荐,都是有待进一步研究的方向。(5)信息茧房[9]:人们可以在海量的信息中随意选择自己关注的话题,完全根据自己的喜好浏览新闻,即一种完全个人化的阅读。因公众自身的信息需求并非全方位的,公众只注意自己选择的东西和使自己愉悦的通讯领域,久而久之,会将自身桎梏于像蚕茧一般的“茧房”中。(6)隐私与安全[10]:推荐系统通过分析用户的人口统计学信息、行为数据、上下文信息等,从中挖掘用户偏好为用户生成精准推荐。但与此同时可能泄露用户的安全和隐私信息。大数据环境下,大规模用户数据包含更多用户隐私和安全信息,如何通过分布式的方式取代传统的集中式数据获取,在不改变用户行为习惯,不危害用户隐私安全的前提下,充分利用用户大数据生成精准推荐项目,成为大数据环境下推荐系统用户隐私保护和安全性研究的热点和难点。综上所述,现有推荐算法普遍存在推荐个性化和多样性差、难以灵活根据用户兴趣变化而进行实时推荐、冷启动问题等问题。本文将通过标签来融合基于内容推荐、基于用户反馈推荐、用户协同过滤推荐三种算法,加入时间衰减函数,解决推荐算法实时性和多样性差的问题,并通过信息熵法解决冷启动问题,使该系统能随用户兴趣变化而实时变化推荐内容。1.2研究背景及意义新闻是基于大量文本的一种内容表现形式,比较适合运用基于内容推荐的内容特征提取来进行推荐,本文采用常见的新闻标签作为新闻内容的特征进行推荐。为了避免使用基于内容推荐带来的推荐多样性不足,需要融合用户协同过滤推荐,推荐时采用相似用户的兴趣标签列表,在推荐用户感兴趣内容的同时推荐用户可能感兴趣的内容,可以扩大推荐范围,增加推荐多样性。新闻是时效性很强的信息载体,热点随时都在变化,用户的兴趣也在随时间而变化。在本文的基于用户反馈推荐中,将计算出的用户兴趣度乘上时间衰减函数加到兴趣度标签上,则可以实现推荐随用户兴趣变化而变化的效果。即用户越是最近访问的,越容易被推荐给用户,用户最近访问变化,则推荐给用户的也发生变化,可以解决推荐实时性不足的问题。针对融合算法带来的冷启动问题,考虑使用推荐系统中常见的信息熵法,即根据新闻热度从高到低的排序进行推荐。一种信息出现概率更高时,表明它被传播得更广泛,符合本文新闻热度的概念。1.3主要研究内容1.3.1算法部分(1)基于内容的推荐:按标签对新闻进行分类,共十个标签,每条新闻对应一个或多个标签。新闻对应的标签可以通过后台系统修改。新闻热度由点击数、点赞数、收藏数决定。(2)基于用户反馈的推荐:本系统的显式反馈包括用户的点赞、收藏和评论,隐式反馈包括浏览时长、最近浏览时间间隔。显式反馈和隐式反馈中的浏览时长以一定权重组合来表示用户对新闻的兴趣度,隐式反馈中的最近浏览时间间隔用在兴趣度的时间衰减函数中,最后算得的用户实时兴趣度加在用户对应的兴趣度标签上。(3)协同过滤推荐:通过比较两个用户的兴趣度标签列表,比较其相同标签数和相同标签的优先级差值,得到用户相似度,按相似度正序排序选择相似用户,若相似用户无兴趣度标签,则匹配下一个相似用户。(4)混合式推荐:通过用户兴趣度标签列表实现了以上三个算法的融合。每个用户都有用户兴趣度标签列表,里面共有10个标签(标签名对应新闻标签分类),通过用户对新闻的反馈计算出用户对新闻的实时兴趣度,将实时兴趣度值加在与该新闻标签名一致的用户兴趣度标签上,推荐时计算每个标签的平均值并进行排序。通过协同过滤算法比较不同用户的兴趣度标签列表的相似度,从而获得相似用户。最后在混合式推荐中,将算得的相似用户的兴趣度标签与所有新闻标签进行比较,相同的标签越多并且相同标签在新闻标签中的排序越高,就越优先推荐该新闻。1.3.2系统实现系统分为前台和后台两个部分。前台部分主要功能包括推荐新闻(包括按算法推荐和按标签随机推荐)、查看热门新闻、对新闻进行交互操作(如查看、点赞、收藏、评论)。后台部分主要负责管理前台需要的数据,包括用户、新闻、标签、评论、轮播图,管理操作一般有增、删、改、查,特殊的有用户禁言、分配新闻标签等。

第2章开发环境2.1拟采取的关键技术及其技术路线2.1.1关键技术Web的开发拟采用前端Vue框架+后端SpringBoot+数据库Mysql的模式。2.1.2技术路线(1)Vue是一套用于构建用户界面的渐进式JavaScript框架。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。(2)Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。(3)SpringBoot是全新开源的轻量级框架。它不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。2.2拟采取的软硬件工具及平台说明(1)开发环境:IDEA,JDK16。(2)操作系统:Windows10。(3)工具:IntellijIDEA,vue.js,Mysql数据库,NavicatPremium。Vue.js是一套构建用户界面的渐进式框架。Navicatpremium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到MySQL、SQLite、Oracle、MariaDB、Mssql、及PostgreSQL资料库,让管理不同类型的资料库更加的方便。(4)开发语言:Java,JavaScript。JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言,它是作为开发Web页面的脚本语言。

第3章系统总体设计3.1系统功能模块3.1.1前台功能模块如图3.1所示,前台部分有5个主要功能模块和17个细分模块。图3.1新闻推荐系统功能模块图(1)账号操作:包括注册、登录、退出等功能,只限普通用户。(2)混合推荐算法推荐:根据本文所设计算法为用户进行推荐。(3)新闻分类推荐:包括财经、房产、家居、教育、科技、社会、时政、体育、游戏、娱乐十个分类,用户选择分类标签后,会被随机推荐关于该分类标签的新闻。(4)热门新闻排行:列举热度前十的新闻标题、排名及具体热度,可以通过排行榜点击查看新闻。(5)新闻操作:可查看新闻,并进行评论、点赞、收藏的操作。3.1.2后台功能模块如图3.2所示,后台部分有4个主要功能模块和15个细分模块。图3.2后台管理系统功能模块图(1)用户管理:可对所有用户进行新增、删除、修改、查询和禁言的操作。(2)新闻管理:一方面可对所有新闻进行新增、删除、修改、查询的操作,同时对新闻标签进行操作,另一方面可以对所有新闻评论进行新增、删除、修改、查询的操作。(3)首页轮播管理:可以对首页轮播图进行新增、删除、修改的操作。(4)跳转到门户网站:可跳转到前台新闻推荐系统。3.2系统流程图该新闻推荐系统的处理流程如图3.3所示。用户进入登录页面后可以选择登录已用账号或注册新账号,用户分为普通用户和管理员。登录后,普通用户可进入前台浏览新闻,并对新闻进行点赞、收藏、评论等操作。管理员既可以进入前台也可以进入后台,管理员可在后台对用户、新闻、评论、轮播图的数据进行管理(包括新增、删除、修改、查询、禁言的操作)。后台系统可跳转到前台系统,后台和前台都可以直接退出系统,退出后回到登录界面。图3.3系统流程图3.3E-R图E-R图又叫实体联系图,反映了实体的属性和实体之间的关联关系,根据系统需求提取出的实体有:用户、新闻、标签、评论、交互记录。如图3.4所示,数据库中的新闻与标签是多对多的关联关系,用户与兴趣标签列表是一对一的关联关系,兴趣标签列表与标签是多对多的关联关系,用户和用户群是多对多的关联关系。图3.4实体联系图3.4数据表设计系统所用数据库含有如下数据表:用户表(user):存储用户账号信息,包括普通用户和管理员;新闻表(news):存储新闻内容信息,以及这些新闻被用户反馈的历史痕迹;标签表(label):存储新闻分类标签信息;评论表(comment):存储用户对新闻的评论信息;新闻所属标签表(newslabel):存储新闻与标签的对应关系;交互记录表(record):存储用户与新闻之间交互的具体信息;用户感兴趣标签表(userlabel):存储每个用户偏好的新闻类别及偏好程度;轮播图表(banner):存储与目标用户偏好相似的用户信息及相似程度;表3-1用户表(user)描述字段名字段类型主键外键是否为空默认值IDUserIdInt√√××账号AccountVarchar××××密码PasswordVarchar××××名称NameVarchar××××用户类型StateTinyint××××表3-2新闻表(news)描述字段名字段类型主键外键是否为空默认值IDNewsIdInt√√××标题TitleVarchar××××新闻内容ContentText××××点击数HitsInt×××0点赞数GoodInt×××0收藏数BadInt×××0表3-3标签表(label)描述字段名字段类型主键外键是否为空默认值IDLabelIdInt√√××名称LabelNameVarchar××××表3-4评论表(comment)描述字段名字段类型主键外键是否为空默认值IDCommentIdInt√×××用户IDUserIdVarchar××××新闻IDNewsIdVarchar××××评论内容CommentContentText××××表3-5新闻所属标签表(newslabel)描述字段名字段类型主键外键是否为空默认值IDNewsLabelIdInt√×××新闻IDNewsIdVarchar××××标签IDLabelIdVarchar××××表3-6交互记录表(record)描述字段名字段类型主键外键是否为空默认值IDRecordIdInt√×××用户IDUserIdVarchar××××新闻IDNewsIdVarchar××××浏览时长(按分)BrowseTimeInt×××0浏览内容长度占比BrowseProportionInt×××0浏览反馈(点赞0踩1评论2)BrowseFeedbackInt××√×表3-7用户感兴趣标签表(userlabel)描述字段名字段类型主键外键是否为空默认值IDUserLabelIdInt√×××用户IDUserIdVarchar××××标签IDLabelIdVarchar××××兴趣度总和InterestSumDouble×××0兴趣数InterestNumInt×××0最近访问时间RecentVisitTimeDate××××表3-8轮播图表(banner)描述字段名字段类型主键外键是否为空默认值IDIdInt√×××图片地址UrlVarchar××××

第4章混合推荐算法4.1算法描述本文的推荐算法混合了基于内容的推荐、基于用户反馈的推荐以及协同过滤推荐等三种算法。(1)基于内容的推荐:用标签对所有新闻进行分类,共十个标签,每条新闻可具备一个或多个标签,用户兴趣度标签列表也包含同样的标签分类,最后根据用户的兴趣度标签列表和新闻标签列表的匹配度进行推荐。每条新闻包含标签、题目、内容、热度四个属性,热度属性由该新闻的点击数、点赞数、收藏数决定。(2)基于用户反馈的推荐:用户对某条新闻的兴趣度由用户与该新闻的交互记录来决定,交互记录包括浏览新闻的时长和浏览反馈,同时引入时间衰减函数[11]得到用户对该新闻的实时兴趣度,然后在该用户兴趣度标签列表中,将算出的实时兴趣度累加到与新闻标签名一致的标签上,就可以得到用户对某标签的兴趣度了。进行推荐时,计算用户兴趣度标签列表中每个标签的平均值,最后将平均值进行一个排序,就可以得到用于推荐的用户兴趣度标签列表了。(3)协同过滤推荐:先找出目标用户的感兴趣标签列表H1和待比较用户的感兴趣标签列表H2的相同标签,统计相同标签数量,然后计算出这些相同标签的优先级差值,最后根据这两个影响因素算出目标用户与比较用户的相似度。同样地,计算出目标用户与其他所有用户的相似度后进行排序,取相似度最高的用户作为目标用户的相似用户,若相似用户没有数据则取下一个相似度最高的为相似用户,以此类推。(4)混合式推荐:冷启动时,按新闻热度排序进行推荐。其他情况下,取相似用户的感兴趣标签列表H2,然后依次取每条新闻,将所取新闻与列表H2的相同标签数、相同标签在H2中的排序值(取最高)作为判断所取新闻的优先级的因素。按新闻优先级形成推荐列表,具体方式是:先按相同标签数从大到小排序,如果相同标签数相同,则按相同标签在H2中的排序的值从大到小来排序。4.2基于内容的推荐主题标签主要有十个板块,表示为式(4-1)。新闻的热度V由点击数a、点赞数b、收藏数c计算得到,表示为式(4-2)。每条新闻属于一个或多个主题标签,拥有不同的热度和内容,表示为式(4-3)。(4-1)其中:P表示新闻标签集合,p表示某标签名称。(4-2)其中:V表示某新闻热度,a表示点击量,b表示‘点赞’的数量,c表示‘收藏’的数量。(4-3)其中:F表示新闻属性集合,p表示该新闻所属标签,由式(4-1)得到,f表示该新闻的内容,v表示该条新闻的热度,由式(4-2)得到。4.3基于用户反馈的推荐用户对新闻的兴趣度可表示为式(4-4)。本文引入一个时间单调递减函数来体现用户兴趣随时间的变化过程,表示为式(4-5)。综上所述,用户对新闻的实时兴趣度可以表示为式(4-6)。计算出用户对新闻的实时兴趣度后,将该值分配到新闻所属标签中,用户对标签的兴趣度可表示为这些值的平均值,表示为式(4-7)。按用户对不同标签兴趣度的大小排序,统计出用户的感兴趣标签列表,长度为5,表示为式(4-8)。(4-4)其中:K为用户对某新闻的兴趣度,x为浏览新闻的时长(分钟),y为用户反馈值(点赞=1,收藏=1,评论=2,多个操作则累加)。(4-5)其中:f(t)为时间衰减函数,t为当前时间与最近访问该标签时间的差值,即时间间隔。(4-6)其中:K(t)为随时间变化的用户兴趣,K为用户对新闻的兴趣度,由式(4-4)得到,f(t)为该新闻所属标签的时间衰减函数,由式(4-5)得到。(4-7)其中:h为用户对某标签的兴趣度,K(t)为随时间变化的用户兴趣,由式(4-6)得到,n为用户与该标签下新闻有交互记录的新闻数量。(4-8)其中:H为用户对不同标签的兴趣度排序表,h为用户对某标签的兴趣度。4.4协同过滤推荐本文将目标用户的感兴趣标签列表表示为H1,待比较用户的感兴趣标签列表表示为H2。将H1中的每一个标签都与H2中的标签比较,如果能在H2中找到相同的标签,则将H1中该标签的优先级表示为s1,H2中该标签的优先级表示为s2,计算出二者的绝对值,如式(4-9)。如果没有相同标签,则不纳入式(4-9)的计算。因为虽然两个标签列表里有同一个标签,但两者优先级的不同也是判断两者相似性的条件。然后将所有计算出的值取平均值,从而得到该用户与目标用户的相似度,可表示为式(4-10)。比较所有用户与目标用户的相似度,取相似度最高的用户作为目标用户的相似用户,将相似用户的感兴趣标签列表H2作为推荐标签列表。(4-9)其中:W为某相同标签在不同用户感兴趣标签列表中的优先级差值,s1为该相同标签在目标用户感兴趣标签列表H1中的排序值,s2为该相同标签在比较用户感兴趣标签列表H2中的排序值。(4-10)其中:g表示用户相似度,n为H1与H2中相同标签的数量,W为某相同标签在不同用户感兴趣标签列表中的优先级差值,由式(4-9)得到,W平均值若为0则取其倒数为1。4.5混合式推荐(1)冷启动情况:采用信息熵法解决。即如果用户是新用户,没有兴趣标签列表,也没有交互记录,则按新闻的热度v从高到低排序来进行推荐。(4-11)其中:U为某新闻的推荐优先级,v为新闻的热度,由式(4-2)得到,本式意即U与v相关。(2)正常情况下:新闻推荐的优先级算法可表示为式(4-11),即新闻推荐时,先按l的大小进行排序,当l相等时,再按j的大小进行排序,即可形成新闻推荐列表。(4-12)其中:U为某新闻的推荐优先级,l为该新闻所属标签与推荐标签列表中的相同标签数,j为该新闻所属标签在推荐标签列表中排序值最高的标签的排序值,本式意即U与l和j相关。4.6算法融合三种算法的融合点主要在用户兴趣度标签列表上。基于内容推荐中用标签对新闻分类。用户反馈算法根据新闻标签的分类,为用户设立了相同分类的兴趣度标签列表,将用户对新闻反馈所得的兴趣度加到对应的兴趣度标签上。协同过滤推荐将不同用户的兴趣度标签列表进行比较,找到最相似用户,将最相似用户的兴趣度标签列表作为推荐依据,推荐时比较新闻标签列表和兴趣度标签列表,找到最相似的十条新闻作为推荐新闻。4.7改进之处(1)用户兴趣实时性:为了根据随时间变化的用户兴趣而变化推荐内容,本文在计算用户兴趣度的时候引入了时间衰减函数,效果体现为用户最近交互的新闻标签大概率是用户感兴趣的标签。(2)冷启动问题:混合推荐算法普遍存在冷启动,有很多解决方法,本文采用常见的信息熵法,即在新用户加入,没有任何交互记录的情况下,根据新闻热度进行推荐。(3)用户感兴趣标签机制的引入:新闻推荐大多将提取的关键字或历史访问记录作为推荐依据,而本文将用户兴趣映射到新闻标签分类上,并按优先级排列。该机制实现了算法间的融合,扩展了推荐的范围。(4)用户相似度的优先级:判断用户相似度时,一般情况下只考虑两者的相同部分,由于本文的感兴趣标签机制是有优先级的,所以计算用户相似度时也考虑了相同标签之间的优先级差距问题。例如,三个用户感兴趣标签列表里同样有“体育”标签,但用户1对“体育”标签的感兴趣排序是第一,用户2对该标签感兴趣排序为第二,用户3对该标签感兴趣排序为第五,那用户1与用户2的相似度肯定比与用户3的相似度要高。所以本文计算时将优先级之间的绝对值纳入了影响因子中。

第5章系统实现5.1前台部分5.1.1首页模块如图5所示,首页内容由轮播图、全部推荐模块、标签选择模块、个人账号模块、热点新闻模块、新闻内容及其反馈操作模块等模块组成。点击轮播图最左或最右的箭头可以向前或向后切换轮播图的图片。点击导航栏的全部按钮可以按本文设计的算法为用户推荐新闻。点击导航栏的其他标签则会按分类为用户随机推荐该分类的新闻。普通用户可以选择退出登录,管理员可以选择退出登录或返回主页,即后台管理页面。热点新闻按新闻的热度正序排序,并选择前十条最热新闻进行展示,点击可看到新闻内容。新闻内容模块是首页的主要模块,每条新闻由标题、标签列表(一个或多个标签)、新闻内容、新闻反馈(收藏、点赞、评论)构成,点击查看详情可查看新闻内容。图5.1前台首页界面5.1.2注册及登录模块注册模块用户需输入用户名和两次密码,用户名和两次密码都不得为空,第二次密码须和第一次密码一致。登录模块输入用户名和密码可登录,可用于普通用户和管理员的登录,用户名和密码不得为空,若出现账号不存在、密码错误等情况会进行错误提示。图5.2用户注册及登录界面5.1.3标签选择模块用户登录系统后自动跳转到“全部”分类,为用户进行个性化推荐,用户可点击其他分类标签,即可查看和该分类有关的新闻,分别有“财经”、“房产”、“家居”、“教育”、“科技”、“社会”、“时政”、“体育”、“游戏”、“娱乐”共十个标签分类。图5.3前台标签分类选择5.1.4热点新闻模块如图所示,热点新闻主要展示热度排名前十的新闻。新闻热度由点击数、点赞数、收藏数按一定比例构成。点击热点新闻可查看该新闻内容。图5.4热点新闻排行部分代码如下:/**/**新闻热度计算*/<sqlid="selectNewVo">selectNewId,Title,Content,Hits,Good,Bad,(Hits*0.6+Good*0.2+Bad*0.2)heat//公式4-2(Hits为点击数a,Good为点赞数b,Bad为收藏数c,heat为热度V)fromnews</sql>/**选热度前10的新闻作热门排行榜*/<selectid="selectNewListTop10">orderbyheatdesclimit10//将热度heat正序排序选前10</select>5.1.5用户反馈模块为用户提供的反馈机制分为显式反馈和隐式反馈。显式反馈即如图所示的查看详情、收藏、点赞、评论这类用户主动进行的操作。隐式反馈即浏览新闻的时长和访问这个标签的频率这类用户无意提供的隐性反馈信息,这里访问标签的频率指最近一次访问与该标签相关的新闻的时间与当前时间的时差。图5.5用户对新闻的可行操作/**计算用户对新闻的兴趣度/**计算用户对新闻的兴趣度*/for(Newslabeltag:tags){doublecurrInterest=record.getBrowsefeedback()*0.6+record.getBrowsetime()*0.4;//公式4-4(record.getBrowsetime()获得用户浏览该新闻的时长x,currInterest=record.getBrowsefeedback()获得用户对该新闻的反馈值y,currInterest为用户对该新闻的兴趣度K)}/**计算用户对新闻的实时兴趣度/**计算用户对新闻的实时兴趣度*/if(userlabels.size()==1){userlabel.setInterestSum(userlabel1.getInterestSum()+currInterest*Math.log(-calculatetimeGapMinute(recentvisittime,newDate())));//公式4-5(recentvisittime为用户与该标签下新闻交互的最近时间,calculatetimeGapMinute是计算两个时间相差几分钟的函数,所得结果为公式中的t,Math.log表示时间衰减函数f(t))//公式4-6(currInterest为用户对新闻兴趣度K,InterestSum为用户对新闻实时兴趣度的总和)}/**计算用户对标签的兴趣度*/<sqlid="selectUserlabelVo"> selectInterestSum/InterestNumInterest1 //公式4-7(InterestSum为用户对新闻实时兴趣度的总和,InterestNum为用户与该标签下新闻有交互记录的新闻数量n,Interest1为用户对标签的兴趣度h)fromuserlabel </sql>5.1.6推荐模块推荐模块是系统首页的主要内容,本文涉及的推荐算法主要在“全部”分类中进行展示,其他分类的推荐是随机推荐。在本文的混合算法中,会计算用户对每个标签的兴趣度,即和该标签相关新闻的点击数、收藏数、点赞数、浏览时长、访问标签频率等,再找出与当前用户最相似的用户,以相似用户的标签兴趣度为参考,将标签对应的新闻推荐给当前用户。如果新用户首次登录系统,会按新闻的热度正序排序为用户自动推荐新闻。图5.6推荐新闻/**计算与其他用户相同标签的优先度排序差值/**计算与其他用户相同标签的优先度排序差值*/intconut=0;for(inti=0;i<collect.size();i++){Strings=collect.get(i);inti1=Math.abs(collect1.indexOf(s)-i);//公式4-9(collect1.indexOf(s)获得该标签在当前用户兴趣列表里的排序s1,i代表该标签在其他用户兴趣列表里的排序s2,i1为二者优先级差值W)conut+=i1;//统计所有相同标签优先级之差的总和}/**计算用户相似度*/map.put("g",collect.size()+collect.size()/conut);//公式4-10(collect.size()获得两者相同标签数,conut为公式9中W的总和,g为公式10中的用户相似度g)}5.2后台部分5.2.1首页模块如图所示,后台管理部分的首页由用户管理、新闻管理(新闻列表、评论列表)、轮播列表、门户网站(跳转前台页面)构成。即可以对用户、新闻、评论、轮播图进行增删改查以及其他操作。图5.7后台首页界面5.2.2用户管理模块如图5.8所示,可以根据用户的账号和密码搜索用户,可以新增用户、修改用户、删除用户,可以对用户进行禁言操作,以上所说用户可以是普通用户也可以是管理员。新增和修改用户可以对用户的账号和密码进行操作,禁言操作可以使用户无法对任何新闻进行评论。图5.8对用户进行管理5.2.3新闻管理模块如图所示,新闻管理模块包含新闻列表和评论列表两个部分。(1)新闻列表可以通过新闻标题、点击数、点赞数、收藏数来搜索相应新闻,鼠标移到新闻内容上可查看全部内容。可以对新闻进行增加、修改、删除的操作,增加和修改新闻主要是对新闻的标题、内容和所属标签进行操作,可以为新闻选择一个或多个标签。图5.9新闻管理-新闻列表可管理新闻(2)评论列表可以根据用户账号和新闻id来搜索该用户对该新闻进行的所有评论,同样,可以修改和删除评论内容。图5.10新闻管理-评论列表界面5.2.4轮播图管理模块轮播图主要是用填网络链接的形式导入图片进来,轮播列表可添加多张轮播图。图5.11轮播图管理界面

第6章系统测试6.1黑盒测试黑盒测试又称为功能测试或数据驱动测试,是把测试对象看做一个黑盒子,关注软件产品的功能,不考虑软件产品的内部结构和处理过程。主要工作是通过设计测试用例,从而使软件工程师派生出执行程序所有功能需求的输入条件。(1)前台部分表6-1用户注册测试用例测试部分PC端用户账号注册功能测试预期实现①输入的用户名或密码为空会有提示;②输入第二次密码与第一次密码不一致会有错误提示;输入①输入用户名:“”;②输入第一次密码:“”;③输入第一次密码:“111”,输入第二次密码:“123”;测试输出①没有通过验证,提示“用户名不能为空”;②没有通过验证,提示“密码不能为空”;③没有通过验证,提示“两次密码不一致”;测试结果通过表6-2用户登录测试用例测试部分PC端用户账号登录功能测试预期实现输入的用户名或密码为空会有提示;输入用户名不存在会有提示;输入用户名和密码不一致会有错误提示;输入输入用户名:“”;输入密码:“”;输入用户名:“a”,密码随意;输入用户名“123123”,密码“a”;测试输出没有通过验证,提示“用户名不能为空”;没有通过验证,提示“密码不能为空”;没有通过验证,提示“用户名不存在”;没有通过验证,提示“用户名或密码错误”;测试结果通过表6-3选择标签功能测试用例测试部分用户选择不同标签分类测试预期实现用户登录后点击不同标签查看推荐内容。输入分别点击“全部”、“财经”、“房产”、“家居”、“教育”、“科技”、“社会”、“时政”、“体育”、“游戏”、“娱乐”标签。测试输出成功推荐和该标签相关的新闻。测试结果通过表6-4新闻推荐功能测试用例测试部分新闻推荐功能测试预期实现用户登录后可以在全部分类下查看到为这个用户特别推荐的新闻,可以在其他分类下查看到与这个分类相关的新闻。输入点击“全部”分类,查看到各个标签的新闻,且符合本文算法推荐逻辑。分别点击除“全部”外的其他标签,可查看到与该标签相关的新闻。测试输出推荐效果符合本文算法。测试结果通过表6-5用户反馈功能测试用例测试部分用户反馈功能测试预期实现①用户登录后可以查看新闻内容、对新闻进行收藏、点赞、评价。②被禁言用户无法对新闻进行评价。输入①普通用户点击一条新闻,点击收藏、点赞,并评价“测试”;②被禁言用户评价“测试222”;测试输出①成功收藏、点赞、评价了该新闻。②提示“你已被管理员禁言”;测试结果通过表6-6热点新闻功能测试用例测试部分热点新闻功能测试预期实现用户登录后可看到热点新闻排行榜,按热度从高到低的顺序选取了前十条进行展示,点击新闻标题可看到相应新闻内容。输入登录,点击第一条新闻标题。测试输出看到了新闻标题及右侧的热度值,点击后显示其新闻内容测试结果通过(2)后台部分表6-7用户管理功能测试用例测试部分用户管理功能测试预期实现①增加和修改用户时,用户名或密码为空会提示;②增加用户时,用户已存在会提示;③禁言用户后用户无法评论;④可根据用户账号或密码搜索用户;输入①增加用户时和修改用户时,输入用户名“”或密码“”;②新增用户,输入“123”;③禁言用户“123123”,登录前台选择一条新闻进行评价“test”;④输入用户名“123456”,点击搜索;测试输出①提示“用户名或密码不能为空”;②提示“该用户已存在”;③提示“你已被管理员禁言”;④搜索到用户“123456”的信息;测试结果通过表6-8新闻列表管理功能测试用例测试部分新闻列表管理功能测试预期实现①可对新闻标题、内容及其标签进行新增、修改的操作;②新增或修改标签时,若标签数为0,出现错误提示;③可通过新闻标题、点击数、点赞数、收藏数搜索相应新闻;输入①新增一条新闻,输入新闻标题“test”,新闻内容“测试新闻列表管理功能测试”,标签选择“教育”;②选择新闻id为11的新闻,点击修改,叉掉所有标签,点击确定;③选择点击数,输入“1”,点击点赞数,输入“1”;测试输出①新增成功;②提示“请输入标签名称”;③共出现两条新闻,符合搜索条件;测试结果通过表6-9评论列表管理功能测试用例测试部分评论列表管理功能测试预期实现①修改评论内容为空,出现错误提示;②可通过用户账号和新闻id搜索相应评论;输入①选择序号为1的评论,点击修改,修改评论内容为“”;②输入用户账号“123123”,输入新闻id“29”;测试输出①提示“请输入评论内容”;②共出现5条评论信息,符合搜索条件测试结果通过表6-10轮播图管理功能测试用例测试部分轮播图管理功能测试预期实现可新增、修改和删除轮播图列表中的轮播图。输入新增轮播图,输入网址“/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=774667769,955160177&fm=26&gp=0.jpg”,点击确定。测试输出新增了一张轮播图到后台轮播列表中,切换到前台看,该图片出现在了轮播图列表中。测试结果通过通过黑盒测试检测了系统,未发现有功能错误或功能遗漏,每个子功能都能正确地接收输入数据并产生正确的输出结果,并且功能之间的数据流入流出符合设计逻辑。测试过程中,没有出现数据结构错误或外部信息访问错误的情况,程序初始化和终止方面也运行正常。综上所述,该系统较好地实现了用户的功能性需求。6.2用户测试将系统部署到服务器上后,邀请20位用户分别使用基于内容推荐的系统、用户协同过滤的系统和本文改进后的推荐系统。每位用户注册自己的账号后,在10天内按个人意愿间断性地使用上述系统,每个系统最少使用一次,测试结束后每位用户记录自己的使用过程感受,并对系统交互体验感、推荐时效性、推荐结果多样性、推荐结果准确度四个指标进行评分。如图6.1所示,根据评分结果可以看出,在系统交互体验上,改进后系统的UI设计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论