标题:基于协同过滤的电影推荐系统

文档介绍:

  1. 绪 论

现如今科技的卓越发展,时代环境的大变革。人们生活变得越来越多元化,这种多元化很大程度上由互联网科技发展引起,日新月异的互联网让我们实现了众多的不可能。社会高速发展,快节奏下的高压生活,让人们更加注重精神层面的放松。彼时电影行业变得家喻户晓,更多人的选择观影这一途径来消解压力,寻求更多共鸣。这使电影推荐系统的问世成为了一件令人期待的事情。

1.1 课题的研究背景

电影推荐系统主要通过计算机网络,对所需的信息进行统一管理,方便用户随时随地浏览电影信息,并进行增添、修改、查询、删除各类信息。本系统极大的促进了系统与数据库管理系统软件之间的配合,满足了绝大部分用户的需求,给用户带来了很大的便利。以现在计算机的技术的应用,使计算机成为人们使用现代发达技术的桥梁。计算机可以有效的解决信息,十分方便的获取信息,从而提高工作的效率。

1.2 课题研究目的

全球经济在快速的发展,中国更是进步飞速,这使得国内的互联网技术进入了发展的高峰时期,这让中外资本不断转向互联网这个大市场。在这个信息高度发达的现在,利用网络进行信息管理改革已经成为了人们追捧的一种趋势。“电影推荐系统”是运用Python语言、爬虫技术和Django框架,以MySQL数据库为基础而发出来的。可以实现用户在线进行浏览电影信息,并进行在线发布留言、浏览电影资讯等。为保证我国经济的持续性发展,必须要让互联网信息时代在我国日益壮大,蓬勃发展。伴随着信息社会的飞速发展,电影推荐系统所面临的问题也一个接一个的出现,所以现在最该解决的问题就是信息的实时查询和访问需求的问题,以及如何利用快捷便利的方式让访问者在广大信息系统中进行查询、分享、储存和管理。这对我们的现实生活中具有非常重要的意义,所以电影推荐系统诞生了。

1.3 课题的研究意义

大数据时代已经到来,网络爬虫技术已成为这个时代不可或缺的一项技术,企业需要数据来分析用户行为、产品的不足之处以及竞争对手的信息等,而这一切的首要条件就是数据的采集。在互联网社会中,数据是无价之宝,一切皆为数据,谁拥有了大量有用的数据,谁就拥有了决策的主动权。如何有效地采集并利用这些信息成了一个巨大的挑战,而网络爬虫是自动采集数据的有效手段。网络爬虫是一种按照一定的规则,自动抓取互联网海量信息的程序或脚本。网络爬虫的应用领域很广泛,如搜索引擎、数据采集、广告过滤、大数据分析等。本次使用Python技术加网络爬虫技术,可以实现管理员对电影信息的快速管理,对电影行业的发展来说,是一个非常有意义的创新。

 

第2章  相关技术

本电影推荐系统的数据库采用的是MySQL数据库,并且选择了Python语言、网络爬虫技术、和Django框架进行开发项目,在项目开发过程中,实现了系统功能模块的安全性、实用性、稳定性、易维护和页面简单等特点。

2.1 Python简介

Python是由荷兰数学和计算机研究学会的吉多·范罗苏姆于20世纪90年代设计的一款高级语言。Python优雅的语法和动态类型,以及解释型语言的本质,使它成为许多领域脚本编写和快速开发应用的首选语言。Python相比与其他高级语言,开发代码量较小,代码风格简洁优雅,拥有丰富的第三方库。Python的代码风格导致其可读性好,便于维护人员阅读维护,程序更加健壮。Python能够轻松地调用其他语言编写的模块,因此也被成为“胶水语言”[3]。

Python的应用场合非常广泛,在科研领域中,可以用Python训练人工智能模型,也可以对实验数据进行数据分析。在生活中,Python提供了很多优秀的、开源的Web开发框架,例如Django、Flask、Pyramid、Tornado等。知乎、豆瓣网、Youtube等知名应用都是由Python为基础进行开发的。相比于其他框架,Django有着更加丰富的插件,作为企业级框架也很好上手,适合本次开发。此次电影推荐系统是开发一个Web应用,采用Django框架,将在下一节进行具体介绍。本次开发选用的是Python3.6.4版本。

2.2  Django框架

Django被官方称之为“完美主义者框架”,只需要很少的代码就能更快的完成一个优秀的Web应用[4]。Django采用了MTV框架模式,此模式根据MVC进行改进形成了更适于Django的设计模式。M为模型(Model)、T为模板(Template)、V为视图(View)。下面介绍部分Django的核心与优点:

  1. 对象关系映射(ORM,Object-Relation-Mapping):ORM的方法论有着三个核心原则:
  • 简单:以最基本的形式构建数据。
  • 传达性:数据库结构被任何人都能理解的语言文档化。
  • 精确性:基于数据模型创建正确标准化的结构。

用于Python之中即是以Python类形式定义数据模型,类中的每一个属性对应着数据库中的一列。引入ORM后,无需编写原生SQL语句,使用基于面向对象的思想去编写类、对象、调用方法等,ORM会将其映射成SQL语句通过pymysql执行。

  1. 路由配置(URLConf):Django的URL设置更加灵活优雅,看似复杂难懂,但使用的都是简单的正则表达式,你可以随心所欲的创造优美的、简洁的、专业

的地址。

  1. 模板(Template):模板可以理解为承载数据的工具,为了将数据从视图中分离出来,通过各种各样的标签来进行数据的传输。Django的模板融入了面向对象中继承的思想,提高了复用减少冗余代码。
  2. 视图(View):视图就是views.py中的函数,也就是逻辑代码,为了将URL和视图关联起来,用到了上述的URLConfs,URLConfs将URL模式映射到视图中,每个视图有两件事是必须要做的:返回一个包含被请求页面的HttpResponse对象,或者抛出一个异常。
  3. 后台管理系统(Django-Admin):Django提供的一个基于Web的管理工具。Django-Admin来自django.contrib也就是Django的标准库,默认被配置好,只需要激活启用即可,它的优势在于可以快速对数据库的各个表进行增删改查,一行代码即可管理一张数据库表,相比于手动后台1个模型一般需要4个urls,4个视图函数和4个模板,可以说Django完成了一个程序编写的大部分重复工作,并且对于图书管理这种以管理工作为重系统来说,极度契合。
  4. 应用(Application):当项目规模过大时,难免会产生目录过长,文件过多的问题,Django理念中的App可以将项目相对独立的进行开发,插拔的工作方式和独立性让开发者废弃的App即使删除也不会影响整体,是一种不可多得的理念。

因为本次使用的Python版本为3.6.4,低版本的Django不支持Python3,故此次使用的Django版本为3.2.12。

2.3 网络爬虫简介

  网络爬虫是一种很好的自动采集数据的通用手段。它主要分为4种类型,分别是:聚焦网络爬虫、增量抓取、表层网页、深层网页。

①聚焦网络爬虫是“面向特定主题需求”的一种爬虫程序,而通用网络爬虫则是捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分,主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。

②增量抓取意即针对某个站点的数据进行抓取,当网站的新增数据或者该站点的数据发生变化后,自动地抓取它新增的或者变化后的数据。

Web页面按存在方式可以分为表层网页(surface Web)和深层网页(deep Web,也称invisible Web pages或hidden Web)。

③表层网页是指传统搜索引擎可以索引的页面,即以超链接可以到达的静态网页为主来构成的Web页面。

④深层网页是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面。

本次使用的爬虫技术是聚焦网络爬虫,通过搜索引擎,抓取相关电影信息,下载到本地,形成互联网内容的镜像备份,提供用户浏览、查看。

2.4 MySQL简介

MySQL是一款小型关系型数据库管理系统(Relational Database Management System),开发商为瑞典MySQLAB公司。关系型数据库将数据存放在不同的表中,使数据更加规范化。MySQL因其体积小、速度快、源码开放的特点,很多网站开发都将MySQL作为首选[5]。由于Python3不再支持MySQLdb模块,此次开发采用pymysql模块连接MySQL数据库。

2.5小结

本章详细的介绍了开发电影推荐系统所需要的技术与工具,工欲善其事必先利其器,对于技术和工具了解的越多越清晰,才会在开发过程中如鱼得水。

第3章  系统分析

为满足用户的需求,本章分析系统开发的可行性,将从技术和操作等方面来判断,然后通过需求分析、系统流程分析来确定电影推荐系统的功能。

3.1 技术可行性分析

电影推荐系统在使用电脑和信息分析系统这些设计没有硬性要求,电脑只要是可以正常使用的话,那么代码和页面设计就是可行的。要求高的主要是服务器,平台上传服务器一定要选择性价比高和安全性高的,打开网站一定要顺滑不卡顿,所以硬件也是可行的[2]。

所以,从以上可行性分析可得,本系统的开发使没有问题的。

3.2  操作可行性分析

将根据管理系统中的用户体验和管理员的效率来分析该措施的可行性。管理人员和用户都可以通过简单的操作登录进对应的系统页面,方便用户搜索业务信息和管理人员管理数据,不需要特别懂电脑的人也可以轻松访问系统模块。该系统已完全投入使用。

3.3 需求分析

本电影推荐系统是为了提高用户查阅信息的效率和管理人员管理信息的工作效率,可以快速存储大量数据,还有信息检索功能,这大大的满足了用户和管理员这两者的需求。操作简单易懂,合理分析各个模块的功能,尽可能优化界面,让用户和管理员能使用环境更好的系统。

对比要实现的功能来分析出用户的需求,可以让用户在线对相关信息进行添加、修改、查看、删除,这不仅满足了用户的需求,还大大的节省了时间。因此,管理员的需求也应当考虑一下,尽可能提高管理员的工作效率。

3.4 项目设计目标

本防系统采用MySQL数据库和Python语言、网络爬虫技术、Django框架进行开发而成,极大程度上的保证了系统的稳定性。

3.4.1 关于系统的基本要求

(1)功能要求:管理人员可以对个人中心、用户管理、电影管理、留言板管理、系统管理等功能进行管理 [3]。用户登录系统后,可以在线浏览电影信息,对电影信息进行收藏、添加影评信息;还可以在线浏览电影资讯、修改个人信息等。

(2)性能:可以准确无误的在不同的操作系统中登录到用户或者管理员的相应界面进行轻松的操作[4]。

(3)环境要求:支持不同的操纵系统和不同的平台,可用于Windows系列、Vista系统等多种操作系统[5]。

3.4.2开发目标

本电影推荐系统的主要开发目标如下:

(1)减少后台管理人员的工作量,对用户的信息进行系统的管理;

(2)必须要方便快捷的查看搜索信息并管理信息;

(3)用户是具有多样性的,所以界面要设置的简单明了,操作更要方便快捷。

3.5 系统流程分析

系统登录流程图如图所示3-1所示。

图3-1 系统登录流程图

用户和管理员可以添加信息,内容没有问题之后按下确定键就添加成功了。添加信息流程图如图3-2所示.

图3-2 添加信息流程图

用户可以选择把自己发布的信息删掉,选择要删除的信息,确认之后,删除信息的操作就完成了。删除信息流程图如图3-3所示。

图3-3 删除信息流程图

3.6 本章小结

本章主要是对电影推荐系统的可行性分析和所要实现的功能进行分析,在对一系列的系统可行性分析之后,又详细的讲述了项目的目标与原则,让人们深刻的了解电影推荐系统的设计思想,之后重点对登录模块、添加模块和删除模块的流程进行了详细的图文介绍。

第4章  系统设计

本章主要讲述的是电影推荐系统的设计开发结构,简单介绍了开发流程与数据库设计的原则以及数据表的关系结构图,并且详细的展示了数据表的内部结构信息与属性。

4.1 系统体系结构

系统启动后,在登录界面,输入正确的账号密码,选择进入管理员界面或用户界面,管理员界面是用来管理页面与用户信息,用户界面可以正常的使用,并对个人信息、登录密码、电影信息等进行份内的操作,系统登录结构图如图4-1所示。

图4-1 系统登录结构图

管理员模块属于是网站的后台,进入之后有大量的管理员功能,管理员也可以使用用户模块的功能,为了维护网站的稳定与页面的布局,将管理员模块的功能详细化后可以使用系统管理对页面进行布局修改,可以发布公告提示用户规范,用户模块只可以对个人信息、登录密码、电影信息等进行管理等,并且进行在线发布影评信息等,电影推荐系统总体结构图如图4-2所示。

图4-2 电影推荐系统总体结构图

4.2  开发流程设计

系统的开发流程设计简单的介绍了开发过程,先对任务书进行分析,根据要实现的功能对各个模块进行开发,之后再对模块一一进行测试,测试成功后将模块整合再测试整体功能,完善整体结构[6]。开发系统流程图如图4-3所示。

图4-3开发系统流程图

4.3  数据库设计原则

数据库设计之后,根据数据库关系,可以更加清晰地了解到数据库结构,每一个数据表之间的关系,再创建数据表。快速更改和查询对应的信息,有了数据库就不用在程序和代码中寻找。

分析电影推荐系统的数据结构后,在E-R图中分析管理员登录时的模式,需要输入用户名与密码,管理员信息E-R如图4-4所示。

图4-4 管理员信息E-R图

用户E-R图如图4-5所示。

图4-5用户E-R图

电影信息E-R图如图4-6所示。

图4-6电影信息E-R图

电影资讯E-R图如图4-7所示。

图4-7电影资讯E-R图

4.4  数据表信息

在关系数据E-R图中,分析并创建数据表,数据表用来记录信息,数据表关系由多个数据表组成,下面介绍的是数据表各个字段信息如下表所示。

表4-1:电影信息表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

mingcheng

varchar

200

电影名称

leixing

varchar

200

类型

fengmian

longtext

4294967295

封面

laiyuan

varchar

200

来源

diqu

varchar

200

地区

yuyan

varchar

200

语言

pingfen

varchar

200

评分

bianju

varchar

200

编剧

daoyan

varchar

200

导演

zhuyan

longtext

4294967295

主演

pianchang

varchar

200

片长

shangyingriqi

varchar

200

上映日期

yugaopian

longtext

4294967295

预告片

xiangqing

longtext

4294967295

详情

clicktime

datetime

最近点击时间

表4-2:关于我们表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

subtitle

varchar

200

副标题

content

longtext

4294967295

内容

picture1

varchar

200

图片1

picture2

varchar

200

图片2

picture3

varchar

200

图片3

表4-3:电影资讯表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

title

varchar

200

标题

introduction

longtext

简介

picture

longtext

图片

content

longtext

内容

表4-4:by8ev_movie表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

0

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

daoyan

varchar

200

导演

bianju

varchar

200

编剧

zhuyan

longtext

4294967295

主演

leixing

varchar

200

类型

diqu

varchar

200

地区

yuyan

varchar

200

语言

shangyingriqi

varchar

200

上映日期

pianchang

varchar

200

片长

pingfen

varchar

200

评分

xiangqing

longtext

4294967295

详情

fengmian

longtext

4294967295

封面

mingcheng

varchar

200

电影名称

laiyuan

varchar

200

来源

表4-5:用户信息表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

zhanghao

varchar

200

账号

mima

varchar

200

密码

xingming

varchar

200

姓名

xingbie

varchar

200

性别

dianhua

varchar

200

电话

touxiang

longtext

4294967295

头像

表4-6:留言板信息表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

 主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

留言人id

username

varchar

200

用户名

avatarurl

longtext

4294967295

头像

content

longtext

4294967295

留言内容

cpicture

longtext

4294967295

留言图片

reply

longtext

4294967295

回复内容

rpicture

longtext

4294967295

回复图片

表4-7:用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

表4-8:收藏表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

userid

bigint

用户id

refid

bigint

商品id

tablename

varchar

200

表名

name

varchar

200

名称

picture

longtext

图片

type

varchar

200

类型(1:收藏,21:赞,22:踩,31:竞拍参与,41:关注)

1

inteltype

varchar

200

推荐类型

remark

varchar

200

备注

4.5  本章小结

本章具体讲述了系统的大体结构,主要包括用户和管理员两大系统模块,使其各个功能简洁明了。同时对数据库的设计原则进行分析,从而提高了系统的效率。

第5章  系统实现

本章讲述的是系统对各个模块功能实现的效果图,对前台、管理员功能和用户功能分别进行了展示,页面布局清晰,操作简单快捷,基本实现了对用户和管理员对系统的需求。

5.1系统前台功能实现

当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到电影推荐系统的导航条、轮播图、搜索栏等。系统首页界面如图5-1所示:

图5-1 系统首页界面

这是一个用户注册的界面,当用户没有账户时可以通过注册来登录系统,只需要根据相应的提示,输入相关信息即可。用户注册界面如图5-2所示:

图5-2 用户注册界面

用户通过注册、登录到系统前台后,在电影信息列表页面输入电影名称、类型、地区、主演、上架日期等进行查询的操作;在电影信息详情页面,用户可以查看电影信息详细信息,并进行在线收藏、点评等操作;点击来源,可以跳转到片马影院浏览更多电影信息,具体操作页面如下图所示:

图5-3电影信息搜索页面

图5-4电影信息详情页面

点击留言板,用户可以浏览其他人发布的留言信息,也可以通过输入内容、上传图片进行在线留言的操作,具体操作页面如图5-5所示:

图5-5留言板页面

在个人中心页面,用户可以更新个人详细信息,并对我的收藏内容进行查看、删除的操作;个人中心页面如下图所示:

图5-6 个人中心界面

图5-7 我的收藏界面

5.2后台管理员模块实现

后台管理员登录,在登录页面选择需要登录的角色,在正确输入用户名和密码后,进入操作系统进行操作;如图5-8所示。                               

图5-8管理员登录界面

管理员进入主页面,主要功能包括对个人中心、用户管理、电影管理、留言板管理、系统管理等进行操作。管理员主页面如图5-9所示:

图5-9管理员主界面

管理员点击用户管理,进入用户管理页面输入账号、姓名进行查询操作,管理员还能对用户信息进行新增、修改和删除操作;具体操作如图5-10所示:

图5-10用户管理界面

管理员点击电影管理,进入电影管理页面,通过输入电影名称、类型、地区、主演、上映日期可以查询相关信息,并进行新增、修改、删除、查看评论、爬取数据等操作。其操作页面如下图所示:

图5-11电影管理界面

在电影管理页面,点击爬取数据,系统会自动爬取电影名称、类型、封面、来源、地区、语言、评分等电影详情,管理员爬取的电影信息会在前台显示,电影数据爬取页面如图5-12所示:

图5-12数据爬取界面

在留言板管理页面,管理员可以查看用户的留言,并进行修改、回复、删除的操作,其页面如图5-13所示:

图5-13留言板管理界面

管理员点击系统管理,可以对轮播图管理、电影资讯、系统简介等进行详细操作;具体操作如图5-14所示:

图5-14系统管理界面

此页面是看板页面,管理员点击看板,进入到看板页面,可以通过电影总数、电影类型、地区统计、语言统计、导演统计、编剧统计、主演统计等图形,管理员通过这些图形可以清晰了解电影情况,并根据需求进行下一步的管理操作,看板页面5-15所示:

图5-15看板界面

5.3  本章小结

本章讲述了电影推荐系统的实现,并把用户和管理员两大功能模块用图片的形式展示出来并一一解读了其中的功能。设计的页面简洁,布局清晰,操作十分快捷,极大程度的节约了操作时间。

更多推荐