分享一套【优质Python源码】基于Python的深度学习电影数据可视化+情感分析推荐系统(Flask+Vue+LSTM+scrapy爬虫)

19 阅读4分钟

大家好,我是python222_小锋老师,分享一套优质的基于Python的深度学习电影数据可视化+情感分析推荐系统(Flask+Vue+LSTM+scrapy爬虫)  。  

2.jpg

项目简介

本项目旨在基于深度学习LSTM(Long Short-Term Memory)模型,基于python编程语言,Vue框架进行前后端分离,结合机器学习双推荐算法、scrapy爬虫技术、PaddleNLP情感分析以及可视化技术,构建一个综合的电影数据爬虫可视化+NLP情感分析推荐系统。通过该系统,用户可以获取电影数据、进行情感分析,并获得个性化的电影推荐,从而提升用户体验和满足用户需求。

首先,项目将利用scrapy爬虫框架从多个电影网站上爬取丰富的电影数据,包括电影名称、类型、演员信息、剧情简介等。这些数据将被存储并用于后续的分析和推荐。接着,使用PaddleNLP情感分析技术对用户评论和评分数据进行情感倾向性分析,帮助用户更全面地了解电影的受欢迎程度和评价。

在推荐系统方面,项目将结合深度学习LSTM模型和机器学习双推荐算法,实现个性化的电影推荐。

LSTM模型将用于捕捉用户的浏览和评分行为序列,从而预测用户的兴趣和喜好;双推荐算法则综合考虑用户的历史行为和电影内容特征,为用户提供更精准的推荐结果。此外,项目还将注重可视化展示,通过图表、图形等形式展示电影数据的统计信息和情感分析结果,让用户直观地了解电影市场趋势和用户情感倾向。同时,用户也可以通过可视化界面进行电影搜索、查看详情、评论互动等操作,提升用户交互体验。

综上所述,本项目将集成多种技术手段,构建一个功能强大的电影数据爬虫可视化+NLP情感分析推荐系统,为用户提供全方位的电影信息服务和个性化推荐体验。通过深度学习、机器学习和数据挖掘等技术的应用,该系统有望成为电影爱好者和观众们的理想选择,为电影产业的发展和推广起到积极的推动作用。

源码下载

链接: pan.baidu.com/s/1HQNwvVQf…

提取码: 1234

相关截图

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

8.jpg

核心代码

# -*- codeing = utf-8 -*-
# 

# 2/16 11:23
# 
# @File :userApi.py
# #Desc :这个是用户接口的文件
import json

from flask import Blueprint, request, flash, session, jsonify

from base.code import ResponseCode, ResponseMessage
from base.response import ResMsg
from base.core import db
from models.model import valid_login, valid_register, User, user_schema

userBp = Blueprint("user", __name__)

# 前端用来获取用户信息的接口
@userBp.route( '/userinfo', methods=["POST"])
def userinfo():
    res = ResMsg()
    username = request.json['username']
    user = User.query.filter(User.username == username).first()
    print(user)
    # data = dict(zip(user.keys(), user))
    data = user_schema.dump(user)
    res.update(code=ResponseCode.SUCCESS, data=data)
    return res.data

@userBp.route( '/get/<id>', methods=["GET"])
def get(id):
    res = ResMsg()
    user = User.query.filter(User.id == id).first()
    print(user)
    data = user_schema.dump(user)
    res.update(code=ResponseCode.SUCCESS, data=data)
    return res.data

# 登录接口,验证用户名和密码
@userBp.route( '/login', methods=["POST"])
def login():
    res = ResMsg()
    username = request.json['username']
    password = request.json['password']
    if valid_login(username, password):
        # flash(username + "登录成功")
        session['username'] = username
        userId = db.session.query(User.id).filter(User.username==username).first()
        # print(userId)
        res.update(code=ResponseCode.SUCCESS,msg=ResponseMessage.SUCCESS,data=userId[0])
    else:
        res.update(code=ResponseCode.ACCOUNT_OR_PASS_WORD_ERR,msg=ResponseMessage.ACCOUNT_OR_PASS_WORD_ERR)
    return res.data

# 注销接口,清除session中的用户名
@userBp.route( '/logout')
def logout():
    res = ResMsg()
    session.pop('username', None)
    return res.data

# 用户注册接口,前端提供表单给这个接口后完成注册,会验证用户名是否存在
@userBp.route('/register', methods=["POST"])
def register():
    res = ResMsg()
    username = request.json['username']
    password = request.json['password']
    realname = request.json['realname']
    if valid_register(username):
        user = User(username=username, password=password, realname=realname)
        db.session.add(user)
        db.session.commit()
        res.update(code=ResponseCode.SUCCESS)
    else:
        res.update(code=ResponseCode.USERNAME_ALREADY_EXIST, msg=ResponseMessage.USERNAME_ALREADY_EXIST)
    return res.data

@userBp.route('/idconfirm', methods=["POST"])
def idconfirm():
    res = ResMsg()
    id = request.json['id']
    idno = request.json['idno']
    realname = request.json['realname']
    db.session.query(User).filter(User.id == id).update({"idno": idno, "realname": realname})
    db.session.commit()
    res.update(code=ResponseCode.SUCCESS)
    return res.data

@userBp.route('/update', methods=["POST"])
def update():
    res = ResMsg()
    id = request.json['id']
    # realname = request.json['realname']
    phone = request.json['phone']
    email = request.json['email']
    avatar = request.json['avatar']
    intro = request.json['intro']
    addr = request.json['addr']
    age = request.json['age']
    print(id)
    db.session.query(User).filter(User.id == id).update({"phone":phone, \
                                                         "email":email,"avatar":avatar,"intro":intro,\
                                                         "addr":addr,"age":age})
    db.session.commit()
    res.update(code=ResponseCode.SUCCESS)
    return res.data

@userBp.route('/modifypass', methods=["POST"])
def modifypass():
    res = ResMsg()
    id = request.json['id']
    password = request.json['password']
    db.session.query(User).filter(User.id == id).update({"password": password})
    db.session.commit()
    res.update(code=ResponseCode.SUCCESS)
    return res.data

# 这个函数非常关键,由于数据库的连接数是有限的,所以在操作完之后,一定要关闭db连接
# 这个方法可以在请求完之后自动关闭连接,这样就不需要每个接口里手动写关闭连接接口
@userBp.after_request
def close_session(response):
    db.session.close()
    return response