SUFE-lxc / 2021movie

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

项目介绍:
本推荐系统采用的是分层模型设计**,第一层为前端页面模型设计,注重为实现页面的展示效果,主用的编程语言为JavaScript,和前端主流框架bootstrap。
第二层为后端模型设计,编程语言选了简单易懂的python,用Django作为后端框架进行开发,此框架是python web系统开发的首选框架,简单易用。
第三层为算法的设计与实现的逻辑,用协同过滤算法来实现,第四层为数据库表的设计,用SQLite数据库。
本系统web端的功能模块,主要实现影片显示、影片分类显示、热门影片排序显示、收藏影片排序显示、时间排序显示、评分排序显示、算法推荐、影片搜索、影片信息管理等功能,并进行数据库的详细设计,完成设计阶段的各项功能,并对此系统进行功能测试,最后,系统进行相关的实际应用操作,通过系统的使用,用户进入电影推荐系统,此系统可以根据用户对电影所打的标签行为,给用户推荐用户所感兴趣的电影,准确率在百分之75左右,用户可以查看信息,观看影片,给影片评分等操作,本系统基本上完成了预期的基本功能。

电影推荐系统运行说明书
安装运行方法
1.解压项目,解压的文件夹目录下有movie,用pycharm打开movie目录。
2.在pycharm配置python解释器,3.7及以下都可以。可以通过conda或者其他的虚拟环境来安装。
3.打开终端 输入pip install -r requirements.txt 若提示无pip。去下载get-pip.py 运行python get-pip.py
4.安装成功后, 使用pip list 查看已经安装好的package,和requirements.txt中的进行对比,确认安装无误。
有两种运行方法:
1.通过命令行/cmd运行: python manage.py runserver
2.通过Pycharm专业版配置运行,右上角选中movie,一键运行,第一次运行时间可能比较长,因为需要将item_recommend的相似矩阵计算出来。将模型保存到本地。
技术介绍:
前端: bootstrap3 + js+ jquery
后端: django 2.2.1 +  django--rest-framework  (MVC框架)
数据库: sqlite3
算法:协同过滤推荐算法
豆瓣数据集
通过爬虫去抓取豆瓣电影网站的电影信息,带有图片
id,title ,image-link ,country ,years ,director-description,leader,star ,
description,alltags,imdb,language,time-length
电影数量: 2250
功能介绍:
电影展示,标签分类,详情介绍,电影搜索
用户的登录,注册,修改信息
用户对电影的打分,收藏,评论
基于user和Item的协同过滤推荐算法
后台管理系统

算法简介
冷启动问题解决
推荐值: 相似度*评分 根据用户点赞过得商品来寻找相似度推荐。计算每个点赞过的物品和所有未点赞物品之间的得分。得分=相似度*打分值分越高表示越相似。 然后返回结果。
项目文件介绍
media/ 静态文件存放处,图片
movie/ Django的默认app,负责设置的配置还有url路由,部署等功能
static/ css文件和js文件的存放处
user/ 主app,程序的所有代码基本都在这下面 user/migrations为自动生成的数据库迁移文件 user/templates为前端页面模板文件, user/admins.py 为管理员后台代码 user/forms.py为前端表单代码 user/models.py为数据库orm模型 user/serializers.py为restful文件,不用管。 user/urls为路由注册文件。 user/views为负责处理前端请求和与后端数据库交互的模块,也就是controller模块。
cache_keys.py为缓存的key值名称存放文件,不用管。
db.sqlite3数据库文件
douban_crawler.py 豆瓣爬虫文件
manage.py 运行的主程序,从这里启动
Populate movies script.py 填充电影数据到数据库中
Populate user rate.py 随机生成用户评分
recommend_movies.py为推荐算法的部分
model: recommend模型存放的位置
后台管理
通过创建管理员进入后台,已经自带管理员用户名和密码均为admins。
同时可以通过 python manage.py createsuperuser 在终端交互输入用户名和密码即可
创建超级管理员, (密码输入时终端暂时显示)
进入后台: 127.0.0.1:8000/admin

三、各功能代码位置介绍:
标签分类: 数据库设计Movie通过外键关联Tags表,
电影搜索: 在views.py search方法中。通过电影名,导演名,介绍去进行关键字搜索。
后台管理: 通过django自带的admin后台加插件 在admins.py中注册数据库模型
两种推荐算法: 都在recommend_movies.py文件中。
推荐显示的代码:
前端: items.html
后端: views.py中 388行 user_recommend 传递数据到前端template
算法:recommend_movies.py。
依赖包和框架版本
(venv) E:\2021movie>pip list
Package             Version
aiohttp             3.7.4.
asgiref             3.3.4
async-timeout       3.0.1
attrs               21.2.0
beautifulsoup4      4.9.3
bs4                 0.0.1
certifi             2020.12.5
chardet             4.0.0
crawler             0.0.2
Django              2.2.10
django-simpleui     2.1
djangorestframework 3.9.1
greenlet            1.1.0
idna                2.10
idna-ssl            1.1.0
importlib-metadata  4.0.1
lxml                4.6.3
multidict           5.1.0

About


Languages

Language:Python 45.2%Language:HTML 37.6%Language:CSS 15.6%Language:JavaScript 1.6%