综合设计——多源异构数据采集与融合应用综合实践

发布时间 2023-12-14 22:17:19作者: cyosyo
Q A
这个项目属于哪个课程 2023数据采集与融合技术
组名、项目简介 组名:喵喵队、项目需求:设计出一个交互友好的多源异构数据的采集与融合的小应用 、项目目标:通过在网页中上传文本、图片、视频或音频分析其中的情感 、项目开展技术路线:前端3件套、Python、fastapi
团队成员学号 102102143、102102140、102102141、102102152、102102117、102102114、102102121、102102132
这个项目目标 通过在网页中上传文本、图片、视频或音频分析其中的情感

项目整体介绍:

项目名称:多模态情感分析系统

项目背景:在当前的数字化时代,情感分析在各种应用中变得越来越重要,如客户服务、市场分析和社交媒体监控。多模态情感分析能够提供比单一模态更丰富、更准确的情感识别和分析。

项目目标:开发一个多模态情感分析系统,能够通过Bv号处理和分析文本、图片、音频和视频数据,从而提供综合的情感分析结果。

技术路线

  • 前端开发

    • 使用HTML、CSS和JavaScript进行界面设计,实现用户与系统的交互。

    • 通过用户给出的bv号进行查询

  • 后端开发

    • 使用Python进行后端逻辑的编写。

    • 利用Flask搭建简易后端框架。

  • 数据处理与分析

    • 文本分析:调用华为云NLP情感分析API。

    • 视频分析

      • 提取视频中的音频部分。
      • 对提取的音频进行分析,使用同音频分析的方法。
    • 音频分析

      • 使用openai开源的whisper进行音频分析。
      • 对上传的音频文件进行特征提取和情感识别。
  • 结果输出与展示:将分析结果通过前端界面展示。

最终效果:

通过在本地上传文件进行分析并且得到结果

自己分工:

我与同学合作开发后端部分,代码如下:

from flask import Flask, request, jsonify
from getdm import Crawler_Bilibili_Danmu
from hwNLP_ljx import HW_NLP
from hwNLP_ljx import SentimentAnalysis
from t import get_comment,get_cover
from getvideo import get_bilibili_video
from flask import Flask
from flask_cors import CORS, cross_origin
from flask import Flask, session
from flask_cors import CORS
import numpy as np

app = Flask(__name__)
cors = CORS(app)
 
app = Flask(__name__)
CORS(app, supports_credentials=True)


@app.route('/api', methods=['POST'])
def dm():
    c = Crawler_Bilibili_Danmu()

    data = request.get_json()
    print(data)
    bv = data.get('bv')
    print(bv)
    if bv is not None:
        dm = c.search_dm_from_bv(bv)#弹幕
        comment =  get_comment(bv)#评论
        # cover = get_cover(bv)#封面
        video_text = get_bilibili_video(bv)

        nlp = HW_NLP()
        r = nlp.nlp_fromList(dm) # r是弹幕的nlp
        r2 = nlp.nlp_fromList(comment) # r2是评论的nlp
        r3 = nlp.nlp_fromList(video_text) #r3 是音频文本的nlp
        sentiment_analysis = SentimentAnalysis()
        ar1=sentiment_analysis.analyze_result(r+r2) # 观众反馈
        ar2=sentiment_analysis.analyze_result(r3) # 视频内容


        c.reinit()
        
       
        return jsonify([ar1, # 观众反馈
            ar2 # 视频内容
            ]
        )
    else:
        return "Invalid request", 400



if __name__ == '__main__':
    app.run(debug=True)

gitee文件夹