TsisteLymo / Topic_and_user_profile_analysis_system

基于微博的网络舆情话题分析和用户画像系统

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Topic and user profile analysis system

介绍

微博的话题博文用户画像分析系统。

功能:

  • 微博话题博文搜索:根据用户输入关键字搜索出热度最高的50页近1000条博文

  • 微博话题分析:用户可以将相关话题加入分析任务队列中,后端会异步执行分析任务(基于celery)

    • 话题任务列表:当前系统中的所有任务,包括分析中、完成和异常的任务。

    • 话题最热博文:展示出该话题下热度最高的十条博文。

    • 话题热度:展示该话题近一天、一个月、三个月的关注热度。

    • 话题词云:根据话题中爬取到的所有博文内容分析出话题关联的词语。

    • 话题简略传播关系图:用有向图展示出该话题的传播关系。

    avatar

  • 博文分析:对话题中热度前十的博文进行详细分析。

    • 博文详情:展示博文的文本内容和发博用户的粗略信息。

    • 博文关键转发节点:列出在博文传播过程中起重要扩散作用的转发节点,通常是转发后产生相对大量关注的节点。

    • 博文传播树:博文的转发传播树。

    • 博文评论词云:博文评论下关联的词语。

    • 博文主题分析:博文下评论主题及其占比。

    • 博文热点转发:显示关注较高的热点转发内容。

    avatar

  • 用户画像:根据用户在不同话题下微博文本的聚类主题为用户打标签,逐步完善用户画像。

    artvar

设计

  • 概要设计:前端页面低保真原型设计

  • 详细设计:

    • 架构设计:项目整体采用BS架构实现前后端分离。前端具体使用vue框架,参照[前端页面低保真原型设计来实现,后端使用python的[fastapi](FastAPI (tiangolo.com))框架搭建,结合分布式异步任务处理框架[celery](使用Redis - Celery 中文手册 (celerycn.io))实现任务发布和任务执行的解耦,使得异步、快速处理话题分析任务成为了可能。

    • 涉及算法:

      • 基于MGP的博文短文本聚类分析算法gsdmmCluster,用于对某一博文的评论进行聚类分析。

      • LDA,用于对话题内舆论场进行聚类分析。

      • Single_Pass,用于对话题舆论场进行聚类分析。

    • 路由、数据库设计文档:在\doc\desgin文件中

配置

  • 后端配置:

    • 在文件\code\back_end\config\config_class中修改如下配置:

      class AppConfig(BaseSettings):
          """
          fastapi_app启动的相关配置
          """
          HOST: str = '127.0.0.1'
          PORT: int = 81
      
      
      class WeiBoConfig(BaseSettings):
      """weibo 爬虫api的相关配置"""
          BASEPATH: str = 'http://127.0.0.1:8000'
      
    • \code\back_end\celery_task\config\task_config_class.py文件中修改celery相关配置:

      from pydantic import BaseSettings
      
      class CeleryConfig(BaseSettings):
          """
          celery 启动的相关配置
          """
          BROKER = 'redis://localhost:6379/0'
          BACKEND = 'redis://localhost:6379/1'
      
      
      class MongoConfig(BaseSettings):
        """
        Mongo的相关配置
        """
        HOST: str = '127.0.0.1'
        PORT: int = 27017
        DB_NAME: str = 'test'
      
        # 话题任务数据库名称
        TASK: str = 'tag_task'
        BLOG: str = 'blog'
        CHARACTER: str = 'character_category'
        EVOLVE: str = 'tag_evolve'
        HOT: str = 'tag_hot'
        INTRODUCE: str = 'tag_introduce'
        RELATION: str = 'tag_relation_graph'
        RETWEET: str = 'tag_weibo_task'
        CLOUD: str = 'tag_word_cloud'
        USER: str = 'tag_user'
      
        # 评论任务数据库名称
        COMMENT_TASK = 'comment_task'
        COMMENT_REPOSTS = 'comment_reposts'
        COMMENT_CLOUD = 'comment_cloud'
        COMMENT_CLUSTER = 'comment_cluster'
        COMMENT_NODE = 'comment_node'
        COMMENT_TENDENCY = 'comment_tendency'
        COMMENT_TOPIC = 'comment_topic'
        COMMENT_TREE = 'comment_tree'
      
      
      class ElasticSearchConfig(BaseSettings):
        """
        ES配置
        """
        ES_HOST = '127.0.0.1:9200'
        ES_SEARCH_INDEX = 'weibo'
        ES_TIMEOUT = 60
        LANG_TYPE = ['zh', 'en']
      
      
  • 微博爬虫微服务配置:

    请参照\code\weibo_crawler\README.md文件进行配置

启动

  • 后端

    • 安装Redis数据库

    • 依据项目中requestments.txt文件,安装好后端需要的所有依赖库

      强烈建议参照doc\话题分析系统后端部署.docx文件构建虚拟运行环境。

    • 运行\code\back_end\main.py启动fastapi的app

    • 启动Redis数据库

    • 进入\code\back_end文件夹,运行celery -A celery_task.celeryapp worker --loglevel=info -P threads命令启动celery

  • 前端

    • 进入\code\back_end文件夹,按照README.md文件安装依赖。

    • 执行npm install命令安装vue项目。

    • 执行npm run server运行前端。

  • 微博爬虫

    进入\code\weibo_crawler文件夹,配置好后,运行weibo_curl_api.py文件

About

基于微博的网络舆情话题分析和用户画像系统


Languages

Language:Python 62.9%Language:Jupyter Notebook 28.6%Language:Vue 8.0%Language:JavaScript 0.4%Language:HTML 0.1%