文章目录

  • 1. 引言
    • 1.1 编写目的
    • 1.2 背景
    • 1.3 参考资料
    • 1.4 术语定义及说明
  • 2. 设计概述
    • 2.1 任务和目标
      • 2.1.1 需求概述
      • 2.1.2 运行环境概述
      • 2.1.3 条件与限制
      • 2.1.4 详细设计方法和工具
  • 3. 系统详细需求分析
    • 3.1 详细功能需求分析
    • 3.2 详细性能需求分析
    • 3.3 详细资源需求分析
    • 3.4 接口需求分析
    • 3.5 算法需求分析
  • 4. 系统总体方案确认
    • 4.1 系统总体结构确认
    • 4.2 系统详细界面划分
  • 5. 系统详细设计
    • 5.1 系统程序代码架构设计
    • 5.2 系统结构设计及子系统划分
    • 5.3 系统功能模块详细设计
      • 5.3.1 分析子系统
      • 5.3.2 后台与前端子系统
      • 5.3.3 爬虫子系统
    • 5.4 系统用户界面详细设计
  • 6. 数据库系统设计
    • 6.1 设计要求
    • 6.2 数据库设计
      • 6.2.1 设计依据
      • 6.2.2 数据库种类及特点
      • 6.2.3 数据库逻辑结构
      • 6.2.4 数据库安全
      • 6.2.5 数据字典

1. 引言

1.1 编写目的

编写此文档的目的是通过系统的详细设计指导系统的编码等工作。

1.2 背景

A. 待开发系统的名称:舆情分析系统 B. 系统架构类型:BS 架构类型,即浏览器、服务器架构类型 C.开发项目组名称:东北大学软件学院大数据班 T09 实训项目组 (lzf、lcx)

1.3 参考资料

  1. 系统详细设计说明书模板: https://wenku.baidu.com/view/1ad0617ddd88d0d232d46a21.html
  2. 《舆情分析系统-软件需求分析说明书.docx》
  3. 《舆情分析系统-软件架构设计说明书.docx》

1.4 术语定义及说明

2. 设计概述

2.1 任务和目标

2.1.1 需求概述

我们的舆情分析系统的需求主要由舆情首页、舆情事件分析页、舆情事件预警这三个需求模块构成。其中舆情首页包括领域(分类)舆情事件热度表、领域舆情热度趋势、舆情地域分布图,舆情事件分析包括事件文章分析、事件评论分析、舆情事件分析三大块(详细需求令见需求规格说明书),舆情事件预警包括舆情事件负面评论舆情、舆情事件负面评论增长预警、舆情事件热度增长预警。

2.1.2 运行环境概述

由于系统架构类型为BS架构类型,故而系统运行在服务器上,只要任何一台安装了主流浏览器的电脑均可以通过IP地址加端口号的方式获取系统服务、访问系统页面。因此,系统的运行环境是指服务器的环境,环境大致如下:

2.1.3 条件与限制
  1. 技术限制 (1) 系统架构要求编码人员掌握并使用未接触过的技术——ClickHouse与ElasticSearch来实现系统。 (2) 系统设计自然语言处理的相关技术,主要是中文分词、中文情感分析。
2.1.4 详细设计方法和工具
  1. 流程图工具:Processon

3. 系统详细需求分析

3.1 详细功能需求分析

  1. 舆情首页 a) 分类舆情事件热度:按领域展示各领域下的事件及其热度 b) 分类舆情热度趋势:各领域舆情的热度随时间的变化趋势 c) 舆情地域分布图:舆情文章在全国各个省份的数量分布
  2. 舆情预警 a) 舆情事件负面评论预警:根据管理员设置的事件负面评论占比阈值,如果事件的负面评论占比大于阈值,则展示在事件预警页。 b) 舆情事件负面评论增长预警:根据事件的负面评论占比的环比增长率预警事件,若事件负面评论占比的环比增长率比较大,则进行预警 c) 舆情事件热度增长预警:根据事件的热度的环比增长率预警事件,若事件热度的环比增长率比较大,则进行预警。
  3. 舆情事件分析 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中获取上游处理到的数据进行处理分析。

  1. 事件文章分析模块 模块描述:事件文章分析模块包括事件文章详情、事件走势、事件核心传播人、事件热度这几个部分数据处理部分,并将处理结果存入ClickHouse。
  2. 事件文章关键词分析模块 模块描述:事件关键词分析模块处理的是事件所有文章分词后的词频统计结果,统计出事件的关键词存入ClickHouse。
  3. 事件评论分析模块 模块描述:事件评论分析模块包括事件评论详情、事件评论统计(事件评论者性别占比、事件正负面评论占比)三个部分。
  4. 事件评论关键词分析模块 模块描述:事件关键词分析模块处理的是事件所有评论分词后的词频统计结果,统计出事件评论的关键词存入ClickHouse。
5.3.2 后台与前端子系统
  1. 舆情页与舆情服务模块 模块描述:用于舆情分析员查看舆情事件、搜索舆情事件、舆情预警 功能描述: a. 舆情首页 a) 分类舆情事件热度 b) 分类舆情热度趋势 c) 舆情地域分布图 b. 舆情预警 a) 舆情事件负面评论预警; b) 舆情事件负面评论增长预警; c) 舆情事件热度增长预警; c. 舆情事件分析 a) 舆情事件总览 i. 事件关键词分析 ii. 事件传播走势分析 iii. 事件核心传播人分析

;

;

b) 舆情事件文章分析 i. 事件文章点赞、转发、评论排名 ii. 事件文章热度排名 iii. 事件文章地域分布 iv. 事件文章时间线

;

;

c) 舆情事件评论分析 i. 评论关键词分析 ii. 事件评论者分析 iii. 事件评论情感趋势分析 iv. 事件评论点赞排名 v. 事件评论回复排名

  1. 系统配置页与系统配置服务模块 模块描述:用于系统管理员配置舆情分析系统涉及的数值; 功能描述: a. TopN 配置 i. 文章排名 TopN配置 ii. 文章热度 TopN 配置 iii. 事件高赞与高回复评论 TopN 配置 b. 事件预警阈值配置 i. 事件负面评论占比阈值配置 c. 爬虫参数配置 i. 爬虫的任务周期配置(每隔多少次执行爬虫代码)
5.3.3 爬虫子系统
  1. 微博爬虫模块 模块描述:微博舆情数据的爬取。
  2. 今日头条爬虫模块 模块描述:今日头条舆情数据的爬取。

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 数据字典

无,舆情分析系统目前不需要数据字典。

清博舆情系统_什么是舆情相关推荐

  1. python搭建博客系统_用Pelican快速搭建极简静态博客系统

    我一直建议每个开发者都要有写博客记笔记的习惯,一来可以沉淀知识,二来可以帮助别人,我使用过很多博客平台,也用Python开发过博客系统,就这么个东西折腾好几年,一直找不到理想的产品,直到我用Pelic ...

  2. python flask实现博客系统_基于Flask的博客网站设计与实现

    涂远杰 郑剑 摘要:该博客系统是一款分享型博客,注重个人的学习心得.生活等方面的记录.后台基于Python中的Flask框架开发,还涉及爬虫,数据库使用的是轻型的SQLite,同时,前端页面的实现涉及 ...

  3. java 博客系统_讲解开源项目:5分钟搭建私人Java博客系统

    本文适合刚学习完 Java 语言基础的人群,跟着本文可了解和运行 Tale 项目.示例均在 Windows 操作系统下演示 本文作者:HelloGitHub-秦人 HelloGitHub 推出的< ...

  4. java基于ssm的个人博客系统_调研了 100 来个 Java 博客系统,发现这5个最好用

    大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 最近想倒腾一下博客,看了很多现成的比较成熟的开源博客系统,自己也简单从下面几个维度总结对比了一下: star数量 ...

  5. php+mysql个人博客系统_推荐几个开源的个人独立博客系统

    大家好,我是章鱼猫. 前几天,有读者留言:「有没有开源的个人独立博客系统」. 今天章鱼猫就应大家的要求,给大家分享几个非常不错的个人独立博客系统. 之前推荐过两个: 超级漂亮的 Tale 博客系统 一 ...

  6. java基于ssm的个人博客系统_一个基于 Spring Boot 的开源免费博客系统

    概况 mblog 开源免费的博客系统, Java 语言开发, 支持 mysql/h2 数据库, 采用 spring-boot.jpa.shiro.bootstrap 等流行框架开发.支持多用户, 支持 ...

  7. jsp mysql 博客系统_个人博客系统的设计与实现(JSP,MySQL)

    个人博客系统的设计与实现(JSP,MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文15000字,程序代码,MySQL数据库) 本系统利用JSP开发技术,以MySQL作为后台数据 ...

  8. python搭建博客系统_基于python3.7和django2.1的多人博客系统

    主要功能: 1.用户注册,登录,删除,以及使用第三方库password_reset来重置用户密码 2.文章的发布,修改以及删除,支持markdown以及代码高亮 3.留言板系统 4.支持文章的多人互动 ...

  9. java吧 博客系统_【Java】SpringMVC + Mybatis 实现的个人博客系统

    [Java] 纯文本查看 复制代码DEBUG - Resolved location pattern [classpath:com/wp/dao/**/*.xml] to resources [fil ...

最新文章

  1. python之路day14--列表生成式、生成器generator、生成器并行
  2. VS2017 配置 OpenGL 环境
  3. 详解Python中的下划线
  4. MySQL配置mycat读写分离:wrapper | Startup failed: Timed out waiting for signal from JVM.
  5. tcp unity 图片_用 Unity 做个游戏(七) - TCP Socket 客户端
  6. Linux shell中的那些小把戏
  7. mac 打不开 不受信任_管理不受信任的外键
  8. xlwings,让excel飞起来!
  9. python和java哪个好-Python和Java发展前景哪个好?Python开发学习
  10. Word AddIn编译出现LINK2001 _main
  11. charles Mock测试总结
  12. html缩放背景不缩放_如何在缩放通话中静音
  13. CWMP (TR-069)技术介绍
  14. 解决IDM浏览器插件强制更新后无法继续使用的问题
  15. 视频开头独白怎么做?一分钟学会
  16. Tapping and Tripping with NFC 基于NFC手机的公共交通票据系统
  17. MentoHUST的使用教程
  18. 优雅的剥洋葱:浅析 Java Optional 类
  19. 51Nod NOIP2018提高组省一冲奖班模测训练
  20. Mozilla里永久删除的邮件如何恢复

热门文章

  1. Sqlite3安装使用(基于Windows 10)
  2. Tensorflow下用自己的数据集对Faster RCNN进行训练和测试(二)1
  3. linux ram大小 arm,在linux / arm下对RAM(无ECC)进行基准测试的最佳方法是什么?
  4. matplotlib从绘图到排版
  5. 调用系统相机录像,压缩保存到相册(附仿微信视频录制demo)
  6. 高性能Web服务器:Nginx
  7. centos允许远程连接mysql_centos7 mysql允许远程连接设置
  8. “随机漫步”(Random Walk)模拟演示
  9. Unity将内部模型转换成stl格式模型,用于3D打印机进行打印
  10. 掌握农业信息化核心 物联网助力智慧农业