中国知网查重 高校在线论文查重入口

立即检测
  • 58 元/篇
    系统说明: 知网职称论文检测AMLC/SMLC是杂志社专用系统,针对投稿论文、评审论文、学校、单位职称论文的学术不端重复率检测系统。
  • 288 元/篇
    系统说明: 知网本科论文检测PMLC是最权威的大学生毕业论文检测系统,含“大学生论文联合对比库”,国内95%以上高校使用。检测结果和学校一致!
  • 498 元/篇
    系统说明: 此系统不支持验证!可用作研究生初稿检测,相比知网VIP5.3缺少“学术论文联合对比库”,检测结果有5%左右的误差!(论文中若参考往届研究生论文,重复率误差会较大)
  • 128 元/篇
    系统说明: 大分解论文检测系统,对于想检测学术不端文献检测系统,而又价格便宜的同学可以选择,限每篇2.9万字符,结果与大学生PMLC、硕博VIP定稿系统有出入!
  • 68 元/篇
    系统说明: 知网论文小分解检测系统,适合中国知网初稿查重,数据库和定稿查重不同。结果与本科PMLC,研究生VIP5.3有出入,限每篇1.4万字符!
  • 3 元/千字
    系统说明: 学术家论文重复率检测系统,支持学位论文、毕业论文、投稿论文、职称评审论文,提供全文对照,word标红报告,性价比超高!
论文在线分享-基于协同过滤的新闻个性化推荐系统研究
时间:2021-04-05 12:38:20

  网络的快速发展使得新闻信息海量暴涨,这为用户快速寻找到自己所需的信息带来了不便。推荐技术的出现将预测用户可能喜好,从而对用户进行推荐,给用户带来了便捷性。

  本文首先介绍课题背景及研究情况,确立本文研究方向。之后利用问卷调查获取用户需求来构建系统构架,并设计了系统中的功能模块。并采用协同过滤的算法,根据用户点击行为,利用皮尔逊计算用户间的相似度进行推荐。最后对该系统的功能进行测试,同时评估系统推荐效果。实验结果表明该系统运行效果良好,新闻推荐可以达到一定推荐效果,但需要更多用户做测试进一步观察。

  1.1研究背景及意义

  科技的不断发展使得计算机技术突飞猛进,互联网和新媒体技术迅速崛起,纸质新闻已经逐渐被新闻app等取代,人们不再需要通过到书店等地方购买报纸、每天准时收看新闻联播等行为来获取新闻消息。

  新闻已经进入网络时代,由于网络新闻时效性更强、内容更加丰富等特点,这已经成为人们阅读新闻的一大选择。现今人们可以随时随地通过网络获取任何自己想看的新闻或者热点咨询。众多的新闻媒体也随着科技的潮流加入其中,将新闻和网络连接,将新闻信息及时上传网络,应运而生了众多新闻app及新闻网站。

  但是海量信息的膨胀使得用户不得不花费更多的时间和精力,在众多新闻中搜寻自己所要的内容。而这,会使得用户疲惫,烦躁。为了解决信息过载问题,个性化推荐技术应运而生。现如今,该技术已经在各大互联网领域被运用,如购物。音乐、视频等。

  该技术的主要功能是在众多信息中为用户寻找到对其有价值的内容,此外,它还帮助信息发布者将信息展现在适合的用户面前。这种技术可以实现信息需求者及发布者利益的共赢,是双向的帮助。个性化推荐不会带有目的性。这就意味着人们不再需要手动搜索自己所需要的信息,并且可以根据推荐结果主动选择自己所要看的新闻。

  而新闻个性化推荐十分复杂、多样、必要。在众多新闻网站中,用户的选择一般比较单一。并且用户阅读新闻时,由于没有目的性,而且用户对于新闻的需求却又受多方面的影响,如个人兴趣社会或者新闻的流行趋势等等。因此,新闻网站迫切需要个性化的推荐来提高用户浏览速度,有效防止用户流失。

  新闻推荐系统主要是为了向用户提供个性化新闻推荐服务,而用户的体验感将直接由推荐的准确性决定。只有有效预测到用户的可能偏好才能提高系统推荐性能。本文就将设计并实现一个新闻个性化推荐系统,利用推荐算法研究用户之间的关系,提升该系统的有效性及准确率。

  1.2国内外研究现状

  1.2.1个性化推荐研究现状

  “啤酒与尿布”的故事可以说是推荐系统的前身。传言在上世纪的90年代,美国的超市管理人员在对超市销售情况进行数据分析时,意外的发现在一些年轻爸爸的购物车中,会有啤酒和尿布这两种货物同时出现。通过后期他们的调查分析,他们了解到之所以这两种不想关的物品同时出现,是由于年轻奶爸们对自己的奖励。在这之后不久,沃尔玛将啤酒和尿布关联起来捆绑进行销售,结果表明销售量大幅度上升。虽然这个故事并不是真实存在的,但他却为后来推荐算法乃至推荐系统的发展做出了重要贡献。

  自从上世纪90年代,一种网络时代被用于作为检索信息的工具--推荐系统,被作为一个独立概念提出后,到目前为止已经成为网络时代的一大重要工具。1992年,一家公司设计了一个邮件系统--Tapestry,在其中使用到了一种叫做协同过滤的算法有效解决了信息过载的问题。这也是最早的推荐系统。在这之后,“推荐系统”这一概念被正式提出。

  在之后几年中,众多学者就推荐系统研究出了协同过滤、基于内容、混合推荐等算法应用在推荐系统中。直到2005年,有学者将之前人们的研究情况进行整理,对推荐系统进行了分类,同时就现在存在的问题提出了未来研究方向。随着计算机技术不断发展及人们对于个性化推荐需求的不断上升,该方面的研究也取得了很大进步。2007年,第一届在美国举行的ACM推荐系统大会上,人们就推荐系统在不同领域的最近情况、成果进行展示,交流。2016年,一篇论文席卷网络,深度神经网络这一概念被学者将推荐技术联系在一起,使得推荐研究又向前迈进一大步。

  为了更加直观的了解个性化推荐在现今被研究的情况,本文在中国知网上以“个性化推荐”作为关键词进行检索,将近10年文献发表情况整理成图片如下图所示:

  图1.“个性化推荐”文献发表情况

  由图片可以清晰的看到个性化推荐一直被人们广泛关注研究。并且研究情况逐年上涨,尤其近几年文献发表情况相比而言上涨趋势明显。

  1.2.2新闻推荐研究现状

  将新闻领域近年来推荐技术的研究可视化如下图所示:可以清晰看到新闻推荐技术在2013年之前的研究情况并不多,但是随着新闻app的逐渐发展,后期开始受到更多人的关注。在之后几年,个性化新闻推荐技术的研究开始缓慢上升。在16、17年研究情况突然下降,但之后又迅速回升,并且文献发表数量较前几年显著增多。

  图1.3.1“新闻推荐”文献发表情况

  (1)国内研究现状

  不同学者针对系统需求自行设计构建新闻推荐系统,并针对不同模块中存在的问题改进算法,从而提升了系统推荐的效果。

  李博对新闻系统中不同功能模块进行设计,针对系统新用户,采用新闻特征改进新闻流行度预测算法,引入聚类思想来对新用户进行推荐;通过优化循环神经网络算法,更好的表示新闻特征及用户喜好进行推荐;最后,利用排序学习方法融合推荐结果后,提高新闻推荐排序性能。[1]

  王豪通过对系统不同需求的深入分析,结合相应技术,设计系统整体框架,将其划分为六个模块。同时针对候选新闻提出了两种模型,一种是基于新闻内容的深度候选推荐模型,另一种是改进的神经因式分解机候选排序模型。[2]

  韩东冉在系统设计中,主要采用基于内容的算法。其在新闻文本处理时,引入了主题模型,并将其和传统的向量空间模型结合,从主题与关键词对新闻文本内容进行挖掘,同时,考虑新闻时效性,结合用户产生行为时的上下文信息,构建出一个及时更新的用户兴趣模型。[3]

  王珂将推荐系统中的三大模块作为其系统的核心内容。针对新闻内容模块,用线性加权的方式提取出新闻关键词。在用户兴趣模型构建中,通过对用户行为日志中用户浏览偏好来构建模型。对于推荐算法模块,采用基于内容和基于协同过滤的混合推荐算法将召回的结果加权混合。文章详细叙述了推荐系统的设计框架及关键模块的实现,从而利用系统实现了个性化新闻推荐。[4]

  艾鹏强针对时序问题,利用时间依赖性相似系数改进相似度计算方法,考虑长短期用户浏览行为,改进了协同过滤的新闻推荐算法。此外,其通过标签权重进而区分不同标签重要程度,提出基于标签概率关系图的推荐算法。基于此算法实现新闻推荐系统,向用户推荐喜好及喜好相似新闻,增加推荐结果的多样性。[5]

  孙晓会在算法中融入行为特征及主题特征,构建用户行为-新闻主题模型进行推荐,缓解算法的数据稀疏性。此外,研究基于隐马尔可夫模型的推荐算法来预测用户可能的新闻喜好,同时根据相似的用户的行为对用户进行聚类,改进该算法,其并且使用此算法提高系统推荐准确率。[6]

  刘金亮针对推荐系统中新闻及用户模块分别进行改进,在新闻特征模型中同时考虑主题及新闻关键词,提出融合主题及内容的方法;在用户方面,建立层次化的兴趣模型,同时加入用户兴趣衰减因子来表示用户兴趣的迁移,分别考虑用户长短期的不同兴趣。最后在进行推荐排序时,加入了时间权值提高推荐质量。他将他的改进方法用于实现了一个新的新闻推荐系统,验证推荐系统的功能,并通过离线实验验证了新闻推荐效果。[7]

  朱满洲在用户评分上为了解决存在的数据稀疏性问题,用热点新闻对缺省值来填充矩阵。并且在评分数据上,考虑到用户对新闻的兴趣会随着时间而发生变化,因此用时间函数设置评分权重。基于以上想法改进算法,设计并实现了一个个性化新闻推荐系统。[8]

  彭菲菲钱旭等人为解决用户需求问题,考虑到用户对于新闻的关注度会受到自身及社会流行趋势的影响,因此使用雅克比度量在用户相似度上进行加权求和,以此来预测用户关注度,将新闻排序后生成推荐列表推荐给用户。该实验证明,系统有效地提高了推荐精准度和覆盖度,改善了系统可扩展性和自动更新能力,具有良好的推荐效果。[9]

  (2)国外研究现状

  本文为了更加直观的了解到国外对于新闻推荐技术的研究现状,以“新闻个性化推荐”、“新闻推荐系统”、“新闻推荐算法”为关键词在网上进行检索得到的相关外文文献,将其转化为可视化图表如下图所示:

  图1.2.3新闻呢推荐国外研究情况

  由图可见,国外对于新闻推荐的研究中,在推荐技术众多方面的研究中,更多的对于新闻推荐系统的研究。在文献阅读过程中,对近几年的外文新闻推荐系统领域研读上,了解了国外学者研究的方法及内容。

  Marchela Asenova[10]对推荐系统的研究主要集中在基于个性化信息(如偏好)和搜索历史的用户体验改善上。通过确定用户的初始首选项,提供主题/主题的初始菜单供用户选择。同时为了尽可能准确地反映用户对新闻的搜索兴趣,利用基于先进的机器学习技术,对用户在调整新闻主题时的所有交互行为进行了深入的记录和分析。在此基础上,开发了一个个性化的网络新闻推荐系统。

  Yonghong Tian[11]为了用户不容易被他们不感兴趣的信息淹没。设计出新闻推荐系统根据用户兴趣推荐文章,而不是按照文章发生的先后顺序来呈现文章,帮助用户管理。该系统根据Twitter的公共时间线所确定的文章的受欢迎程度对新闻文章进行排名。此外,用户根据自己的兴趣构建配置文件,新闻文章也根据与用户配置文件的匹配程度进行排名。通过整合这两种方法,提出了一种混合新闻推荐模型,该模型根据用户的受欢迎程度以及与用户配置文件的相关性向用户推荐有趣的新闻文章。

  1.3本文主要研究内容及组织结构

  本文重点设计一个新闻推荐系统,设计问卷获取用户需求并结合系统需求分析确定了系统所需的模块,设计系统的框架流程,利用基于用户的协同过滤推荐算法,通过收集到的用户对于新闻的浏览行为,寻找有相似行为的用户,进行推荐完成系统的实现,并对系统运行情况进行测试。

  论文研究按照以下五个章节展开。

  第一章为绪论,对论文的研究背景,研究目的及其意义进行阐述,通过大量文献搜索及整理,汇总了国内外推荐系统的研究现状并对一些文献进行了详细研读。最后确定了本文的研究内容及结构。

  第二章通过调查问卷的形式收集人们对于新闻推荐的评价、满意度,从而获取用户对于新闻推荐系统的需求,并且结合问卷设计本系统构架及功能模块。

  第三章主要介绍推荐系统中主要的推荐模块的详细设计,确立所需要的算法并且对系统的数据库进行了设计。

  第四章详细对系统中各模块进行功能测试查看系统运行效果,并对系统中的推荐效果进行评估。

  第五章总结归纳本次论文研究过程中的优缺点,并进行展望。

  最后是参考文献和致谢

  1.4本章小结

  本章首先对个性化推荐及新闻推荐的发展背景进行概括描述,从而说明本文的研究目的及意义。接着就其国内外研究情况进行详细阐述,最后确立了本文主要的研究方向及内容,和文章的组织结构。

  二、个性化新闻推荐系统研究

  本文将利用问卷调查分析用户对于新闻推荐的满意度,通过结果分析需求从而设计本系统的构架,并将构建系统的功能模块。

  2.1个性化新闻推荐满意度调查

  为了能够更加准确的了解用户对于现今网络新闻的看法及对于新闻推荐技术的满意度,本文将通过问卷调查的方式进行调研,并且将得来的数据进行统计分析,从而为本文的系统设计提供依据,奠定基础及合理性。

  2.1.1问卷调查目的

  本文将采用典型的网上问卷调查方式,通过问卷星,向身边的群众发放问卷,主要目的是调查人们对于现今网络新闻推荐的看法及满意程度,从而进行分析发现推荐技术的问题所在。

  2.1.2问卷设计

  本文的问卷调查在问卷星https://www.wjx.cn/hm/icdzcsctnu6nbzycezoskg.aspx上进行。回收到问卷41份,其中:34个是学生,7个是社会人士。以下为问卷内容:

  1、您的身份是?

  A.学生

  B.社会人士

  2、你是否会通过网络关注新闻?

  A.会

  B.不会

  3、您选择关注网络新闻的原因是?(多选)

  A.新闻的即时性

  B.新闻信息量大

  C.阅读方便

  4、您阅读网络新闻最主要的方式是?

  A.他人推荐

  B.系统推荐

  C.手动搜索自己想看的

  5、您在网络新闻中经常做的操作?(最多3个)

  A.浏览新闻

  B.转发分享到社交媒体

  C.发表评论

  D.收藏

  E.其他

  6、您认为新闻推荐内容是否有迎合您的兴趣?

  A.完全迎合

  B.迎合

  C.不迎合

  D.完全不迎合

  7、您希望新闻推荐给您怎样的新闻?

  A.热点新闻

  B.我感兴趣的新闻

  C.两者都要

  2.1.3调查结果与分析

  通过将问题1与问题2、3交叉分析分别获得不同人群对于新闻推荐的想法如下:

  图2.2.1问题2的结果

  图2.2.2问题3的结果

  由图4、图5可以看出不管是学生还是社会人士,都会因为网络的便捷性、新闻即时性等原因关注新闻,尤其是社会人士,百分之百会通过网络阅读新闻。

  图2.2.3问题4的结果

  由问题4可以看出有65.85%的用户都是依据系统的推荐来阅读新闻,当然也会34.15%的人会通过手动搜索来获取自己想要看的新闻,但是没有人接受他人给自己推荐的新闻。基于对上述问题的分析,可以明显看到人们都会依赖于网络新闻的推荐从而关注新闻。由此可见,新闻推荐的准确性是极为重要的。

  图2.2.4问题5的结果

  由问题5可以发现人们在阅读网络新闻时,在表现对新闻兴趣时的反馈中,人们都通过浏览新闻的操作来表示对新闻的兴趣,尽管也有些人会通过转发分享、发表评论和收藏等行为来表示,但有这些行为的人占少数,不超过40%。

  人们对于网络新闻的操作可以一定程度的表明人们对于该新闻的兴趣程度,而推荐技术可以通过这些行为预判人们对于不同新闻的喜好程度。但是,图7明显发现极大部分人仅仅浏览新闻而不会有其他操作来表示兴趣。如果对不同操作赋予不同权重来表示用户兴趣程度,可以看出对于大部分人而言,是无法准确预测出他们真实的兴趣,是有一定的数据稀疏性的。

  图2.2.5问题6的结果

  由问题6明显可以看到绝大部分,近80%的人都认为现今的新闻推荐是有做到迎合人们的兴趣,但并也有小部分人认为新闻没有迎合人们兴趣。

  图2.2.6.问题10的结果

  由问题10的结果可视化可以发现大部分人都希望新闻可以同时将热点新闻和兴趣新闻一起推荐给用户。这表明现今新闻推荐并没有很好的做到这点,可能只是做到其中一部分。

  人们关注新闻,利用新闻推荐技术来阅读新闻。因此,现今的推荐技术的好坏会直接影响人们对于新闻推荐技术的满意度。

  2.2个性化新闻推荐系统构架

  2.2.1总体需求分析

  从上文的问卷结果及其分析中,可以得到用户希望新闻推荐系统所能达到的需求有(1)用户并不会对浏览过的新闻做出过多操作,因此用户并不需要过多的点赞、转发等行为。(2)用户希望系统可以不仅提供个性化的新闻推荐,同时可以将受人们欢迎或者说被人们广泛关注的热点新闻同样推荐给用户。除此之外,系统除了要满足用户需求,从系统角度来说,系统所需需求可以通过系统流程图来展现:

  图2.2.1推荐系统功能流程图

  由图中可以看出该系统需要结合用户实际需求,根据用户过去的一些信息及操作行为,通过系统进行推荐并且展示。从系统功能流程图可以得到系统的基本功能需求。

  2.2.2新闻推荐系统结构设计

  推荐系统其从本质上来说就是一种信息过滤系统,是在信息过载情况下采用的一种措施。其需要在大量的数据中,根据获取得到的用户行为构建用户兴趣模型,在一定的算法基础上找出符合用户特点的物品从而对用户进行推荐。

  本系统根据上文中的需求分析设计总体构架,其采用分层的方式进行设计,总共包含四大模块,分别为新闻展示模块、数据收集模块、数据存储模块、数据处理模块。新闻推荐系统构架如下图所示:

  图2.2.2新闻推荐系统构架

  以下,是各个结构模块的具体描述:

  新闻展示模块:新闻展示层主要是信息的展示,包括新闻信息及用户。在展示层,通过用户的登录,使得用户可以点击浏览所有新闻、热点新闻及经过推荐算法得到的针对该用户的推荐新闻。用户可以在展示界面可以做的操作有点击浏览新闻,对新闻进行评论,用户登录或者注册。

  数据收集模块:此模块主要采集新闻以及收集用户信息,来为展示模块提供支持,并且是下一层存储模块的数据来源。

  数据存储模块:主要对上一层获取来的新闻信息及用户信息进行存储,将信息都保存在后台数据库中,方便下一层数据处理时可以及时调用数据信息。

  数据处理模块:该模块主要可以从上一层中获取存储的用户及新闻信息,并且在将信息进行处理后通过推荐算法,得到用户感兴趣的新闻,将其过滤降序排列后生成推荐列表在展示层推荐给用户进行选择浏览。

  2.3推荐系统功能模块

  由上文需求分析及系统功能流程图,可以得到系统在满足用户希望操作简单的前提下,给用户提供更多样的新闻推荐。因此设计以下功能模块如下图所示:

  图2.3.1系统功能模块图

  用户模块主要包含用户注册、登录两个功能。用户首先需要输入自己的账号和密码进行登录操作。如果用户输入信息错误,系统会提示用户进行修改。如果用户为新用户,那么需要首先进行注册,注册他的账号、密码、手机号码、名字、地址、邮箱等信息,注册完毕后再进行登录操作。

  新闻模块主要展示了所有的新闻内容,主要包含全部新闻、热点新闻、推荐新闻这三类。用户可以通过该模块点击新闻标题对感兴趣的新闻进行浏览,在热点新闻上用户可以看到根据所有用户对新闻的浏览情况生成的热点新闻,由此提供给用户热点新闻供其选择浏览,经过推荐算法计算得到的推荐结果也会展示在推荐新闻上,用户可以点击选择推荐列表中自己感兴趣的内容,此部分的具体实现逻辑将在下一章中进行阐述。

  最后评论模块是用户在浏览过新闻后可以进行评论。

  2.4本章小结

  本章通过对问卷调查的结果分析,明确了现今用户对新闻推荐的满意程度,了解用户在新闻推荐系统的常用操作。结果表明用户对现今新闻推荐现状较为满意,但是更加希望可以将热点及个性化新闻推荐同时达到。并且本章节结合问卷分析结果实现了本系统的构架,并对系统中的功能模块进行了详细描述。

  三、个性化新闻推荐详细设计

  本章节将对系统功能模块中的新闻推荐模块的设计进行详细介绍。此模块也是整个系统中最重要的模块。

  3.1系统推荐流程

  本小节对推荐系统的流程进行设计。本系统主要通过对用户产生的浏览行为,收集信息,对其进行处理,使用基于用户的协同过滤算法为用户进行推荐。其中系统的流程步骤如下图所示:

  图3.1.1系统流程图

  3.2推荐算法设计

  3.2.1推荐算法选择

  推荐系统的核心技术便是推荐算法。当然,到现在为止,一直有众多学者对推荐算法进行研究并改进,以此来弥补算法的不足,进一步提高推荐效果。本文从中国知网上以“推荐算法”作为主题词进行检索,查阅到了相关的9000多条文献记录。通过对不同文献所用算法的整理,发现推荐算法可以被分成以下几类。[12]现今最为大家接受和流行的推荐算法分类如图所示:

  图3.2.1主流推荐算法分类

  本系统推荐方法主要根据用户行为进行推荐,并不会过多考虑新闻本身内容的因素。因此,尽管推荐算法有这么多种,但是针对本文用户需求的特性,协同过滤算法无疑是最适用于本系统的推荐方法。

  其中,协同过滤推荐算法又包含基于用户和基于物品两大类。基于物品的方法起原理简单来说就是将用户评分高的物品的相似物品推荐给用户。但是由于本系统仅仅将用户浏览行为作为用户对新闻的评价,因此不能区分出用户对不同新闻的喜好程度。此外,基于物品的推荐方法得到的推荐结果都是相似的物品,这对于用户来说,缺乏一定的新颖性,多样性。而基于用户的推荐方法尽管也是将推荐转换为评分预测问题,但对于物品的评分要求并不高,且通过寻找相似用户得到的推荐结果在一定程度上会比基于物品的方法更加多样,可以在一定程度上给用户带来一些惊喜,增加推荐新颖性。因此,基于以上分析,本文将采用基于用户行为的协同过滤算法进行系统推荐设计。

  当然,该算法存在一定的缺陷如用户冷启动问题,该问题通过热点新闻模块使得用户可以在冷启动情况下进行新闻选择浏览。因此本算法将不考虑这点。

  3.2.2推荐算法实现

  本系统基于用户浏览行为,寻找相似用户进行推荐。算法实现流程如下所示:

  首先选择待推荐的用户,数据初始化后,准备给用户推荐新闻。通过遍历所有用户,计算用户间的相似度,寻找与当前用户距离最接近的n个用户,其代码如下所示:

  主要目的是计算与当前用户的距离,获得最临近的用户

  1.定义寻找最近临用户的函数

  def nearstUser(self,username,n=3):

  distances={};#用户,相似度

  2.遍历整个数据集,寻找非当前用户

  for otherUser,items in self.data.items():

  if otherUser not in username:

  distance=self.pearson(self.data[username],self.data[otherUser])

  3.计算两个用户的相似度

  distances[otherUser]=distance

  print(distances)

  sortedDistance=sorted(distances.items(),key=operator.itemgetter(1),reverse=True);

  4.得到最相似的N个用户

  print(sortedDistance[:n])

  return sortedDistance[:n]

  其次,在相似度高的用户的新闻列表中过滤出待推荐用户没看过的新闻加入推荐列表。根据用户对推荐列表中新闻的评分(即新闻被浏览次数)降序排列,输出推荐结果。其代码如下所示:

  #给用户推荐新闻

  def recomand(self,username,n=1):

  recommand={};#待推荐的新闻

  for user,score in dict(self.nearstUser(username,n)).items():#最相近的n个用户

  for movies,scores in self.data[user].items():#推荐的用户的新闻列表

  if movies not in self.data[username].keys():#当前username没有看过

  if movies not in recommand.keys():#添加到推荐列表中

  recommand[movies]=scores

  return sorted(recommand.items(),key=operator.itemgetter(1),reverse=True);

  #对推荐的结果按照新闻浏览次数排序

  在计算用户间的距离获取用户相似度的方法选择中。相似度计算方法有多种例如余弦相似度、杰卡德相似度、皮尔逊相似度等。其中,余弦相似度主要利用两个向量间的夹角进行计算,但是其忽略了用户不同行为评分对相似度计算的影响。比如,两个不同的用户对同一新闻产生不同行为,那么,不同行为所代表的用户对新闻的喜好是不一样的。但余弦相似度却无法准确表达出差别。为了改善余弦相似度所疏忽的地方,皮尔逊相似度从本质上来说,就是余弦相似度计算方法的改进。它将每个向量减去此向量均值以此组成新的向量,从而有效提高相似度计算结果。本文尽管只是利用用户点击浏览新闻这一种行为,但仍然使用皮尔逊计算方法进行计算。

  调用主函数,可以得到例如待推荐的用户id为4的推荐用户被推荐的新闻列表如下所示,列表中用新闻编号表示新闻及新闻评分:[('167',4.0),('124',4.0),('115',3.0),('168',3.0),('88',3.0),('93',3.0),('161',3.0),('94',3.0),('125',3.0),('144',3.0),('139',3.0),('158',3.0),('110',3.0),('119',3.0),('109',3.0),('92',3.0),('155',2.0),('126',1.0)]。在推荐界面就可以看到推荐的具体内容。

  3.2.3推荐结果可视化

  通过对用户推荐新闻进行研究,可以了解用户对有什么特征的新闻感兴趣。通过对用户id为4的推荐新闻内容进行jieba分词,提取动词、名词、动名词、专有名词,利用TF-IDF计算得出这些关键词在文章中的权重,并且将排名前50的关键词展示。

  可以看到为该用户推荐的新闻的关键词:('商家',1.0)('消费者',0.9533493503093786)('疫情',0.783807306178477)('涨价',0.7642883983076044)('行为',0.6430802758023241)('生气',0.6137983072223478)('补偿性',0.5481068011523899)('消费',0.5434487284882007)('成本',0.5016618320776037)('认为',0.471295182964669)('上涨',0.4050902072921009)('基本',0.4004648037435779)('归因',0.39536444150343975)('迎来',0.39041748351414074)('成为',0.38942054985786956)('因素',0.3744883138284658)('偏差',0.3572808540753444)('理论',0.35127453255895913)('背景',0.3464613988294901)('经济学',0.3425721633049111)('报复性',0.34029280718866345)('需求',0.33800643109852757)('解释',0.3353466956021887)('商品',0.3232922750130201)('声讨',0.32195249018289457)('结束',0.3091476947686032)('外出',0.3046895644598352)('公平',0.2960587907084901)('餐饮业',0.2900945696768634)('问题',0.284672840778015)('注意',0.27497194197572805)('没有',0.26927646390097565)('准备',0.2674853159187271)('人们',0.2674136782523481)('就餐',0.26640992874294206)('食客',0.26333490211947047)('复工',0.2568198985061041)('复产',0.2561334335101682)('控制',0.24957322002917307)('焦点',0.24533601182632933)('家门',0.24477801291360982)('冲击',0.23946463376194527)('进账',0.2332841708207135)('感到',0.23026206175128652)('洞察力',0.22293668672759345)('传统',0.22096905234891262)('开始',0.21968716767619142)('变得',0.21891323425914777)('月份',0.21611472035108228)('推进',0.21581980332719058)由此了解用户可能对什么样的新闻产生兴趣。

  3.3系统数据库设计

  通过建立数据库表,可以将众多数据进行保存并且方便调用。新闻推荐系统的数据主要有用户和新闻数据。数据库主要有新闻信息表、用户表、评论表及用户浏览表。

  其中,新闻信息表,如下图所示,主要包含新闻的一些基本信息。

  表3.2.1新闻信息表

  名称表中列名数据类型是否主键

  Good id Char Y

  title新闻Char

  author作者Char

  addtime添加时间Date

  source资源Char

  pic图片Char

  Ondur1链接Char

  content内容Text

  num次数Interger

  用户表,如下图所示,主要存储用户注册后的信息。

  表3.2.2用户信息表

  名称表中列名数据类型是否主键

  User id Char Y

  Username账号Char

  Password密码Char

  Phone手机号码Char

  Name名字Char

  Address地址Char

  Email邮箱Email

  评论表,将用户对新闻的评价保存记录。

  表3.2.3评论表

  名称表中列名数据类型是否主键

  Common Id Char Y

  User用户Char外键

  Good新闻Char外键

  续表评论表

  Commen评论Char

  Addtime评论时间DateTime

  用户浏览信息表,包含所有用户的访问记录,包括用户名、浏览的次数及用户的ID。

  表3.2.4用户浏览信息表

  名称表中列名数据类型是否主键

  Rate Id Char Y

  user用户Char外键

  Users_id记录用户id Integer

  num浏览次数Float

  3.4本章小结

  本小章详细介绍了系统推荐的流程,并且对推荐所需的数据设计了数据库,通过对多种推荐算法的比较选择了基于用户的协同过滤推荐算法,并介绍了其算法的优越性。最后,阐述了本系统算法的实现步骤,并且对推荐结果进行可视化,方便了解用户的真实喜好。

  四、个性化新闻推荐系统测试

  本章将对新闻个性化推荐系统中实现的各个模块的进行功能测试,并将对新闻推荐结果进行评估。

  4.1实验环境

  本系统实现软件环境界面由Django框架搭建,用户只需打开浏览器便可以进行访问。系统编程采用pycharm进行。开发语言为Python3.7,数据库Splite3。

  硬件环境是在64位操作系统,系统内存为4GB的Windows10中。其中,处理器配置为Intel(R)Core(TM)m5-6Y54CPU 1.10GHz 1.50GHz.

  4.2系统测试

  4.2.1测试目的

  本次测试将对上文中设计的系统功能模块进行测试。系统是否可以正常运行,运行效果都将直接影响到该系统的性能,是否能达到为用户服务的目的。因此,本测试中将主要查看该系统功能模块的运行效果,并对系统的推荐效果进行验证,以便及时发现系统的不足,可以对推荐算法进行进一步优化,提高系统推荐准确率。

  4.2.2功能测试

  功能测试可以通过一定的操作查看系统设计中存在的缺陷,从而及时调整。本章节主要对系统中用户登录模块、用户注册模块、用户浏览新闻模块、新闻推荐模块这几个模块进行功能测试。具体测试情况如下所示:

  表4.2.1用户登录模块测试

  测试模块用户登录

  目的用户是否可以正常登录

  测试步骤第一步:打开网页,点击登录按钮

  第二步:输入用户名及密码,点击确认登录

  测试结果1.该模块可以正常使用

  2.并且当用户登录信息填写错误时,系统会出现提示性引导语。

  表4.2.2用户注册模块测试

  测试模块用户注册

  续表用户注册模块测试

  目的测试用户是否可以注册成功

  测试步骤第一步:打开浏览器,选择注册按钮

  第二步:填写相应信息进行注册

  第三步:点击注册按钮,注册后跳转界面进行登录

  测试结果1.用户可以正常注册

  2.在用户注册信息填写有误时会对用户进行引导

  表4.2.3浏览新闻模块测试

  测试模块浏览新闻

  目的测试用户是否可以正常浏览新闻

  测试步骤第一步:打开浏览器并登录

  第二步:选择一条新闻并点击

  第三步:在该新闻详情页面进行浏览

  测试结果1.用户点击新闻后可以进入详情界面

  2.新闻详情界面内容清晰

  表4.2.4用户评论模块测试

  测试模块用户评论新闻

  目的测试用户是否可以在评论框填写对新闻的评价

  测试步骤第一步:点击浏览新闻

  第二步:在新闻详细页面下方评论框中填写评论

  第三步:评论保存

  测试结果1.用户可以在评论框中发表评论

  表4.2.5热点新闻模块测试

  测试模块热点新闻

  目的测试是否可以展示热点新闻

  测试步骤第一步:点击热点新闻

  第二步:查看推荐的热点新闻情况

  表4.2.6推荐新闻模块测试

  测试模块新闻推荐

  目的测试是否可以向用户推荐个性化新闻

  测试步骤第一步:用户点击浏览自己感兴趣的新闻

  第二步:在推荐新闻界面查看推荐结果

  续表推荐新闻模块测试

  测试结果当用户发生一定的点击浏览行为时,系统可以进行一定的新闻推荐

  4.3推荐效果验证

  本系统邀请了12位用户在系统中进行测试查看新闻推荐系统中推荐新闻的效果。新闻内容为网络爬虫获取的新浪网的86条新闻。

  4.3.1推荐结果

  以用户ID为4的推荐为例,系统中将为用户推荐生成的新闻列表中排名前15条新闻推荐给用户。

  表4.3.1用户ID为4的部分新闻推荐结果

  特朗普威胁提高对华关税报复中国美股集体收跌

  抗议开放过早美律师扮"死神"现身海滩望吓跑游人

  重庆40斤明星鲤鱼"莽子"被偷两男两女自首被拘留

  撒贝宁给朱广权当手语老师网友:看一次笑一次

  高管涉嫌性侵养女:发文十问当事女孩随后又删除

  招商蛇口深圳项目被查192套房源遭“分局锁定”

  广东雷州14岁女孩与人打架持刀划断劝架者手指

  凌晨4点,疫情下的美国遭遇了世界上最浪漫的“犯罪”!

  4.3.2新闻推荐测试结果分析

  对于系统推荐结果的评估方法一般有准确度及非准确度两大类,本文对推荐结果进行整理后,基于实验是直接采用用户体验获得的数据,使用预测准确率进行效果评估。准确率评价指标常用的有精确率、召回率等。

  精确率是在预测用户是否喜欢系统推荐的新闻时,预测结果准不准确的评价标准。例如,用户4通过点击(点击为1,未点击为0)表示用户是否喜欢该新闻。预测正确的新闻数量占预测总数量的比例就是准确率的计算方式。

  召回率与精确率的目的是不一样的。其是指在预测用户喜欢新闻时,预测成功的用户喜欢新闻在用户真实喜欢的新闻中所占的比例。

  本次评估主要查看系统推荐效果是否能让用户达到满意,因此采用精确率查看用户对推荐结果的感兴趣程度,从而验证系统的推荐效果。

  本实验在12位用户中历史浏览点击率较高的5位用户中,对预测结果进行评估。实验结果如下表所示:

  表5.3.2实验结果

  用户感兴趣数预测准确率

  用户4 7 46.67%

  用户6 6 40%

  用户8 3 20%

  用户2 5 33.33%

  用户9 6 40%

  由测试结果可以看出,该系统对于用户的推荐准确率并不是很高,但推荐效果较为稳定。通过结果分析,可以发现其系统实际的推荐效果需要更多的用户进行测试后才能进一步判断,现今的结果评估只是对系统推荐结果的测试。

  此外,通过对推荐结果的观察发现推荐结果有一些是偏向热点新闻推荐,这是由于协同过滤推荐算法计算时引起的,后期可以对新闻进行热度降惩来改进算法进一步研究。