基于Django的知识图谱电影推荐系统

基于Django的知识图谱电影推荐系统

项目概述

本项目基于Django框架构建,旨在提供一个高效且智能的电影推荐系统。系统基于知识图谱技术,结合图数据库Neo4j,实现对电影数据的深入挖掘与个性化推荐,提升用户体验和推荐准确性。

主要目的和价值

  • 智能推荐:利用基于Neo4j的协同过滤算法,精准挖掘用户兴趣,实现个性化电影推荐。
  • 知识图谱支持:通过电影的关系构建知识图谱,丰富电影间的关联信息,便于深度推荐与查询。
  • 便捷的数据采集与管理:集成爬虫模块自动获取电影信息,并通过电影信息管理模块处理和展示。
  • 完善的用户管理:系统提供完整的用户注册、登录、个人信息维护及后台管理功能,确保安全与可控。
  • 友好的用户界面:基于Django模板系统和Bootstrap前端框架,实现动态而响应式的网页展示。

解决的核心问题

  • 数据自动化采集:减少人工输入电影数据的工作量,通过爬虫模块获取丰富、结构化的电影数据。
  • 推荐准确性:借助图数据库支持和协同过滤算法,解决传统推荐中冷启动和数据稀疏问题。
  • 用户身份安全管理:系统安全管理用户身份和权限,保障推荐服务的个性化和安全性。
  • 用户交互体验:通过动态模板渲染和多功能页面,增强用户的使用便捷性与体验感。

目标用户群体

  • 电影爱好者及观众:为其提供个性化的电影推荐与详细电影信息查询。
  • 系统管理员:提供后台管理支持,便于维护用户和电影数据。
  • 数据采集及分析人员:爬虫模块及数据存储方便进行后续数据利用和分析。

技术架构

整体架构设计

系统采用典型的三层架构设计:

  • 数据采集层:由spider模块实现,负责电影数据的自动爬取与初步清洗。
  • 业务逻辑层movieappaccounts模块组成,分别负责电影信息管理、推荐算法及用户认证与管理。movieapp通过Neo4j实现知识图谱及推荐服务。
  • 表现层:基于Django模板系统的templates目录,负责动态网页渲染和用户交互,配合静态资源管理实现美观且响应式的前端界面。

主要技术栈

  • 后端框架:Django
  • 数据库:MySQL(关系型数据存储),Neo4j(图数据库用于知识图谱和协同过滤)
  • 爬虫:Python requests + BeautifulSoup + concurrent.futures多线程
  • 前端:Django模板语言(DTL),Bootstrap,Javascript及相关前端资源(CSS, JS)
  • 富文本编辑:ckeditor富文本编辑器
  • 用户认证:基于Django内置认证系统,用户模型扩展
  • 推荐算法:基于Neo4j的图查询协同过滤实现个性化推荐

模块间的关系和交互

  • spider 爬取的电影数据以CSV格式存储,为movieapp模块电影数据导入提供原始数据。
  • movieapp管理电影数据,关联accounts的用户模型,实现用户评分、评论及推荐。
  • accounts模块管理系统所有用户身份与访问权限,支撑业务层用户操作安全。
  • templates目录中的各HTML页面与accountsmovieapp视图相关联,呈现动态内容与交互。
  • movieapp中的pyneo_utils.py直接调用Neo4j图数据库进行推荐计算。

功能模块

1. accounts模块

  • 用户注册:通过RegForm表单创建新用户,扩展头像及自定义密码字段。
  • 用户登录/登出:验证用户身份,并管理登录状态。
  • 个人信息维护:查看和更新用户基本信息与头像。
  • 后台用户管理:提供管理界面,支持密码加密存储和用户权限管理。
  • 安全控制:通过装饰器限制页面访问权限,保障用户信息安全。
  • 路由管理:配置用户相关请求路径映射。

2. spider模块

  • 电影数据爬取:采用pachong.py执行多线程爬取,抓取电影详情、海报、评分等。
  • 数据解析与清洗:利用BeautifulSoup和正则表达式规范爬取内容。
  • 数据存储:保存结构化的CSV文件,支持后续导入和分析。

3. movieapp模块

  • 电影信息管理:管理电影类别、地区、评分、评论等多样化信息。
  • 电影展示:提供电影列表、详细页面、搜索和分页功能。
  • 用户交互:支持用户评分和评论功能,关联用户账号。
  • 智能推荐:基于Neo4j图数据库实现的协同过滤算法,精准推荐符合用户口味的电影。
  • 后台管理:管理员可维护电影及关联数据。
  • 路由配置:定义电影相关的URL匹配和视图对应关系。

4. templates模块(前端模板)

  • 页面框架base.html提供统一页面布局与静态资源引用。
  • 核心页面:包括首页 (index.html), 推荐页面 (recommend.html), 详情页 (detail.html) 和用户管理相关页面 (login.html, register.html, my_info.html)。
  • 交互组件:分页导航(pagination.html)、错误提示(error.html)等,提升用户界面友好度。
  • 表单与查询show.html实现知识图谱节点查询功能,支持前端数据动态获取。
  • 技术实现:借助Django模板语法,实现内容复用与动态渲染,结合Bootstrap实现响应式设计。

模块间协作关系

  • accounts提供安全的用户身份控制,为movieapp的评分和评论功能提供用户认证支撑。
  • spider负责采集数据,供movieapp导入使用,保证数据的时效性与完整性。
  • movieapp执行业务逻辑,将结果通过templates展示给最终用户。
  • 前端模板通过页面请求交互,实现用户登录、电影查询、评分、评论及推荐的完整用户流程。

项目结构

xy25_film_recommend/
├── accounts/             # 用户认证与管理模块
├── movieapp/             # 电影信息管理和推荐核心模块
├── spider/               # 爬虫模块,负责数据采集
├── templates/            # 前端HTML模板
├── static/               # 项目静态资源(CSS, JS, 图片)
├── media/                # 用户上传文件和动态图片资源
├── datas/                # 存放爬虫导出的CSV数据文件
├── xy_movie_recommend/   # 项目配置和启动文件
├── manage.py             # Django命令行工具入口
├── requirements.txt      # 依赖包列表
└── .venv/                # 虚拟环境

关键目录和文件说明

  • accounts/models.py:定义扩展用户模型(UserProfile)。
  • movieapp/models.py:电影、类别、评分及评论数据模型定义。
  • movieapp/pyneo_utils.py:Neo4j协同过滤推荐算法实现。
  • spider/pachong.py:爬虫核心脚本,实现多线程电影信息抓取。
  • templates/:前端页面模板,易于维护和界面定制。
  • static/:前端样式和脚本,统一管理品牌样式和交互效果。
  • media/:用户头像和电影相关图片文件存储。
  • xy_movie_recommend/settings.py:Django全局配置,包括数据库、中间件、静态和媒体文件设置。
  • manage.py:Django项目管理命令入口,支持项目运行、迁移等操作。

部署和运行

环境要求

  • Python 3.9+
  • Django 3.2+
  • MySQL数据库
  • Neo4j图数据库
  • 虚拟环境推荐使用 .venv
  • 依赖库:requests, beautifulsoup4, py2neo, ckeditor 等,详见 requirements.txt

安装和配置步骤

  1. 创建并激活虚拟环境
   python3 -m venv .venv
   source .venv/bin/activate    # Linux/Mac
   .venv\Scripts\activate       # Windows
  1. 安装依赖
   pip install -r requirements.txt
  1. 数据库配置
  • 配置MySQL数据库连接,更新xy_movie_recommend/settings.py中的数据库参数。
  • 安装并配置Neo4j,确保Neo4j服务可用,修改movieapp/pyneo_utils.py中的连接参数。
  1. 初始化数据库
   python manage.py makemigrations
   python manage.py migrate
  1. 导入初始数据
  • 使用spider模块生成的CSV数据导入movieapp数据库。
  • 根据项目需求运行导入脚本或管理命令。
  1. 创建超级管理员
   python manage.py createsuperuser

启动方式

python manage.py runserver

默认访问地址为 http://127.0.0.1:8000/,即可访问系统首页并进行后续操作。


总结

基于Django的知识图谱电影推荐系统结合了现代网页应用和图数据库技术,贯穿自动数据收集、关系建模、个性化推荐和安全用户管理等多个关键环节,形成了从数据采集到智能推荐的完整生态。系统架构清晰,模块划分合理,有效支撑了电影信息的维护和深度挖掘。前端页面设计美观且易用,面向广大电影用户和管理员提供优质服务。此项目不仅提升了电影推荐的体验和精准度,也展示了知识图谱在推荐领域的广泛应用潜力。


如有问题请联系作者:https://qalangtao.com 。

1000

图片[1]-基于Django的知识图谱电影推荐系统
图片[2]-基于Django的知识图谱电影推荐系统
图片[3]-基于Django的知识图谱电影推荐系统
图片[4]-基于Django的知识图谱电影推荐系统
图片[5]-基于Django的知识图谱电影推荐系统
图片[6]-基于Django的知识图谱电影推荐系统
图片[7]-基于Django的知识图谱电影推荐系统
图片[8]-基于Django的知识图谱电影推荐系统
图片[9]-基于Django的知识图谱电影推荐系统
图片[10]-基于Django的知识图谱电影推荐系统
图片[11]-基于Django的知识图谱电影推荐系统
图片[12]-基于Django的知识图谱电影推荐系统
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享