大 学
本科毕业论文(设计)任务书(2024 届)
学院: 计算机科学与技术学院 班级: 计算机 20-7
姓名:
毕业论文(设计)题目: 短视频推荐服务端的设计与实现
毕业论文(设计)工作自 2023 年 12 月 14 日起至 2024 年 4 月 25 日止毕业论文(设计)题目的目的及意义
随着人工智能技术、大数据技术的发展、语言学习与评测、语言沟通交流方面也出现了很多成果、为语言学习者提供给了不少方便、实用的工具、同时也为互相交流、信息交换提供了便利的技术手段。机器翻译、语音翻译、同声传译、语音识别、语音合成、发音评测、视觉处理、自然语言理解等技术在不同应用场景取得了进展和推广应用。但是、目前主流的人工智能技术仍为数据驱动的技术,仍然受制于语种、具体任务、语料库规范性和规模、领域的限制、仍需要持续完善、解决新的关键问题、研发新的关键技术、开发新的产品。语言文字是人类最重要的交际工具和信息载体、是文化的基础要素和鲜明标志。国家通用语言文字是各民族文化认同、情感沟通、信息交流的心灵钥匙。设计与开发面向社会人员的国家通用语言文字学习相关的信息系统提供非常便利的学习工具、有利于提高社会
人员的国家通用语言水平,有利于铸牢中华民族共同体意识。 毕业论文(设计)的主要工作任务
1、查阅、收集、整理毕业设计所需资料;
2、根据设计任务制定工作进度;
3、根据设计任务制定工作进度、学习 python、FastAPI、数据库;
4、设计数据库、开发服务端接口;
5、实现根据学习历史数据推荐视频算法;
6、完成相关技术文档的整理及论文的撰写。
接受毕业论文(设计)任务日期: 2023 年 12 月 19 日
(注:本任务书由指导教师填写)
1功能实现
本小节介绍各个功能的具体的实现。在开发过程中,前台的请求以Ajax的方式请求,后台以Json的格式返回数据。Json的格式信息规范如表1.1:
表1.1 返回数据类型规范
code
|
info
|
data
|
四位数字代码
|
注册成功
|
User
|
{“code”:“0000”,“info”:“注册成功”,“data”:user}
|
1.1 用户模块的实现
1.11. 用户注册
图1.1 用户注册界面
想要给用户带来更好的推荐体验,推荐符合用户的视频,需要让系统知道你是谁,如果是老用户已经有账号,直接登录。如果没有账号就是新用户,新用户需要先注册才能登录,注册页面如图1.1。需要填写用户名、密码、电子邮件和选择你喜欢的视频类型。图1.2是新用户注册功能的处理流程。
图1.2 用户注册流程图
在系统的首页有登录->注册的按钮,点击进去之后填写相应的信息。填写完提交之后前后台都会做相应的校验工作,然后判断用户名是否已注册,未注册则给用户生成ID(此ID使用Oracle的Sequence),把对应的其他信息插入到数据库,则注册成功,用户可以去登录页面登录。
1.1.2. 用户登录
图1.3 用户登录界面
用户登录的界面如图1.3,有密码和用户名两个输入框需要用户填写。用户登录的具体流程为:当用户提交登录信息后,前台用JS对用户填写的数据做校验,用户名和密码都不能为空,密码不能低于六位。在前台校验成功后,然后封装参数以ajax的方式请求到后台,这样可以减少服务器的压力。后台获取登录的信息后,也必须校验。在某些情况下,用户可以不通过前台页面直接请求到后台,因此后台的校验也是必须的。校验通过后再从数据库查找,判断该用户是否存在以及用户名密码是否正确。若存在并且正确,则把用户信息放入Session当中,供前台页面显示。否则返回错误消息到前台页面,然后展示给用户。登录流程如图1.4。
图1.4 用户登录流程图
用户登录成功后的主页面如图1.5。左半小部分会列出推荐给当前登录用户的十条记录,展示缩略图和视频的部分信息以及推荐理由,中间为播放视频,下边用户可以对视频进行评分。右边显示当前视频的具体信息。
图1.5 用户主界面
用户有登录操作相对应的就有退出操作,用户退出主要是销毁Session中用户的信息,界面显示把用户名称更换为登录的按钮。前台点击退出按钮后发送ajax请求到后台,后台返回成功后前台重新加载页面,此时Session中已经没有用户的信息,因此在界面中显示登录的按钮。
1.1.3. 用户其他操作
界面菜单如图1.6。用户在界面可以进行查找,在搜索框输入关键词后,点击查找按钮之后,系统会根据输入的关键词按视频的名称进行模糊匹配。然后将查到的视频返回给用户。
图1.6 界面菜单
界面中还对视频进行分类,在导航栏中有推荐菜单和视频的分类。用户点击某一个分类后后台根据类型会为用户查找出相应的视频,为了解决个性化视频推荐系统中新视频的冷启动,如果查出来的视频中含新视频,我们会把新视频顶置,以便用户可以看到新视频。此处都是用户查找操作,因此我们把按分类和用户的搜索抽象成一段公用的逻辑,符合软件设计的规范。
1.2 推荐模块的实现
推荐模块是我们个性化视频推荐系统的重要模块。根据我们第三章的设计,推荐算法的实现交给我们的定时任务模块调用的存储过程来实现。因此推荐模块相对简单。如果用户没有登录,我们的推荐结果如图1.6,推荐新视频以及评分比较高的视频,新视频会顶置并且视频名称标注为红色,如果用户登录了,并且为新用户没有观看记录,则推荐与用户兴趣爱好相同的视频,如果用户有观看记录,则按照我们的推荐算法来推荐,如图1.7,每个视频给出了推荐系数,这样能给让用户更加信任推荐的结果。
图1.6 无登录推荐结果 图1.7 登录推荐结果
1.3 日志模块的实现
日志模块主要记录用户看过视频的评分信息,此系统的推荐主要也依赖评分信息。如果用户是第一次给某电影评分,则插入一条记录,此种情况会发生在分类的视频或者查找的视频或者推荐的视频,推荐的视频都是用户未评分的。如果插入的记录已经存在,我们会更新原来的评分。此种情况发生在分类视频和查找的视频当中,因为其中可能有用户看过的视频。因此推荐的类型就掌握在用户的手中,你可以修改评分从而改变推荐结果。
1.4 管理模块的实现
管理模块主要对视频和用户管理以及算法优化,管理的界面如图1.8。后台管理的页面分为左右两个部分,左边是菜单,右边是我们数据的展示。左边的菜单有视频管理,用户管理和算法优化。我们先看视频管理,在右边会列出所有的视频,我们会把新视频顶置,一行代表一个视频,在每行的最右边有一个操作的栏目,可以对此视频进行删除操作和修改操作。在最上面有一个添加的按钮,可以添加新的视频。
图1.8 视频管理后台界面
视频删除:点击删除的时候会给出如图1.9的确认框, 确实是否删除此视频,如果确认则向后台传视频的ID进行删除,取消则不删除。
图1.9 删除操作确认框
视频修改:点击修改的图标回显此视频的信息如图1.10。此时可以选择关闭或者更改信息后点击修改按钮。前台把页面的数据传给后台进行修改。后台获取参数,进行校验,校验合法然后修改。
图1.10 修改视频界面
视频增加:点击添加按钮之后会有一个弹出框如图1.11来填写视频的信息。填写完成后点击保存即可增加新视频:后台也是获取参数与校验操作,与更新不同的是,这里先查找到视频库最大的视频的ID,然后给此ID+1作为新视频的ID。
图1.11 增加视频界面
图1.12是用户管理的界面。用户管理比较简单,主要对非法的用户进行禁用,在用户列表的最右边的操作中有禁用的按钮,点击此按钮就可禁用此用户,禁用后用户不可以登录到此系统。
图1.1.2 用户管理界面
1.5 定时任务模块的实现
1.5.1. 算法实现
在实现推荐算法的过程中考虑到每次都要从数据库获取到数据,再计算,最后存储到数据库,这样访问数据库有大量的系统资源和时间的消耗,为了解决此问题,我们不运用Python语言来做推荐系统算法的开发,而是采用Oracle的存储过程。这样大大的提升了计算速度。
相似矩阵的计算(计算流程如图1.13):首先删除数据库中要计算的用户原来的相似矩阵,其次遍历所有用户计算每个用户与其他用户的相似值。
图1.13 相似用户计算流程图
1.5.2. 定时任务实现
基于Python语言的定时调度框架有APScheduler和Celery。我们推荐系统定时任务的实现采用APScheduler框架,它提供了多种不同的调度器和存储器,Quartz里的提供的每个功能在APScheduler里都有。对开发人员提供了便捷的操作。
我们的定时任务不断的判断是否有更新的推荐数据,当用户对某个视频的评分改变之后,这条记录在数据库表示为需要更新,定时任务查询到后调用存储过程来更新该用户的推荐列表。最后更新该条记录为不再需要更新的状态。
定时任务还需要实现另一个功能,当新视频上架之后,什么情况下不是新视频。这个功能我们也用定时任务来完成,例如规定当超过50个用户观看之后取消新视频的标志。
1.3 小结
本章从系统的实现方面进行了介绍,系统每个模块的开发都采用MTV的结构进行开发,对复杂的逻辑给出了流程图,每个实现还有文字描述,对开发出的界面都有截图展示。至此,本系统开发阶段完成。