大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
1. 引言
1.1 编写目的
编写此文档的目的是通过系统的详细设计指导系统的编码等工作。
1.2 背景
A. 待开发系统的名称:舆情分析系统
B. 系统架构类型:BS 架构类型,即浏览器、服务器架构类型
C.开发项目组名称:东北大学软件学院大数据班 T09 实训项目组 (lzf、lcx)
1.3 参考资料
- 系统详细设计说明书模板:
https://wenku.baidu.com/view/1ad0617ddd88d0d232d46a21.html - 《舆情分析系统-软件需求分析说明书.docx》
- 《舆情分析系统-软件架构设计说明书.docx》
1.4 术语定义及说明
2. 设计概述
2.1 任务和目标
2.1.1 需求概述
我们的舆情分析系统的需求主要由舆情首页、舆情事件分析页、舆情事件预警这三个需求模块构成。其中舆情首页包括领域(分类)舆情事件热度表、领域舆情热度趋势、舆情地域分布图,舆情事件分析包括事件文章分析、事件评论分析、舆情事件分析三大块(详细需求令见需求规格说明书),舆情事件预警包括舆情事件负面评论舆情、舆情事件负面评论增长预警、舆情事件热度增长预警。
2.1.2 运行环境概述
由于系统架构类型为BS架构类型,故而系统运行在服务器上,只要任何一台安装了主流浏览器的电脑均可以通过IP地址加端口号的方式获取系统服务、访问系统页面。因此,系统的运行环境是指服务器的环境,环境大致如下:
2.1.3 条件与限制
- 技术限制
(1) 系统架构要求编码人员掌握并使用未接触过的技术——ClickHouse与ElasticSearch来实现系统。
(2) 系统设计自然语言处理的相关技术,主要是中文分词、中文情感分析。
2.1.4 详细设计方法和工具
- 流程图工具:Processon
3. 系统详细需求分析
3.1 详细功能需求分析
- 舆情首页
a) 分类舆情事件热度:按领域展示各领域下的事件及其热度
b) 分类舆情热度趋势:各领域舆情的热度随时间的变化趋势
c) 舆情地域分布图:舆情文章在全国各个省份的数量分布 - 舆情预警
a) 舆情事件负面评论预警:根据管理员设置的事件负面评论占比阈值,如果事件的负面评论占比大于阈值,则展示在事件预警页。
b) 舆情事件负面评论增长预警:根据事件的负面评论占比的环比增长率预警事件,若事件负面评论占比的环比增长率比较大,则进行预警
c) 舆情事件热度增长预警:根据事件的热度的环比增长率预警事件,若事件热度的环比增长率比较大,则进行预警。 - 舆情事件分析
a) 舆情事件总览
A. 事件关键词分析
B. 事件传播走势分析
C. 事件核心传播人分析
b) 舆情事件文章分析
A. 事件文章点赞排名
B. 事件文章转发排名
C. 事件文章评论排名
D. 事件文章热度排名
E. 事件文章地域分布
F. 事件文章时间线
c) 舆情事件评论分析
A. 评论关键词分析
B. 事件评论者分析
C. 事件评论情感趋势分析
D. 事件评论点赞排名
E. 事件评论回复排名
3.2 详细性能需求分析
(1) 网络正常的情况下用户点击网页后页面的跳转时间<=1s;
(2) 页面数据加载与渲染时间<=5s;
(3) 页面的数据量较大而导致的页面加载时间长时,页面必须提供加载提示。
3.3 详细资源需求分析
系统需要运行在一个具有10GB内存的、100GB磁盘的CentOS7系统系统上,才能保证系统的性能,并且随着系统的运行,磁盘的占用会比较大,需要定时清理ClickHouse存储的过时的舆情数据,当然也可以构建ClickHouse集群解决磁盘占用变大的问题。
3.4 接口需求分析
(1) 中文分词接口:
采用Jieba分词提供的分词接口来进行事件文章的分词与事件评论的分词。
(2) 中文情感分析接口:
采用HanLP提供的相关类构建并训练一个情感分析模型,并针对模型编写一个中文情感分析的接口。
3.5 算法需求分析
算法需求主要涉及的事件热度算法,算法公式参考:https://juejin.cn/post/6844903833856901133
基于上述文章的热度计算公式,即
其中,
·H:表示内容的热度,
·W:表示内容质量的数值表达,如文章点赞数
·I:表示内容的初始质量,是文章作者的影响因子
·G:重力Gravity,表示的是一个内容变得不再热门的速度,重力越大,一个内容刷新的越快
·T:事件T
基于上述公式,事件的热度定义为文章热度的和,文章热度的计算公式由公式(1)变化而得,文章热度的计算公式如下:
其中,
·H:文章热度
·L:文章点赞量
·C:文章评论量
·R:文章转发量
·S:文章爬取时间(Spider Time)
·A:文章时间(Article Time)
·h:表示小时, 表示爬取时间到文章时间的小时数
故而事件的热度计算公式为:
4. 系统总体方案确认
4.1 系统总体结构确认
系统总体上由数据来源层、数据采集层、数据处理层、数据存储层、数据访问层、数据服务层、数据视图层七层组成。数据来源层到数据采集层再到数据处理层最后到数据存储层是一个单向的层次结构。数据存储层、数据访问层、数据服务层、数据视图层各层之间是一个双向的数据传递的层结构。具体见系统架构图。
4.2 系统详细界面划分
略。
5. 系统详细设计
5.1 系统程序代码架构设计
系统程序代码架构设计主要是舆情分析系统的后台服务子系统与前端展示子系统的架构设计。舆情分析系统采用采用三层架构模型,分为用户界面层、业务逻辑层、数据访问层。代码的包结构如下:
5.1.1 用户界面层(User Interface Layer)
用户界面层包含前端界面与Controller。前端界面用于与系统用户交互、提交Http请求并展示舆情分析结果;Collroller 用于处理前端提交的Http请求,并调用业务逻辑层的接口获取数据并放回数据到前端。
5.1.2 业务逻辑层(Business Logic Layer)
业务逻辑层是系统代码的重要部分,承担了所有的逻辑判断,实现了程序功能。它被用户界面层的Controller调用,并调用了数据访问层的接口以获取查询数据。
5.1.3 数据访问层(Data Access Layer)
由于系统由MyBatis+ClickHouse实现且系统主要涉及的是舆情分析数据的展示,因此数据访问层主要是接口加ClickHouse的查询语句,根据查询语句查询ClickHouse获取结果。
5.1.4 实体类(Entity Class)
实现对数据的封装,用户界面层、业务逻辑层、数据访问层这三层之间主要就是通过实体类作为参数、返回值进行交互的。
5.2 系统结构设计及子系统划分
根据系统需求和功能,舆情分析系统的逻辑结构划分为分析子系统、后台子系统、前端子系统、爬虫子系统等4个子系统,系统下又分各功能模块,如下图所示:
5.3 系统功能模块详细设计
5.3.1 分析子系统
在分析子系统中,我们的设计是把爬取到的文章数据通过OdsFlink获取处理到下游的Kafka Topic中,然后从下游的Topic中获取上游处理到的数据进行处理分析。
- 事件文章分析模块
模块描述:事件文章分析模块包括事件文章详情、事件走势、事件核心传播人、事件热度这几个部分数据处理部分,并将处理结果存入ClickHouse。 - 事件文章关键词分析模块
模块描述:事件关键词分析模块处理的是事件所有文章分词后的词频统计结果,统计出事件的关键词存入ClickHouse。 - 事件评论分析模块
模块描述:事件评论分析模块包括事件评论详情、事件评论统计(事件评论者性别占比、事件正负面评论占比)三个部分。 - 事件评论关键词分析模块
模块描述:事件关键词分析模块处理的是事件所有评论分词后的词频统计结果,统计出事件评论的关键词存入ClickHouse。
5.3.2 后台与前端子系统
- 舆情页与舆情服务模块
模块描述:用于舆情分析员查看舆情事件、搜索舆情事件、舆情预警
功能描述:
a. 舆情首页
a) 分类舆情事件热度
b) 分类舆情热度趋势
c) 舆情地域分布图
b. 舆情预警
a) 舆情事件负面评论预警;
b) 舆情事件负面评论增长预警;
c) 舆情事件热度增长预警;
c. 舆情事件分析
a) 舆情事件总览
i. 事件关键词分析
ii. 事件传播走势分析
iii. 事件核心传播人分析
b) 舆情事件文章分析
i. 事件文章点赞、转发、评论排名
ii. 事件文章热度排名
iii. 事件文章地域分布
iv. 事件文章时间线
c) 舆情事件评论分析
i. 评论关键词分析
ii. 事件评论者分析
iii. 事件评论情感趋势分析
iv. 事件评论点赞排名
v. 事件评论回复排名
- 系统配置页与系统配置服务模块
模块描述:用于系统管理员配置舆情分析系统涉及的数值;
功能描述:
a. TopN 配置
i. 文章排名 TopN配置
ii. 文章热度 TopN 配置
iii. 事件高赞与高回复评论 TopN 配置
b. 事件预警阈值配置
i. 事件负面评论占比阈值配置
c. 爬虫参数配置
i. 爬虫的任务周期配置(每隔多少次执行爬虫代码)
5.3.3 爬虫子系统
- 微博爬虫模块
模块描述:微博舆情数据的爬取。 - 今日头条爬虫模块
模块描述:今日头条舆情数据的爬取。
5.4 系统用户界面详细设计
- 界面的风格:深色的准实时大屏风格
- 界面的内容:
界面主要分为管理员界面与舆情分析员界面。管理员界面的内容主要就是各种配置界面与系统日志查看界面;舆情分析员的界面内容大致分为四大块:- 分类舆情总览页
- 分类舆情热度表:表单内容包括事件名、事件热度、事件类型
- 领域(分类)舆情热度折线图
- 舆情地域分布图
- 舆情事件搜索页
- 舆情搜索框;
- 舆情事件搜索结果表:表单内容包括事件名、事件热度、事件类型
- 舆情事件预警页
- 事件负面评论占比与事件负面评论环比增长率表
- 事件负面评论排名饼图
- 事件负面评论环比增长率排名饼图
- 事件热度与事件热度增长率表
- 事件热度增长率横向柱状图
- 舆情事件分析页
- 舆情事件总览页
- 事件关键词词云图
- 事件走势(信息量走势、关注度走势)折线图
- 事件核心传播人饼图
- 事件文章分析页
- 事件文章点赞、评论、转发排名柱状图
- 事件文章热度排名走马灯
- 事件文章发展时间线
- 事件评论分析页
- 事件评论关键词词云图
- 事件正负面评论占比趋势折线图
- 事件正面、负面、中立评论抽屉
- 事件男女评论占比饼图
- 事件高赞评论饼图
- 事件高回复评论饼图
- 舆情事件总览页
- 分类舆情总览页
- 界面数据的请求方式:Http请求,包括Get请求与Post请求。
6. 数据库系统设计
6.1 设计要求
数据库系统的设计需要很好的满足系统的功能性需求与非功能性需求。功能性需求的满足要求设计恰当的表结构,以支持系统的功能性需求的完成;非功能性需求的满足主要是系统查询性能的保证,进而才能保证系统的性能需求。
6.2 数据库设计
6.2.1 设计依据
- 数据访问频度与流量
由于舆情分析系统为准实时系统,前端每隔30s自动请求后端的大量数据,需要要求数据库需要有良好的查询性能,才能保证系统的可用性。 - 数据存储量
舆情分析系统存储的数据可达几十G甚至几百G甚至几千G,因此数据库需要有非常良好的横向扩展能力,能够支持拥有分布式数据库(数据库集群)构建。 - 数据增长量
由于舆情数据每天都以爆炸式增长,舆情分析系统的数据增长量是非常大的,但是我们的数据来源是爬虫,数据量的增长速度被爬虫的速度所限制,但是数据的增长量还是非常大的,因此数据库需要拥有很好的横向扩展能力。
6.2.2 数据库种类及特点
系统采用的数据库是ClickHouse与ElasticSearch。ClickHouse是一个面向列存储的OLAP分析数据库,具有非常优越的分析查询速度,能够满足舆情分析系统的查询需求,并且支持集群搭建,具有很好的横向扩展能力;ElasticSearch是分布式的开源搜索与分析引擎,具有领先地位,能够很好的满足舆情系统的舆情事件搜索需求。
6.2.3 数据库逻辑结构
系统的数据采用ClickHouse表存储,其表设计见系统架构设计说明书的数据存储部分。
6.2.4 数据库安全
必须通过用户名与密码访问数据库获取数据。
6.2.5 数据字典
无,舆情分析系统目前不需要数据字典。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/191232.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...