计算机毕业设计hadoop+spark+hive漫画推荐系统 动漫视频推荐系统 漫画分析可视化大屏 漫画爬虫 漫画推荐系统 漫画爬虫 知识图谱 大数据

课题名称

基于hadoop+spark的漫画推荐与可视化系统

课题类型

设计

课题性质

结合实际

课题来源

自拟

横、纵向项目名称

项目编号

项目来源

导师姓名

黄亮

职称

有否科研背景

有否实际工程背景

所在单位

数学与计算机学院

所学专业

上机时数

384(小时)

目的要求

  • 数据处理和分析:利用Hadoop和Spark的大数据处理能力,对大量的漫画数据进行处理和分析,包括用户行为数据、漫画内容数据等,以提取有用的信息。
  • 用户行为分析:通过对用户行为数据的分析,包括浏览、收藏、评价、分享等,挖掘用户的兴趣和需求,为推荐系统提供依据。
  • 漫画数据分析:对漫画内容进行深度分析,以提取其特征和关键信息,为推荐和可视化提供支持。
  • 推荐系统:基于用户行为分析和漫画内容分析的结果,构建一个高效的推荐系统,向用户推荐他们可能感兴趣的漫画作品。
  • 可视化系统:通过可视化的方式,将处理和分析的结果展示出来,包括用户行为分析结果、漫画内容分析结果等,以帮助用户更好地理解和分析数据。
  • 实时推荐:利用Spark的实时处理能力,实现实时推荐,能够及时向用户推荐他们可能感兴趣的漫画作品。
  • 性能优化:在整个系统的设计和实现过程中,需要考虑性能的优化,包括数据处理速度、推荐准确率、系统响应时间等。
  • 隐私保护:对用户数据进行脱敏处理,保护用户隐私。
  • 系统可扩展性:在设计时考虑系统的可扩展性,以便在未来的需求变化或数据增长时能够灵活地扩展系统。
  • 安全性:确保系统的安全性,包括数据安全、系统安全和用户隐私保护等方面。

主要内容

  • 前台系统:漫画推荐(提供四种算法模型分别实现,协同过滤算法的基于用户+基于物品、神经网络混合推荐算法、SVD)、漫画视频流量预测(卷积神经网络/线性回归算法进行预测)、漫画视频查询、漫画视频在线观看、模拟VIP充值观看(支付宝沙箱支付)、通过短信验证码修改密码、LSTM情感分析模型分析用户评论等;
  • 后台系统:用户管理、漫画视频管理、评论管理、订单管理、日志管理、权限管理、视频知识图谱(neo4j图数据库实现)等;
  • 可视化大屏系统:热门漫画视频分类、热门漫画话题饼图、漫画分享量Top10、每日漫画视频播放量折线图、漫画词云、漫画投币量排行榜等;
  • 爬虫:Python的selenium框架采集B站/知音漫客的漫画视频、评论等数据集;

预期

目标

(一)Selenium自动化Python爬虫工具采集漫画视频等约10万条存入.csv文件作为数据集;

(二)使用pandas+numpy或MapReduce对数据进行数据清洗,生成最终的.csv文件并上传到hdfs;

(三)使用hive数仓技术建表建库,导入.csv数据集;

(四)离线分析采用hive_sql完成,实时分析利用Spark之Scala完成;

(五)统计指标使用sqoop导入mysql数据库;

(六)使用Flask+echarts进行可视化大屏开发;

(七)使用机器学习、深度学习的算法进行个性化漫画视频推荐;

(八)使用卷积神经网络KNN、CNN实现漫画视频流量预测;

(九)搭建springboot+vue.js前后端分离web系统进行个性化推荐界面、漫画视频流量预测界面、知识图谱等实现;

教研室审查小组意见

本课题能否满足综合训练学生的教学要求

课题中有无基本工程训练内容,份量多大(限于理工专业)

本课题的要求、任务、内容是否明确、具体

进行本课题现有实施条件是否具备

工作量是否饱满,课题难度是否适中

进行本课题尚缺的条件本单位能否解决

对本课题的评审结论:

教研室主任(签字):

20   年  月  日

院系审定意见

院长(系主任)(签字):

                                           20   年  月  日

核心算法代码分享如下:

import csv

import pymysql
import requests
connect = pymysql.connect(host="bigdata",port=3306, user="root",
                                           password="123456", database="hive_zymk")

cur = connect.cursor()
cur.execute("select * from tb_zymk " )
rv = cur.fetchall()
lines=0
for result in rv:
    id=result[0]
    title=result[1]
    update_times=result[2]
    tags=result[3]
    content=result[4]
    readings=result[5]
    subscribes=result[6]
    rewards=result[7]
    monthtickets=result[8]
    recommends=result[9]
    comments=result[10]
    scores=result[11]
    author=result[12]
    zps=result[13]
    ctime=result[14]
    img=result[15]
    url=result[16]

    #title字段去掉特殊字符
    title = title.strip().replace(',', ',').replace('"', '').replace("'", '').replace("\n", '').replace('\r', '').replace('\t', '')
    # 内容字段去掉特殊字符
    content = content.strip().replace(',', ',').replace('"', '').replace("'", '').replace("\n", '').replace('\r', '').replace('\t', '')
    #zps
    zps = zps.strip().replace(',', ',').replace('"', '').replace("'", '').replace("\n", '').replace('\r', '').replace('\t', '')
    # 阅读量替换汉字数值入亿 万
    temp_readings=readings
    if '亿' in readings:
        temp_readings=float(readings.replace('亿',''))*100000000
    elif '万' in readings:
        temp_readings = float(readings.replace('万', '')) * 10000
    readings = str(int(temp_readings))

    #订阅量subscribes
    temp_subscribes=subscribes
    if '亿' in subscribes:
        temp_subscribes=float(subscribes.replace('亿',''))*100000000
    elif '万' in subscribes:
        temp_subscribes = float(subscribes.replace('万', '')) * 10000
    subscribes = str(int(temp_subscribes))

    #打赏rewards
    temp_rewards=rewards
    if '亿' in rewards:
        temp_rewards=float(rewards.replace('亿',''))*100000000
    elif '万' in rewards:
        temp_rewards = float(rewards.replace('万', '')) * 10000
    rewards = str(int(temp_rewards))

    #monthtickets月票
    temp_monthtickets=monthtickets
    if '亿' in monthtickets:
        temp_monthtickets=float(monthtickets.replace('亿',''))*100000000
    elif '万' in monthtickets:
        temp_monthtickets = float(monthtickets.replace('万', '')) * 10000
    monthtickets = str(int(temp_monthtickets))

    #recommends 推荐数
    temp_recommends=recommends
    if '亿' in recommends:
        temp_recommends=float(recommends.replace('亿',''))*100000000
    elif '万' in recommends:
        temp_recommends = float(recommends.replace('万', '')) * 10000
    recommends = str(int(temp_recommends))


    #ctime需要去掉空格
    ctime=ctime.strip()
    if update_times == None or len(update_times) == 0 or update_times == '' or update_times == 'None':
        update_times = '无'
    #tags标签字段拆分
    # 标签
    tags_arr=tags.split('|')
    for tag in tags_arr:
        print(tag)
        zps_arr = zps.split('|')
        for zp in zps_arr:
            print(zp)
            zymk_file = open("zymk.csv", mode="a+", newline='', encoding="utf-8")
            zymk_writer = csv.writer(zymk_file)
            zymk_writer.writerow(
                [id,title,update_times,tag,content,readings,subscribes,rewards,monthtickets,recommends,comments,scores,author,zp,ctime,img,url])
            zymk_file.close()
            print('国产动漫转CSV',id,title,update_times,tag,content,readings,subscribes,rewards,monthtickets,recommends,comments,scores,author,zp,ctime,img,url)
            lines=lines+1
            print('正在处理,当前总计处理数据', lines,'条')
print('全部处理完毕','处理数据量',lines,'条')


  • 26
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B站计算机毕业设计1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值