主页 > 案例大全 >

论文方法介绍-基于大数据处理平台在线教育的设计与实现

2021-03-12 10:38


   在线教育在国内外的需求一直都很旺盛。SVM是根据统计数学中的相关知识、推导出的数学美丽的算法。大数据处理也是当今互联网的必要技术。通过数据采集再经过SVM数据分析,产生的结果作为推荐因子可以实现精准的个性化推荐。

 

  本课题旨在通过以网络为介质的教学方式,使学生可以仅仅通过网络开始学习活动。随着互联网时代的到来,数据信息剧增,从用户行为信息中可以分析出用户喜好。目前,大多数公司都会使用大数据处理,分析数据,得到海量数据集。本课题采用数据采集系统,再结合SVM数据分类,判断用户喜好,再基于内容的协同过滤推荐给用户相似课程,达到推荐给用户喜欢的课程的目的。

 

  本系统主要使用tornado搭建服务器,结合Kafka采集日志数据,使用SVM算法结合SMO算法对数据分析,得到结果。再通过基于内容(课程视频)的协同过滤的智能推荐可以找到相似课程、相关性强、更优秀的视频推荐给用户,帮助用户更好地掌握相关知识。系统分为服务器端和浏览器端,在浏览器端的界面采用bootstrap框架,完成精美的界面效果。

 

  本系统实现了大数据采集、SVM算法分析、课程推荐、收藏课程、搜索课程等功能。用户还可以查看推荐的课程,能帮助用户更便捷找到喜欢的课程。

 

  1.1课题意义和目标

 

  在线教育给学习者增加了新的学习方式选择。使用大数据处理可以捕捉到用户观看视频时产生的海量数据。SVM算法中的变量数比神经网络中的要少很多。为了达到实时分析的目的,使用SVM算法判断用户播放行为中的数据是否符合个人喜好。同时,较少的迭代嵌套循环可以减少SVM的计算时间。推荐系统广泛应用在电子商务、音乐、在线教育等各类Web应用中。通过对用户主要业务行为的记录作为数据进行推荐,从而为用户提供精准、可信任、有趣的内容推荐。[1]

 

  一个有着优质教育资源、稳定服务器连接、定制化推荐的在线教育平台能给用户带来完善的学习体验。同时,本系统采用分布式日志收集框架Kafka收集用户播放视频中的行为信息,再将获取的日志数据信息进行相应的格式转换和清洗,最后通过SVM算法的分析得到数据源,从而更新推荐系统的推荐结果。[2]

 

  1.2国内外研究现状

 

  在线教育可以从多方面附加产值,其中对于用户来说最看重的是学习过程的体验。大数据处理平台应用到在线教育平台,可以从多角度分析用户的学习行为。[3]。

 

  现实中大数据已经无时无刻的在影响我们的工作,大数据采集到的数据经常用来做自动化推荐系统的数据来源,无时无刻在更新推荐系统的模型。SVM分类算法是很常用的分类算法,可以应用在任意的分类系统中。例如邮件分类、垃圾短信过滤、文本分类等。国内电子商城网站根据消费者过往的消费记录和浏览记录等数据信息,自动判断该消费者可能有实际需求的商品。同时,针对基于物品的协同过滤的原理和推荐函数进行分析、设计。通过应用这些协同过滤推荐算法分析用户的潜在消费市场。[4]

 

  1.2.1国外研究现状

 

  Amazon商城首页中的推荐商品列表总是扮演了优秀的导购员角色。[5]推荐系统的模型更新迭代需要大量数据,可以从大数据处理平台实时获取数据,为推荐系统提供数据来源,达到优化推荐系统模型的目的。[6]通过分析用户的购买、收藏、搜索记录,计算中用户的潜在需求。同时还可以大数据得到当前热销商品也可以为推荐系统提供数据来源。[7]

 

  1.2.2国内研究现状

 

  国内有很多拥有优秀推荐系统的平台。网易云音乐的个性化推荐是其曾风靡一时的,其精准的个性化推荐饱受用户好评。其推荐因素主要包括用户喜欢和听歌记录。用户在听音乐时会产生巨量数据,利用这些数据通过推荐系统可以让用户获得更好的体验,可以使用DB-CF(DBSCAN-Collaborative Filtering)算法对音乐平台的线下用户进行聚类,然后通过协同过滤算法计算对象用户与各聚类中心的相似度,再通过更新和对比相似度度量矩阵,选出离对象用户最近的邻居。[8]

 

  今日头条的个性化推荐主要从机器学习模型、产品数据、用户调查数据这三个方面,通过用户调查数据完成模型的优化与迭代。书馆书目推荐系统可以采用协同过滤算法计算读者之间的相似度,获取读者与读者之间的相似矩阵,最后根据相似度得到读者对每种书的兴趣值,并根据兴趣值值进行书馆书目智能推荐[10]。

 

  1.3论文的章节结构

 

  本文主要是对基于大数据平台在线教育系统的设计与实现进行描述,根据实际项目划分七个章节。章节大致描述如下:

 

  第一章,绪论。本章主要描述了大数据处理技术、在线教育、推荐技术、SVM分类算法的现状与发展、研究课题的的和意义。

 

  第二章,系统分析。本章通过对系统的可行性、需求、方案比选三部分从多角度展开论证,并得出相应的结论。

 

  第三章,系统的设计。本章通过对软件体系结构、功能设计、持久化设计、社会健康、文化、法律相关设计方面结合表说明系统设计主要内容。

 

  第四章,系统的实现。本章主要讲解了数据分析模块和推荐系统模块的公式应用和核心代码展示。

 

  第五章,系统运行与效果分析。本章展示了各模块在浏览器端的运行效果并结合片说明对其效果进行介绍。

 

  第六章,系统测试。本章主要介绍系统主要使用的测试方法,以表格的形式绘制了测试方案以及主要的测试用例。

 

  第七章,总结与展望。本章主要介绍系统的不足之处,以及可扩展、改进的解决方案。

 

  1.4本章小结

 

  本章首先结合国内外的成功项目折射出本课题的研究意义和目的,之后描述了大数据处理、在线教育、协同过滤、SVM分类算法在当今时代的国内外发展和应用,在最后阐述了本论文的章节结构。

 

  2系统分析

 

  基于大数据平台在线教育系统建立于SVM数据分析系统和Kafka服务基础之上,为推荐系统提供数据。本课题将用户分为用户、游客、作者、管理员四种,针对游客,会跳转到登录页面,用户和作者可查看课程笔记、价格、主要信息以及播放课程视频等。对于管理员来说,还可以上传课程,删除课程。

 

  2.1可行性分析

 

  2.1.1技术可行性

 

  本系统是一个全栈式开发的项目。系统的后端是HTTP服务器、Kafka消费者、前端主要是浏览器端。其中HTTP服务器使用Tornado框架搭建,使用Kafka采集海量数据,通过自定义xadmin生成增强的管理系统后台。

 

  本系统在windows10下使用IDEA开发工具进行开发,在浏览器上对系统进行调试,经大量调试,可靠性、可维护性和可生产性都有了一定保障。

 

  2.1.2经济可行性

 

  本系统是软件工程项目,使用的Tornado框架为Apache社区的开源框架,开发软件IDEA为教育版授权,对硬件环境要求不高,使用主流计算机硬件设备完成。开发周期较短并且不需要额外的硬件设备,所以整个系统的开发成本较低。同时,本系统的课程视频播放不涉及流媒体服务器,节约了成本。在经济效益方面,系统的课程推荐和对优质的课堂笔记进行展示,可以吸引大量对课程视频喜爱的用户,可以吸引到项目投资。同时,还可以在界面上进行广告展示,获取广告宣传的收入。综上,系统的运营成本可以用招商投资等方法解决,同时通过广告收入还产生了可观的利润,因此在经济上可行。

 

  2.1.3法律、政治及社会可行性分析

 

  本系统使用的HTTP服务器后端框架Tornado框架为开源框架,训练数据集为自定义数据集,开发软件IDEA为教育版授权,系统的所以设计均为作者原创且未被申请专利,符合法律法规。本系统考虑到严格保护用户的身份信息,所有密码在存储时都会用md5加密处理,不会恶意泄漏和使用用户个人信息,因此不会与用户产生法律纠纷。课程视频内容是测试视频。经过筛选后,符合我国社会主义核心价值观,符合新时代的文化精神,不涉及任何宗教信仰问题,不展示和传播非法内容。综上,本系统在法律、政治以及社会三方面上可行。

 

  2.1.4可持续发展可行性

 

  本系统使用Tornado框架开发HTTP服务器,使用Kafka进行数据采集。Tornado支持高并发,支持大量资源的扩展加入,Kafka是分布式单独的数据采集系统,硬件设备性能不足时可以采用分布式部署。

 

  系统能帮助用户快速提高个人能力,通过数据分析根据其兴趣推荐优质课程资源,会让用户学习体验更加完善。综上,系统的可持续发展是可行的。

 

  2.2需求分析

 

  通过大量的市场调研,针对在线教育、大数据处理、推荐体验、数据分析等方面进行调查结果的搜集和分析,确定本系统的完整的功能和需求的性能。

 

  2.2.1需求描述

 

  本题的主旨为推荐课程,参考当前国内具有代表性的网易云课堂在线教育平台,做出更具有直观性的界面网站,主要的功能模板如下:

 

  (1)推荐课程模块

 

  根据数据分析中得到的结果,使用基于内容的协同过滤的推荐算法得到相关的高质量视频,在网站首页推荐给用户,完成个性化推荐的功能。对于游客推荐的是广告之类的视频。

 

  (2)用户信息模块

 

  用户可以管理个人基本信息,游客要先注册,登录后才能修改个人信息。用户密码使用md5加密方式进行加密,登录之后,在传输过程中不传递密码。注册完后的信息将通过加密传输传入网站服务器中并保存在MySQL数据库中。

 

  (3)订单模块

 

  用户购买课程生成订单。用户可以查看订单信息。用户可以查看已完成的订单,查看已购买的课程,并可以通过订单中的课程查看课程视频。

 

  (4)课程视频模块

 

  作者通过管理员上传课程视频信息,通过管理员删除课程视频,修改课程视频价格。用户可以通过HTML5播放器观看课程视频,选择课程视频目录切换观看视频。

 

  (5)课堂笔记模块

 

  用户在观看视频时可以添加、修改、删除个人课堂笔记,可以在每次观看视频是查看别人的笔记,可以给别人的笔记点赞,笔记条目会以点赞数降序排列展示。

 

  (6)收藏课程模块

 

  用户可以添加到个人收藏,可以在个人收藏中查看、删除。添加收藏的同时会通知推荐系统产生新的课程推荐列表。

 

  (7)数据采集及预处理模块

 

  使用Kafka处理用户在观看课程视频的动作流数据,也就是网站服务器接受HTTP请求后作为Kafka的生产者发送消息到部署好的Kafka集群中。这些数据包括焦点停顿时长、修改笔记次数等数据。

 

  (8)数据分析模块

 

  使用SVM算法配置高斯核函数完成非线性分类训练时,不需要保存训练样本,只需要训练后保存主要参数。根据实时更新的指定的Kafka消费者组收到的消息,使用训练后的SVM算法模型判断用户是否喜欢此课程视频;若喜欢,可更新首页推荐课程视频。

 

  2.2.2角色及用例分析建模

 

  (1)用例分析

 

  2-1是系统用例。本系统分为用户、游客、管理员和作者四种角色,游客权限最低,只能浏览课程、搜索课程。注册用户可以购买课程、管理个人信息、管理课堂笔记、浏览个性化推荐课程。管理员可登陆后台对用户、课程、课堂笔记、课程视频以及作者信息进行管理。作者在用户权限的基础上还可以管理发布的课程视频和课程信息。

 

  2-1系统用例

 

  (2)用例描述

 

  本部分对系统的部分用例进行描述,表2-1、表2-2、表2-3分别为用户管理收藏课程、管理笔记、课程推荐三个用例的描述。

 

  表2-1课程收藏用例描述

 

  用例名称管理收藏课程

 

  描述用户管理个人已收藏的课程

 

  标识符SV1

 

  角色用户

 

  前置事件流用户已完成登录

 

  主事件流1.用户可以在课程播放页添加课程到收藏

 

  2.用户点击个人收藏进入管理收藏页面

 

  3.用户点击相应课程下的取消收藏按钮

 

  4.用户取消收藏

 

  续表2-1

 

  其他事件流1.网络异常,提示操作失败

 

  后置事件流1.更新推荐课程

 

  表2-2管理笔记用例描述

 

  用例名称管理笔记

 

  描述用户对个人课堂笔记进行管理

 

  标识符SV2

 

  角色用户

 

  前置事件流前置事件流:用户成功登录

 

  主事件流1.用户进入课程播放页

 

  2.用户在输入框输入修改后的笔记内容

 

  3.点击保存

 

  其他事件流其他事件流:1.网络异常,提示保存失败

 

  后置事件流后置事件流:

 

  1.对于课堂笔记,用户可以在视频播放页进行查看。

 

  表2-3课程推荐用例描述

 

  用例名称课程推荐

 

  描述系统生成课程推荐列表推送给用户

 

  标识符SV3

 

  角色用户

 

  前置事件流用户登录且观看视频

 

  主事件流1.用户观看视频

 

  2.日志采集系统Kafka收到数据

 

  3.数据分析系统进行分析

 

  4.推荐系统生成新的推荐列表

 

  其他事件流其他事件流:无

 

  后置事件流后置事件流:用户在返回首页时更新列表

 

  2.2.3系统非功能需求

 

  (1)性能需求

 

  根据课程名称、作者名称等进行条件搜索时,可以在1秒内跳转到搜索结果界面并展示得到的搜索结果。

 

  (2)兼容性需求

 

  系统应支持Chrome浏览器、Firefox浏览器和支持IE8.0及其以上版本内核的浏览器,且对较低版本的浏览器内核进行适配。

 

  (3)交互性需求

 

  系统界面设计需要对交互性友好。在各种操作失败和异常情况发生时进行错误提示,每次修改、删除、增加操作都设置提示。

 

  2.3方案比选

 

  随着互联网服务端的发展,在后端有多种框架可以选择。使用Python的HTTP服务器开发框架主流的有Django和Tornado框架。本部分对Django+Hadoop框架和Tornado+Kafka框架两种方案进行比选。

 

  2.3.1方案一:Django+Hadoop

 

  (1)Hadoop框架

 

  2-2 Hadoop框架结构

 

  由2-2可知,最上层的数据采集包括了数据挖掘、数据流处理、数据仓库更下一层的是MapReduce分布式计算框架,用来完成海量数据的处理与分析。最下层的HBase和HDFS用来做分布式数据存储[11]。

 

  (2)Django框架

 

  Django是一个高级Python Web框架,常用来做快速开发。它是由经验丰富的开发人员构建,Django在安全性有较高的保障,能帮助开发人员避免许多常见的安全性错误,自带ORM层库。[12]

 

  2-3 Django工作流程

 

  2.3.2方案二:Kafka+Tornado

 

  (1)Kafka框架

 

  Kafka是Apache开源的跨平台开发框架。Kafka类似于分布式消息队列。可以在多台机器上分布式部署。Kafka运行时,生产者往队列里写消息,消费者从队列里取消息进行业务逻辑。Kafka对外使用topic的概念,生产者往topic里写消息,消费者从topic中读消息。因为一个topic是由多个partition组成的,所以在增加了硬件存储后,可以通过增加partition的数量来说相当于直接对此topic扩容。Kafka的分布式部署性能非常高,每收到消息就会向文件中写入,延迟很低。[13]

 

  2-4 Kafka框架结构

 

  2-3展示Kafka框架结构。其中broker代表中间的kafka集群,能存储不同topic的消息数据,是由多个或一个分布式server组成的集群。producer运行时往broker中某个topic里面生产数据。consumer会在运行时从broker中某个topic获取数据。

 

  (2)Tornado框架

 

  Tornado是一个Python Web框架和异步网络库,适合做前端有大量ajax请求的服务器或者需要高并发、高性能的服务器。对于实时Web服务来说,Tornado中基于Linux的Epoll异步网络能够解决需要与用户建立长久网络连接的问题。[14]

 

  2.3.3比选结论

 

  (1)Hadoop与Kafka对比

 

  表2-4详细的展示了Hadoop与Kafka软件特性的对比。

 

  表2-4 Hadoop与Kafka对比表

 

  特性Hadoop Kafka

 

  运行速度中等快

 

  软件体量庞大轻量

 

  计算能力强低

 

  数据采集速度快快

 

  成熟度高高

 

  延迟中等低

 

  (2)Django与Tornado对比

 

  表2-5详细的展示了Django与Tornado在性能、拓展性等方面的对比。

 

  表2-5 Django与Tornado对比表

 

  Django Tornado

 

  多线程支持中等强

 

  网络请求效率中等高

 

  ORM自带无

 

  体量大中等

 

  配置难易中等简单

 

  (3)结论

 

  表2-4展示了Hadoop与Kafka在运行速度、软件体量、数据采集等多方面上的对比。可以得出,虽然Hadoop框架对于大数据处理较为全面,但相较Kafka数据采集延迟太高、体量过大、配置复杂,不符合系统设计要求。而Kafka只需要部署broker、consumer、producer、topic就能高速运行,Tornado相较于Django来说,因为其支持的非阻塞网络I/0连接,所以对于类似ajax异步请求多的网站来说使用Tornado开发HTTP服务器更为适合。综上所述,选择Tornado+Kafka完成系统设计与实现较好。

 

  2.4本章小结

 

  本章主要从多方面对系统进行可行性分析,从市场调研结果结合实际需求完成需求分析,从方案比选中得到适合系统的现有最佳解决方案。

 

  3系统的设计

 

  3.1软件体系结构

 

  3-1系统功能结构

 

  3-1所示展示了本系统的功能结构,对应各自的业务模块,遵循高聚合低耦合的设计理念。模块与模块之间相互独立,如果一个模块需要改动不会影响其余模块正常工作,提高了系统的可复用性和可扩展性。

 

  本系统主要由课程推荐、订单管理、用户信息注册、课程笔记管理、课程视频查看、课程收藏、数据采集及预处理、课程搜索等8大模块组成。其中本系统的核心模块课程推荐模块,对于用户,首页显示的是默认的推荐列表,可以通过点击推荐课程进入播放界面、或者搜索课程进入课程展示界面。

 

  3.2功能设计

 

  (1)类设计

 

  3-2展示了系统中对应数据库表的实体类的属性和关系,有8个实体类,分别是User、Course、Writer、Order、Notes、Course_video、Collect_course、Login,其中作者与课程为1对多的关系,作者可以上传多个课程。

 

  3-2系统类

 

  (2)时序设计

 

  系统的核心功能模块主要是推荐课程模板,需要用到数据采集、数据分析完成一次完整的课程推荐,推荐的数据源则是来自播放数据和收藏数据。3-3为本系统推荐功能的时序。

 

  3-3推荐模块时序

 

  (3)活动设计

 

  3-4展示了系统推荐功能的活动。用户登录时信息验证使用sha256加密处理,在第一次登录后,服务端会保存用户登录信息,同时生成md5加密的身份验证码,保存到浏览器cookie中[18]。每次请求时服务器都会读取浏览器的cookie验证身份。

 

  系统中用户可以在课程播放页点击收藏按钮对课程或者进行收藏,数据采集模块会在用户观看视频时采集数据,经由数据分析模板进行数据分析,若符合SVM非线性分类模型条件,会更新推荐列表。

 

  3-4推荐模块活动

 

  3.3持久化设计

 

  3.3.1数据库逻辑关系

 

  3-5展示了本系统用户、作者、订单、课程、笔记、课程视频6个实体的属性及其之间的联系。其中的User与Writer与Login一一对应。

 

  3-5 E-R

 

  3.3.2数据库表设计

 

  3-6数据库表

 

  在设计数据库时,一般遵循BCNF范式进行表的设计。本系统数据库使用MySQL并遵循BCNF范式,由于查询大多需要用到login表的主键,所以设置了login的主键索引,提高查询效率。同时,数据库采用UTF-8这种可变长度字符编码,支持储存中文数据。本系统使用Tornado搭建后台,3-6展示了本系统数据表属性及关联关系。

 

  核心表的详细结构及其字段约束信息如下:

 

  (1)登录信息表

 

  表3-1登录信息表

 

  字段名称字段类型字段长度约束字段描述

 

  username vatchar 20 pk用户登录名

 

  password varchar 15 not null密码

 

  type varchar 15 null用户类型

 

  (2)用户信息表

 

  表3-2用户信息表

 

  字段名称字段类型字段长度约束字段描述

 

  uId int 11 pk用户编号

 

  username varchar 15 not null用户名

 

  bornTime date 0 null生日

 

  sex varchar 6 not null性别

 

  tel varchar 11 not null电话

 

  name varchar 10 null姓名

 

  (3)作者信息表

 

  表3-3作者信息表

 

  字段名称字段类型字段长度约束字段描述

 

  wId int 11 pk作者编号

 

  username varchar 15 not null用户名

 

  bornTime date 0 null生日

 

  sex varchar 6 not null性别

 

  tel varchar 11 not null电话

 

  name varchar 100 null姓名

 

  (4)课程信息表

 

  表3-4课程信息表

 

  字段名称字段类型字段长度约束字段描述

 

  cId int 11 pk编号

 

  cName varchar 20 not null名称

 

  cPrice float 10 not null价格

 

  cPic varchar 255 not null课程海报地址

 

  wId int 11 fk作者

 

  (5)订单信息表

 

  表3-5订单信息表

 

  字段名称字段类型字段长度约束字段描述

 

  oId int 11编号

 

  username varchar 25 pk

 

  cId int 11 pk

 

  createTime date not null创建时间

 

  (6)课程视频表

 

  表3-6课程视频表

 

  字段名称字段类型字段长度约束字段描述

 

  cVideoId int 11视频编号

 

  cVideoHref varchar 100 not null播放地址

 

  cId int 11 pk课程编号

 

  cVideoDetail varchar 20 not null章节描述

 

  (7)课堂笔记表

 

  表3-7课堂笔记表

 

  字段名称字段类型字段长度约束字段描述

 

  cVideoId int 11视频编号

 

  content varchar 255 not null课堂笔记

 

  createTime date not null创建时间

 

  username varchar 20 pk用户名

 

  (8)用户收藏表

 

  表3-8用户收藏表

 

  字段名称字段类型字段长度约束字段描述

 

  username varchar 20 pk用户名

 

  cId int 11 pk课程id

 

  3.4社会健康、文化、法律相关设计

 

  本系统是一个基于大数据处理的在线教育,系统使用一些免费的公开课、视频等资源进行展示。在社会健康方面,本系统作为促进个人能力提升的教育平台,为用户提供优质的教育资源和智能的推荐系统,不会涉及版权方面的纠纷。在文化设计方面,系统中展示内容符合大多数人的文化印象,能体现出简约时代的文化精神。在法律设计方面,本系统使用的Tornado和Kafka框架均为开源框架,训练数据集为自定义数据集,遵循开源协议,且课程所用内容皆为公开测试视频,不做任何收费。

 

  3.5本章小结

 

  本章主要是在系统的详细设计对体系结构、功能设计、持久化设计设计进行介绍,通过绘制相应形并加以文字说明,全面概括了本系统的设计思路,最后对社会健康、文化以及法律相关设计进行阐述。

 

  4系统的实现

 

  4.1推荐课程和数据分析

 

  4.1.1数据分析

 

  (1)算法思路分析

 

  通过SVM算法进行划分分类用户行为习惯是否符合喜欢的条件,首先确定超平面(HyperPlane)[16]:

 

  此公式是根据特征向量求超平面的未知变量W和b,通过放缩,并且需要使margin最大问题变成了:

 

  min

 

  s.t.

 

  转化成对偶问题后(符合KKT条件)求解会得到如下公式:

 

  使用SMO算法求出alpha的值,求结果时不需要求出W,b的值,利用核函数和SMO算法求出和b的值,就可以并将需要求解的X代入到中得到y的值,若y大于等于0则为喜欢,否则就是不喜欢。

 

  (2)实现代码

 

  class svmc:

 

  def __int__(self,x,y,c):

 

  self.c=c

 

  self.y=y

 

  self.x=x

 

  def rbf(self,x,y,sigma):

 

  t=0

 

  for i in range(len(x)):

 

  t=(x<i>-y<i>)**2+t

 

  return ny.exp(-t/(2*sigma**2))

 

  def res(self,x,alpha,b):

 

  #alpha是从SMO算法的训练数据得到的

 

  #b对应公式中的b

 

  lenN=len(x)

 

  temp=0

 

  for i in range(lenN):

 

  temp=temp+alpha<i>*self.y<i>*self.rbf(self.x<i>,x,2)

 

  if temp+b&lt;0:

 

  #属于喜欢这一类

 

  return False

 

  else:

 

  return True

 

  4.1.2课程推荐算法实现

 

  (1)算法思路分析

 

  协同过滤的课程推荐算法主要内容是构建课程之间的相似矩阵,这个过程需要计算出所有课程之间的相似度。使用余弦相似度计算课程相似度[17]:

 

  (1)

 

  公式中W表示内容u与内容v的相似度,N表示喜欢某个内容的用户。再根据此公式计算相似矩阵:

 

  (2)

 

  R一般设置为1,计算用户收藏列表中所有课程的相似度、推荐较高相似度的选取前5个。

 

  (2)实现代码

 

  #ItemCF算法计算得到前5个相似度较高的内容内容总数不超过10

 

  #传入用户喜欢的内容

 

  #相似度矩阵需要计算多个内容之间的相似度

 

  def AllSimilarity(cIds,res):

 

  #获取相似度传入collect中的用户

 

  dp=[[0 for i in range(len(cIds))]for i in range(len(cIds))]

 

  if not cIds:

 

  return

 

  for k in range(len(cIds)):

 

  for i in range(k+1,len(cIds)):

 

  res[k]<i>=getSimilarity(cIds[k],cIds<i>)

 

  return dp

 

  def getSimilarity(cid,cid_next):

 

  user_cid=DB.query_collect_user(cid)

 

  user_cid_next=DB.query_collect_user(cid_next)

 

  account=0

 

  for u in user_cid:

 

  for u_next in user_cid_next:

 

  if u.username==u_next.username:

 

  account=account+1

 

  return account/math.sqrt(len(user_cid_next)*len(user_cid))

 

  4.2用户状态管理

 

  4.2.1登录状态保持

 

  (1)算法思路分析

 

  保持用户登录状态,本系统使用cookie的方式在本地保存用户token信息,每次请求服务器会读取cookie验证内存中的token是否存在,若不存在就跳转到登录界面。token验证机制是一种安全的加密用户身份id的方式,浏览器在cookie中存储token并在每次请求服务器会读取cookie中的token值进行身份验证。

 

  (2)实现代码

 

  def get(self):#print(self.get_argument('username'))

 

  self.render('login.html')

 

  def post(self):

 

  username=self.get_argument('username')#接收用户输入的登录账号

 

  password=self.get_argument('password')#接收用户输入的登录密码

 

  if DB.get_login(username=username,password=password):#判断用户的密码和账号

 

  import hashlib#导入md5加密模块

 

  import time#导入时间模块

 

  obj=hashlib.md5()#创建md5加密对象

 

  obj.update(bytes(str(time.time()),encoding="utf-8"))#获取系统当前时间,传入到md5加密对象里加密

 

  token=obj.hexdigest()#获取加密后的密串

 

  container[token]={}#将密串作为下标到container字典里,创建一个新空字典

 

  container[token]['username']=username#字典里的键为yhm,值为用户名

 

  container[token]['password']=password#字典里的键为mim,值为用户密码

 

  container[token]['is_login']=True#字典里的键为is_login,值为True

 

  self.set_cookie('user_cookie',token,expires_days=1)#将密串作为cookie值写入浏览器

 

  self.redirect("/index")#跳转到查看页面

 

  else:

 

  self.redirect("/login")

 

  4.3数据请求

 

  4.3.1课程数据请求

 

  (1)算法思路分析

 

  本系统主要工作包括课程的展示和结合数据采集、数据分析完成的推荐功能。网络请求使用HTTP应用层网络协议,服务器端使用正则url映射请求路径,简化数据请求地址。

 

  表4-4课程数据请求URL

 

  URL返回数据

 

  /login登录页面

 

  /register注册页面

 

  /index主页面

 

  /course课程搜索结果页

 

  /course_play课程播放页

 

  /collect用户课程收藏页

 

  /order用户订单详情页

 

  (2)实现代码

 

  app=tornado.web.Application([(r"/",indexHandler),

 

  (r'/login',loginHandler,{'subject':'login'}),

 

  (r'/register',loginHandler,{'subject':'register'}),

 

  (r'/manage',manageHandler),

 

  (r'/manage/user/add',manageAddUserHandler),

 

  (r'/manage/user',manageUserHandler),

 

  (r'/manage/del/login',manageDelLoginHandler),

 

  (r'/manage/add/(P&lt;name&gt;w+)',manageAddHtml),

 

  (r"/index",indexHandler,{'username':''}),

 

  (r'/course',CourseHandler),

 

  (r'/course_play',CourseVideoHandler),

 

  (r'/data',DataHandler),

 

  (r'/course_search',CourseSearchHandler),

 

  (r'/mes',WriterHandler),

 

  (r'/course1',TestHandler),

 

  (r'/collect',CollectHandler,{'subject':None}),

 

  (r'/collect/add',CollectHandler,{'subject':'add'}),

 

  (r'/collect/del',CollectHandler,{'subject':'del'}),

 

  (r'/notes/add/content',NoteHandler,{'subject':'content'}),

 

  (r'/notes/add/like',NoteHandler,{'subject':'like'}),

 

  (r'/order',OrderHandler)

 

  ],

 

  )

 

  4.4本章小结

 

  本章主要对SVM非线性回归数据分类、课程推荐、课程数据请求、以及用户状态保持这四方面。根据数学公式推导结果进行了算法思路分析,展示了相关的核心代码。

 

  5系统运行与效果分析

 

  5.1界面设计概要

 

  本系统主要采用Flat wind的HTML元素设计风格,保证用户的主要观感是界面简洁。在交互性上也非常人性化,操作失败时会弹窗显示对应的错误提示,帮助用户下一次行为正确。

 

  5.2用户信息校验

 

  5.2.1用户登陆

 

  5-1展示了本系统的登录界面。用户登录时,首先会进行输入格式的验证,符合格式规范后才会发送HTTP请求。HTTP请求中的数据通过sha256加密传输后传递账号密码到HTTP服务器端。验证正确后,会将token身份码保存在浏览器cookie中。

 

  5-1用户登录界面

 

  5.2.2用户注册

 

  5-2展示本系统用户注册效果面。用户注册时,最主要的是验证输入格式。格式验证通过后,服务器收到数据会向login数据表中添加用户。成功后生成的token存储在cookie中,同时跳转到系统首页,不需要登录。

 

  5-2用户注册界面

 

  5.3课程信息展示

 

  5.3.1系统首页

 

  5-3系统首页

 

  如5-3所示,系统首页展示的是推荐课程列表、展示的片使用jqthumb插件进行缩略。还可以可以在本界面搜索课程,退出登录,查看个人收藏等操作。

 

  5.3.2课程播放

 

  5-4展示的是课程播放界面。用户可以在此界面播放视频、点击播放目录中的视频。可以查看和修改个人笔记、查看别的用户的笔记并为其他用户的笔记点赞。还可以添加课程到收藏、也可以搜索课程。

 

  5-4课程播放界面

 

  5.4课程收藏和订单

 

  5.4.1我的收藏

 

  5-5展示的是课程收藏界面,可以取消个人收藏、进入对应的收藏课程播放页。

 

  5-5课程收藏界面

 

  5.4.2订单

 

  5-6展示的是订单界面,向用户展示个人所有订单信息,展示的订单条目按照时间顺序排列,可以从中进入到对应的课程播放界面。

 

  5-6订单查看界面

 

  5.5管理后台

 

  本系统使用Tornado网络框架搭建HTTP服务器,使用Xadmin后端页面模板结合JS技术配置管理后台。如5-9所示,管理员可在后台管理中对作者、普通用户、课程等信息进行管理。



知网查重福礼


微信扫码关注公众号登录

x
客服QQ 返回顶部