微博的话题、博文及用户画像分析系统。
功能:
微博话题博文搜索:根据用户输入关键字搜索出热度最高的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
文件