电影推荐系统 (深度学习+推荐算法)Python爬虫 大数据毕业设计✅

184 篇文章 45 订阅
178 篇文章 9 订阅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏)

毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总

🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅

1、项目介绍

技术栈:
Python语言、Vue前端框架、Flask后端框架、深度学习LSTM算法、 豆瓣电影、Echarts 可视化分析、scrapy爬虫、影评情感分析、MySQL数据库、双协同过滤推荐算法(基于用户和基于物品)

2、项目界面

(1)电影数据可视化分析—柱状图、南丁格尔玫瑰图

在这里插入图片描述

(2)电影数据可视化分析—面积图、曲线图

在这里插入图片描述

(3)电影数据展示

在这里插入图片描述

(4)电影年份类型评分分析(散点图)

在这里插入图片描述

(5)深度学习LSTM算法情感分析

在这里插入图片描述

(6)影评情感分析

在这里插入图片描述

(7)注册登录界面

在这里插入图片描述

3、项目说明

电影数据采集分析推荐系统是一个基于Python语言、Vue前端框架和Flask后端框架开发的应用。系统利用scrapy爬虫技术从豆瓣电影网站上获取电影相关数据,并结合MySQL数据库进行存储和管理。

在数据采集完成后,系统利用深度学习LSTM算法对电影影评进行情感分析,以了解用户对电影的评价和情感倾向。这有助于推荐系统根据用户的喜好和情感偏好为其提供个性化的电影推荐。

为了更好地展示和分析电影数据,系统还使用Echarts可视化分析工具,将采集到的数据以图表的形式进行展示,帮助用户更直观地理解电影的相关信息和趋势。

而在为用户提供电影推荐时,系统采用协同过滤推荐算法,通过分析用户的历史行为和其他用户的喜好,找出相似的用户或电影,从而给出个性化的推荐结果。

总之,电影数据采集分析推荐系统是一个综合运用了Python语言、Vue前端框架、Flask后端框架、深度学习LSTM算法、豆瓣电影、Echarts可视化分析、scrapy爬虫、影评情感分析、MySQL数据库和协同过滤推荐算法的应用。通过数据采集、情感分析和个性化推荐,该系统为用户提供了更好的电影观影体验。

4、核心代码

import json
import os
import random
import time

from flask import Flask, request, jsonify, send_from_directory
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
from sqlalchemy.sql import func

from api.alipayApi import payBp
from api.baiduApi import idocr
from api.movieApi import movieBp
from api.orderApi import orderBp
from base.code import ResponseCode
from base.core import JSONEncoder
from base.response import ResMsg
from api.testApi import bp
from api.userApi import userBp

import logging

from deeplearning.predict_lstm import sentimentalAnalysis_single
from models.movie import getWords

# Flask配置
from utils.smsutil import Sms

app = Flask(__name__)
app.register_blueprint(bp, url_prefix='/test')
# 注册用户相关的方法
app.register_blueprint(userBp, url_prefix='/user')
# 注册电影相关的方法
app.register_blueprint(movieBp, url_prefix='/movie')
app.register_blueprint(payBp, url_prefix='/alipay')
app.register_blueprint(orderBp, url_prefix='/order')  # 订单接口

# 数据库配置信息
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@localhost/flask_douban_comment'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# 前端返回的JSON用ASCII编码关闭,否则浏览器里面看到的文本会是乱码
app.config['JSON_AS_ASCII'] = False
# Flask必须的配置
app.config['SECRET_KEY'] = 'KJDFLSjfldskj'


UPLOAD_FOLDER="upload"
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
basedir = os.path.abspath(os.path.dirname(__file__))
ALLOWED_EXTENSIONS = set(['txt','png','jpg','xls','JPG','PNG','gif','GIF'])

# 日志系统配置
# handler = logging.FileHandler('./error.log', encoding='UTF-8')
# logging_format = logging.Formatter(
#             '%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(lineno)s - %(message)s')
# handler.setFormatter(logging_format)
# app.logger.addHandler(handler)

# 返回json格式转换 使用这个的话就不需要每次都写json返回了,简化代码
app.json_encoder = JSONEncoder

# SQLAlchemy 为ORM框架,即用来简化操作数据库的包,具体内容需要学习ORM相关知识
db = SQLAlchemy(app)
# Marshmallow 是用来封装返回SQLAlchemy 的返回结果的,通过这个包可以直接把数据转成JSON,从而返回给前端使用
ma = Marshmallow(app)

# 一个测试的方法,可以测试服务器是否启动了
@app.route('/test')
def test():  # put application's code here
    res = ResMsg()
    test_dict = dict(name="zhang", age=19)
    res.update(data=test_dict, code=0)
    # data = dict(code=ResponseCode.SUCCESS,
    #             msg=ResponseMessage.SUCCESS,
    #             data=test_dict)
    return res.data
    # return jsonify(res.data)

# 用来捕捉服务器运行过程中的500-内部错误,并给前端返回信息
@app.errorhandler(500)
def special_exception_handler(error):
    app.logger.error(error)
    return '请联系管理员', 500

#判断文件后缀
def allowed_file(filename):
    return '.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS

@app.route('/file/upload', methods=['POST'], strict_slashes=False)
def api_upload():
    res = ResMsg()
    file_dir=os.path.join(basedir, app.config['UPLOAD_FOLDER'])
    if not os.path.exists(file_dir):
        os.makedirs(file_dir)
    f = request.files['myfile']
    if f and allowed_file(f.filename):
        fname = f.filename
        # fname = secure_filename(f.filename)
        print(fname)
        ext = fname.rsplit('.', 1)[1]
        unix_time = int(time.time())
        new_filename = str(unix_time)+'.'+ext
        f.save(os.path.join(file_dir, new_filename))
    res.update(data=new_filename, code=0)
    return res.data

@app.route('/file/idocr', methods=['POST'], strict_slashes=False)
def api_id_ocr():
    res = ResMsg()
    file_dir=os.path.join(basedir, app.config['UPLOAD_FOLDER'])
    if not os.path.exists(file_dir):
        os.makedirs(file_dir)
    f = request.files['myfile']
    if f and allowed_file(f.filename):
        fname = f.filename
        # fname = secure_filename(f.filename)  有中文这个会有问题
        # print(fname)
        ext = fname.rsplit('.', 1)[1]
        unix_time = int(time.time())
        new_filename = str(unix_time)+'.'+ext
        f.save(os.path.join(file_dir, new_filename))
        current_path = os.path.dirname(__file__)

        idno, name = idocr(current_path + '/upload/' + new_filename)
    res.update(data=dict(idno=idno,pic=new_filename,name=name), code=0)
    return res.data

@app.route('/file/download/<filename>/')
def api_download(filename):
    # print('下载..' + filename)
    return send_from_directory('upload', filename, as_attachment=False)

#阿里云短信接口
@app.route('/sms/sendSms', methods=['POST'])
def sendSms():
    res = ResMsg()
    phone = request.json['phone']
    code = random.randint(100000, 999999)
    response = json.loads(Sms().sendCode(phone, code))
    if response['Code'] == "OK":
        res.update(msg="发送成功", code=0, data=code)
    else:
        res.update(msg="发送失败", code=-1)
    return res.data

# 深度学习情感分析接口
@app.route('/deeplearning/senti_single', methods=['POST'])
def senti_single():
    res = ResMsg()
    data = request.json['data']
    datas = [data]
    print(datas)
    result = sentimentalAnalysis_single(datas)
    res.update(msg="成功", code=0, data=result)
    return res.data

if __name__ == '__main__':
    app.run(debug=True,host='0.0.0.0',port=8080)




源码获取:

🍅由于篇幅限制,获取完整文章或源码、代做项目的,查看我的【用户名】、【专栏名称】、【顶部选题链接】就可以找到我啦🍅

感兴趣的可以先收藏起来,点赞、关注不迷路,下方查看👇🏻获取联系方式👇🏻

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据基于用户画像电影推荐系统是一个涉及Python、Spark和Hadoop等技术的复杂项目。在这个毕业源码案例设计中,源代码包含了多个部分的实现。 首先,Python作为主要的编程语言之一,负责数据的处理和分析。通过Python的数据处理库,我们可以对用户的个人画像数据进行清洗和整合,包括用户的年龄、性别、观影习惯等信息。同时,Python也可以用来编写推荐算法和模型评估的代码。 其次,Spark作为大数据处理和分析的引擎,在这个项目中起着重要的作用。我们可以利用Spark来处理海量的用户观影行为数据,进行分布式计算和数据处理,快速生成用户画像和推荐模型。Spark的机器学习库也可以用来构建推荐系统模型,根据用户的画像特征为其推荐电影。 最后,Hadoop作为大数据存储和管理的平台,负责存储用户的个人画像数据、电影信息数据以及用户观影行为数据。通过Hadoop分布式文件系统(HDFS)和MapReduce计算框架,可以实现数据的高效存储和处理。 在这个毕业源码案例设计中,源代码会包括数据预处理的代码、推荐算法的实现、模型评估的代码,以及与Hadoop和Spark的交互代码等。这些源代码的编写将涉及到Python的数据处理和建模技术,Spark的分布式计算和机器学习技术,以及Hadoop的数据存储和管理技术。通过这些源代码的设计和实现,可以构建一个完整的大数据用户画像电影推荐系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值