毕业设计题目:Django+Vue 基于文本的情感分析:微博情绪倾向性研究

一、 项目概述

本项目旨在构建一个针对微博平台的文本情绪分析研究系统。系统通过爬虫获取微博数据,利用深度学习模型(如LSTM, BERT)对微博文本进行细粒度的情感倾向性分析(如正面、负面、中性),并通过Vue前端提供丰富的交互式可视化,以研究公众情绪随时间、事件、地域的变化规律,为舆情监控、社会心态研究等提供数据支持。

二、 系统核心功能
  1. 微博数据检索与分析

    • 支持按关键词、话题、用户、时间范围检索微博。

    • 系统自动对检索到的微博进行情感分析,并展示总体情感分布(如饼图)。

  2. 情感趋势追踪

    • 对特定关键词或话题的情感倾向进行时间序列分析,以折线图展示其情绪变化趋势,并与热点事件关联。

  3. 地域情绪分析

    • 根据微博用户的地理信息(如IP属地、定位),在地图上展示不同地区的情感热度(如全国情绪热力图)。

  4. 情感成因挖掘(词云)

    • 分别生成正面微博和负面微博的关键词词云,直观展示引发不同情绪的核心词汇。

  5. 模型管理与测试

    • 管理员功能:允许上传、训练和切换不同的情感分析模型。

    • 在线测试:提供一个输入框,允许用户输入任意文本进行实时情感分析,并展示模型预测结果和置信度。

  6. 数据导出:允许将分析结果(数据、图表)导出为报告。

三、 系统技术架构与模块设计

本项目采用前后端分离架构,后端负责核心算法与数据处理,前端负责交互与可视化。

text

[ 数据与算法层 ] -> [ 后端API层 (Django) ] -> [ 前端表现层 (Vue) ]
   微博爬虫          Django REST Framework     Vue 3 + Vite
   情感分析模型        (RESTful API)            Vue Router, Pinia
   (BERT/LSTM)        (JWT认证)                Element Plus
   数据库             (Celery异步任务)         ECharts / D3.js
 (MySQL/Redis)

1. 数据与算法层(核心)

  • 数据获取

    • 技术选型:使用 Scrapy 或 Selennium 爬取微博数据。特别注意遵守robots.txt和相关法律法规,仅用于科研目的。

    • 爬取字段:微博正文、发布时间、发布设备、用户昵称、用户IP属地、转发/评论/点赞数、话题等。

  • 情感分析模型

    • 方案一(快速部署):使用预训练模型或第三方API,如 SnowNLP百度NLP情感分析API腾讯NLP。适合快速验证系统。

    • 方案二(展示能力)自行构建和训练深度学习模型,这是毕业设计的亮点

      • 模型选择

        • LSTM/BI-LSTM + Attention:经典序列模型,能较好捕捉上下文,实现难度适中。

        • BERT (Finetuning):当前SOTA水平。使用 Hugging Face 的 Transformers 库,在中文微博情感数据集上对预训练的BERT模型进行微调,能达到非常高的准确率。这是最推荐的做法

      • 数据集:需寻找或自行标注微博情感数据集(如正面、负面、中性三分类)用于模型训练。

  • 数据存储

    • MySQL:存储结构化数据,如微博内容、用户信息、分析结果。

    • Redis:用作缓存,存储热点数据;同时作为Celery的Broker,管理异步任务队列。

2. 后端API层 (Django + Django REST Framework)

  • 模型 (Models)

    • WeiboPost: 微博数据表(contentpublish_timeuserip_regionlikes...)。

    • SentimentResult: 情感分析结果表(weibo_post(外键), sentiment_label(正面/负面/中性), confidence(置信度), analysis_time)。与分析结果分离,便于模型更新

    • AnalysisTask: 分析任务表(用于管理异步分析任务)。

  • 视图 (Views - API Views)

    • WeiboSearchAPIView: 接收前端搜索条件,从数据库查询微博,并返回(可分页)。

    • SentimentAnalysisAPIView核心接口。接收一批微博ID,调用情感分析服务,返回情感标签。由于模型预测耗时,此接口应设计为异步(Celery)

    • TrendAnalysisAPIView: 处理情感趋势请求,按时间聚合情感结果,返回给前端绘图。

    • RealTimePredictAPIView: 提供单条文本的实时情感预测。

  • 业务逻辑层 (Services)

    • sentiment_analyzer.py核心模块。封装模型加载和预测逻辑。

      python

      class SentimentAnalyzer:
          def __init__(self, model_path):
              # 加载训练好的BERT模型和tokenizer
              self.model = TFAutoModelForSequenceClassification.from_pretrained(model_path)
              self.tokenizer = AutoTokenizer.from_pretrained(model_path)
          
          def predict(self, text):
              # 对文本进行编码、预测、返回标签和置信度
              inputs = self.tokenizer(text, return_tensors="tf", truncation=True, padding=True)
              outputs = self.model(inputs)
              probabilities = tf.nn.softmax(outputs.logits, axis=-1)
              # ... 后续处理
              return label, confidence
    • celery_tasks.py: 定义异步任务,如 analyze_batch_weibos_sentiment(weibo_id_list)

3. 前端表现层 (Vue 3)

  • 技术栈:Vue 3 + Vite + Pinia + Element Plus。

  • 路由 (Vue Router):管理页面路由,如首页、分析页面、模型管理页面。

  • 状态管理 (Pinia):管理用户Token、全局加载状态、当前分析结果等。

  • UI组件:使用 Element Plus 构建布局、表单、表格等。

  • 可视化:使用 ECharts 绘制:

    • 饼图:用于情感分布。

    • 折线图:用于情感趋势。

    • 地图:用于地域情绪分布(需地理编码)。

    • 词云:用于情感关键词。

运行结果展示:

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐