微博的话题、博文及用户画像分析系统。
功能:
-
微博话题博文搜索:根据用户输入关键字搜索出热度最高的50页近1000条博文
-
微博话题分析:用户可以将相关话题加入分析任务队列中,后端会异步执行分析任务(基于celery)
-
话题任务列表:当前系统中的所有任务,包括分析中、完成和异常的任务。
-
话题最热博文:展示出该话题下热度最高的十条博文。
-
话题热度:展示该话题近一天、一个月、三个月的关注热度。
-
话题词云:根据话题中爬取到的所有博文内容分析出话题关联的词语。
-
话题简略传播关系图:用有向图展示出该话题的传播关系。
-
-
博文分析:对话题中热度前十的博文进行详细分析。
-
博文详情:展示博文的文本内容和发博用户的粗略信息。
-
博文关键转发节点:列出在博文传播过程中起重要扩散作用的转发节点,通常是转发后产生相对大量关注的节点。
-
博文传播树:博文的转发传播树。
-
博文评论词云:博文评论下关联的词语。
-
博文主题分析:博文下评论主题及其占比。
-
博文热点转发:显示关注较高的热点转发内容。
-
-
用户画像:根据用户在不同话题下微博文本的聚类主题为用户打标签,逐步完善用户画像。
-
概要设计:前端页面低保真原型设计
-
详细设计:
-
架构设计:项目整体采用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
文件