@@ -137,7 +137,7 @@ | |||||
- 2.下载 [application.yml](https://gitee.com/stonedtx/yuqing/raw/master/config/application.yml)、[application.properties](https://gitee.com/stonedtx/yuqing/raw/master/config/application.properties)、[config.properties](https://gitee.com/stonedtx/yuqing/raw/master/config/config.properties),并创建 **config目录** 与 stonedt-yuqing.jar 在同一个目录下,可修改配置文件参数。 | - 2.下载 [application.yml](https://gitee.com/stonedtx/yuqing/raw/master/config/application.yml)、[application.properties](https://gitee.com/stonedtx/yuqing/raw/master/config/application.properties)、[config.properties](https://gitee.com/stonedtx/yuqing/raw/master/config/config.properties),并创建 **config目录** 与 stonedt-yuqing.jar 在同一个目录下,可修改配置文件参数。 | ||||
- 3.下载 [stonedt-yuqing.jar](https://gitee.com/stonedtx/yuqing/attach_files/973429/download/stonedt-yuqing.jar) 程序,与 config文件夹 在同目录下,执行 java -jar stonedt-yuqing.jar | |||||
- 3.下载 [stonedt-yuqing.jar](https://gitee.com/stonedtx/yuqing/raw/master/lastest_version/stonedt-yuqing.jar) 程序,与 config文件夹 在同目录下,执行 java -jar stonedt-yuqing.jar | |||||
- 发行版本下载地址:https://gitee.com/stonedtx/yuqing/releases/v1.0 | - 发行版本下载地址:https://gitee.com/stonedtx/yuqing/releases/v1.0 | ||||
@@ -152,7 +152,7 @@ | |||||
## 产品手册 | ## 产品手册 | ||||
https://gitee.com/stonedtx/yuqing/blob/master/%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8CV1.0.pdf | |||||
https://gitee.com/stonedtx/yuqing/raw/master/产品手册V1.0.pdf | |||||
@@ -117,7 +117,9 @@ | |||||
 |  | ||||
<br> | <br> | ||||
## 分布式采集 | ## 分布式采集 | ||||
- 控制器(master) | - 控制器(master) | ||||
爬虫工厂有一个web控制管理后台,开发者可以在上面添加需要采集的任务计划和数据采集抓取的规则策略,控制器只对采集任务下发抓取指令,不做任何抓取操作。 | 爬虫工厂有一个web控制管理后台,开发者可以在上面添加需要采集的任务计划和数据采集抓取的规则策略,控制器只对采集任务下发抓取指令,不做任何抓取操作。 | ||||
@@ -3,67 +3,61 @@ | |||||
## 简述 | ## 简述 | ||||
经历了很多版本的迭代升级,期间采用过机器学习、深度学习、tensorflow 和 PaddlePaddle,经历大量的开发测试与项目实战经验。 | |||||
## 开源技术栈 | |||||
(开源技术清单) | |||||
舆情系统的数据处理部分我们定义为:数据工厂。 | |||||
数据工厂,是一套多组件化数据清洗加工及数据存储管理平台,同时能够管理所有的数据库的备份方案。 | |||||
## 技术架构 | |||||
 | |||||
(这是最早期系统架构图) | |||||
## 数据处理流程 | |||||
 | |||||
支持多数据源类型的数据同步实现和数据仓库其他的数据源互通。对接收数据进行解压,对外提供压缩后的数据。 | |||||
主要用途分为三大块: **1.数据储存,2.数据标记,3.数据挖掘** 。 | |||||
经历了很多版本的迭代升级,期间采用过机器学习、深度学习、tensorflow 和 PaddlePaddle,经历大量的开发测试与项目实战经验。 | |||||
## 数据总线 | |||||
## 开源技术栈 | |||||
- 开发框架:SpringBoot | |||||
- 开发语言:Java JEE | |||||
- 数据暂存:MySQL | |||||
- 数据索引:Redis | |||||
- 深度学习:PaddlePaddle | |||||
- 数据流水线:Apache Flink | |||||
- 自然语言处理:HaNLP & THUCTC | |||||
- 数据处理和储存任务发送:Kafka&Zookeeper | |||||
- 数据中台:自研 & DataEase | |||||
通过SmarterAPI与Elasticsearch对接,将内部整套数据处理流程完成后对外输出。 | |||||
## 数据去重 | |||||
- URL去重 | |||||
采用了redis集群 | |||||
## 主体流程 | |||||
1. 选择需要处理的数据源,开启(或者关闭)数据处理开关,获取爬虫工厂抓取初加工的数据。 | |||||
2. 在配置界面上对数据处理流程自定义,并且可以看见处理列表和处理详情,以及当前总体的计算状态和计算负载统计。(整套技术方案可以自研,也可以使用为基础,初步评估flink可以满足我们大部分需求) | |||||
- 内容去重 | |||||
采用Elasticsearch内部的查询将文章标题一样的内容检索过滤掉。 | |||||
3. 数据处理环节有6种类型:组合汇聚数据源、ETL 网页解析、自然语言处理、标签工场标记、自定义python java反射代码、对附件的处理。 | |||||
## 数据清洗 | |||||
自动提取字段,标题、正文、时间、作者、来源 等。 | |||||
4. 每种数据源类型可定义输出不同的数据处理结果和存储目标。 | |||||
5. 对应每一种数据处理结果有每个不同的数据调用接口,接口都是根据数据字段自动生成。管理员用户可操作关闭数据调用开关。 | |||||
## 数据标记 | |||||
6. 用户可以查看每个数据处理结果的数据结果,可以通过筛选、搜索关键词对具体的数据内容查看。 | |||||
### 实体识别 | |||||
- 在HaNLP的基础上进行训练和二次开发,在实战的过程中收集数据样本以及对数据样本标注是最痛苦的事情,为此,我们还开发了一款可以辅助人工标记的工具。 | |||||
备注:在项目初期应该用最简洁明了的方式对数据处理加工,等到对自身需求有一定深刻认识的时候,再对具体的数据工场的具体功能设计。进过对工商数据,对资讯数据,对招投标数据的输入、输出、处理、调用的各个环节后,会对数据工场具体需求有一个全面的认识。 | |||||
### 情感分析 | |||||
百度飞桨 | |||||
### 高频词分词 | |||||
- 自研算法 | |||||
## 技术架构 | |||||
### 文本分类 | |||||
 | |||||
(这是最早期系统架构图) | |||||
- 由清华大学自然语言处理实验室推出的 [THUCTC(THU Chinese Text Classification)](http://http://thuctc.thunlp.org/) | |||||
### 相似文章 | |||||
## 数据处理流程 | |||||
 | |||||
将文章通过“海明距离”算法生成加密串码存储在clickhouse集群中,通过clickhouse距离查询方法实现,文章相似度聚类。 | |||||
### 事件分类 | |||||
- 自研算法 | |||||
## 数据总线 | |||||
### 行业分类 | |||||
我们自研了一套数据总线系统API与Elasticsearch对接,将内部整套数据处理流程完成后对外输出。 | |||||
- 自研算法 | |||||
## 数据存储 | ## 数据存储 | ||||
@@ -94,12 +88,69 @@ | |||||
将每篇文章指纹及海明距离储存在clickhouse中,以便于对相似度和文章主题聚类的计算。 | 将每篇文章指纹及海明距离储存在clickhouse中,以便于对相似度和文章主题聚类的计算。 | ||||
## 数据去重 | |||||
- **URL去重** | |||||
采用了redis集群 | |||||
- **内容去重** | |||||
采用Elasticsearch内部的查询将文章标题一样的内容检索过滤掉。 | |||||
## 数据清洗 | |||||
自动提取字段,标题、正文、时间、作者、来源 等。 | |||||
## 数据标记 | |||||
- **内容简介** | |||||
我们自研了一套自然语言处理的API,我们对此也开放了出来,可以查阅 | |||||
- **实体识别** | |||||
在HaNLP的基础上进行训练和二次开发,在实战的过程中收集数据样本以及对数据样本标注是最痛苦的事情,为此,我们还开发了一款可以辅助人工标记的工具。 | |||||
- **情感分析** | |||||
百度飞桨 | |||||
- **高频词分词** | |||||
采用IK分词框架,在此基础上实现了高频词提取工具及API接口。 | |||||
- **文本分类** | |||||
由清华大学自然语言处理实验室推出的 [THUCTC(THU Chinese Text Classification)](http://http://thuctc.thunlp.org/) | |||||
- **相似文章** | |||||
将文章通过“海明距离”算法生成加密串码存储在clickhouse集群中,通过clickhouse距离查询方法实现,文章相似度聚类。 | |||||
- **事件分类** | |||||
自研算法 | |||||
- **行业分类** | |||||
自研算法 | |||||
## 数据运维 | ## 数据运维 | ||||
### 数据清理 | |||||
- 数据清理 | |||||
需要定期对 Elasticsearch、Mongodb 中存储的数据删除,同时还要将Mongodb中的表删除,否则磁盘空间容量不会减少。 | |||||
需要定期对 Elasticsearch、Mongodb 中存储的数据删除,同时还要将Mongodb中的表删除,否则磁盘空间容量不会减少。 | |||||
- 数据备份 | |||||
### 数据备份 | |||||
采用... | |||||
@@ -45,7 +45,7 @@ | |||||
<insert id="insert" parameterType="com.stonedt.intelligence.entity.Analysis"> | <insert id="insert" parameterType="com.stonedt.intelligence.entity.Analysis"> | ||||
replace into | replace into | ||||
monitor_analysis ( | |||||
monitor_analysis ("lastest_version/stonedt-portal.jar" | |||||
create_time, relative_news, keyword_index, emotional_proportion, plan_word_hit, popular_information, | create_time, relative_news, keyword_index, emotional_proportion, plan_word_hit, popular_information, | ||||
analysis_id, project_id, hot_company, hot_people, hot_spot, time_period | analysis_id, project_id, hot_company, hot_people, hot_spot, time_period | ||||
) | ) | ||||
@@ -341,25 +341,13 @@ | |||||
<!-- </ul> --> | <!-- </ul> --> | ||||
<!-- </div> --> | <!-- </div> --> | ||||
<!-- </div> --> | <!-- </div> --> | ||||
<div class="card m-b-0"> | |||||
<!-- <div class="card m-b-0"> | |||||
<div class="card-body"> | <div class="card-body"> | ||||
<div class="detail-card-title">相关文章</div> | <div class="detail-card-title">相关文章</div> | ||||
<div class="article-content" style="max-height:400px;" id="relatedArticlesList"> | <div class="article-content" style="max-height:400px;" id="relatedArticlesList"> | ||||
<!-- <div class="article-content-list"> --> | |||||
<!-- <a href="#"> --> | |||||
<!-- <div class="font-medium">马来西亚王宫7名职员感染新冠肺炎</div> --> | |||||
<!-- <div class="article-content-list-con text-over-2 font-13"> --> | |||||
<!-- 据当地媒体报道,马来西亚国家王宫证实7名职员感染新冠肺炎,他们目前都已送往医院治疗,情况稳定。马来西亚国家元首阿卜杜拉与元首后经检测并未感染,但他们已从3月25日起自行隔离14天。 --> | |||||
<!-- </div> --> | |||||
<!-- <div class="article-content-footer"> --> | |||||
<!-- <span class="text-muted"><i class="mdi mdi-earth"></i> 新冠状</span> --> | |||||
<!-- <span class="text-muted"><i class="mdi mdi-clock"></i> 2020-03-26 15:31</span> --> | |||||
<!-- </div> --> | |||||
<!-- </a> --> | |||||
<!-- </div> --> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | |||||
</div> --> | |||||
</div> | </div> | ||||
@@ -420,7 +408,7 @@ $("#currentyear").text((new Date()).getFullYear()); | |||||
} | } | ||||
if (keywordArrary.length > 0) { | if (keywordArrary.length > 0) { | ||||
relatedArticles(keywordArrary.join(',')); | |||||
//relatedArticles(keywordArrary.join(',')); | |||||
} | } | ||||
$("#referredList").html(relatedSpan); | $("#referredList").html(relatedSpan); | ||||
@@ -950,7 +950,7 @@ | |||||
<div class="row"> | <div class="row"> | ||||
<div class="col-sm-12 col-lg-6"> | <div class="col-sm-12 col-lg-6"> | ||||
<div class="card" style="min-height: 515px;"> | |||||
<div class="card" style="min-height: 630px;"> | |||||
<div class="card-body p-10"> | <div class="card-body p-10"> | ||||
<!--<h4 class="card-title volume-title">自媒体渠道声量排名</h4>--> | <!--<h4 class="card-title volume-title">自媒体渠道声量排名</h4>--> | ||||
<div class="card-title volume-title"> | <div class="card-title volume-title"> | ||||
@@ -987,39 +987,53 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
<div class="col-sm-12 col-lg-6"> | <div class="col-sm-12 col-lg-6"> | ||||
<div class="card" style="min-height: 630px;"> | |||||
<div class="card-body overview-content"> | |||||
<!--<div class="card-title">方案命中主体词</div>--> | |||||
<h4 class="card-title">方案命中分类统计</h4> | |||||
<!-- <div class="secondtitle">方案配置分类统计排名</div> --> | |||||
<ul class="list-style-none keywords-box" id="category_rank"> | |||||
</ul> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
<!-- <div class="col-sm-12 col-lg-6"> | |||||
<div class="card" style="min-height: 531px;"> | <div class="card" style="min-height: 531px;"> | ||||
<div class="card-body p-10"> | <div class="card-body p-10"> | ||||
<div class="card-title volume-title"> | <div class="card-title volume-title"> | ||||
<!--<span>关键词曝光度环比排行</span>--> | |||||
<span>关键词曝光度环比排行</span> | |||||
<h4>关键词曝光度环比排行</h4> | <h4>关键词曝光度环比排行</h4> | ||||
</div> | </div> | ||||
<div style="width: 100%; height: 415px" class="volume-data" | <div style="width: 100%; height: 415px" class="volume-data" | ||||
id="keyword_exposure_rank"> | id="keyword_exposure_rank"> | ||||
<!--<div class="expose-rank-title">--> | |||||
<!--<span>关键词</span>--> | |||||
<!--<span>曝光量</span>--> | |||||
<!--<span>环比增速(%)</span>--> | |||||
<!--<span>排名</span>--> | |||||
<!--</div>--> | |||||
<!-- <div class="expose-rank-content"> --> | |||||
<!-- <span>武汉</span> --> | |||||
<!-- <span> --> | |||||
<!-- <div>986665</div> --> | |||||
<!-- <div> --> | |||||
<!-- <div class="expose-zm" style="width: 10%;" title="正面"></div> --> | |||||
<!-- <div class="expose-zx" style="width: 55%;left: 10%;" title="中性"> --> | |||||
<!-- </div> --> | |||||
<!-- <div class="expose-fm" style="width: 35%;left: 65%;" title="负面"> --> | |||||
<!-- </div> --> | |||||
<!-- </div> --> | |||||
<!-- </span> --> | |||||
<!-- <span>-0.21 <i class="e-fm mdi mdi-arrow-down"></i></span> --> | |||||
<!-- <span>1</span> --> | |||||
<!-- </div> --> | |||||
<div class="expose-rank-title"> | |||||
<span>关键词</span> | |||||
<span>曝光量</span> | |||||
<span>环比增速(%)</span> | |||||
<span>排名</span> | |||||
</div> | |||||
<div class="expose-rank-content"> | |||||
<span>武汉</span> | |||||
<span> | |||||
<div>986665</div> | |||||
<div> | |||||
<div class="expose-zm" style="width: 10%;" title="正面"></div> | |||||
<div class="expose-zx" style="width: 55%;left: 10%;" title="中性"> | |||||
</div> | |||||
<div class="expose-fm" style="width: 35%;left: 65%;" title="负面"> | |||||
</div> | |||||
</div> | |||||
</span> | |||||
<span>-0.21 <i class="e-fm mdi mdi-arrow-down"></i></span> | |||||
<span>1</span> | |||||
</div> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | |||||
</div> --> | |||||
</div> | </div> | ||||
<div class="row"> | <div class="row"> | ||||
@@ -1077,18 +1091,18 @@ | |||||
<div class="row"> | <div class="row"> | ||||
<!-- shi jian start --> | <!-- shi jian start --> | ||||
<div class="col-lg-6"> | |||||
<!-- <div class="col-lg-6"> | |||||
<div class="card" style="min-height: 630px;"> | <div class="card" style="min-height: 630px;"> | ||||
<div class="card-body overview-content"> | <div class="card-body overview-content"> | ||||
<h4 class="card-title">政策法规</h4> | <h4 class="card-title">政策法规</h4> | ||||
<!-- <div class="secondtitle">方案配置上市政策法规命中数量排名</div> --> | |||||
<div class="secondtitle">方案配置上市政策法规命中数量排名</div> | |||||
<div class="table-responsive"> | <div class="table-responsive"> | ||||
<table class="table v-middle"> | <table class="table v-middle"> | ||||
<thead> | <thead> | ||||
<tr> | <tr> | ||||
<!-- <th class="border-top-0">名称</th> --> | |||||
<!-- <th class="text-center border-top-0">词频</th> | |||||
<th class="text-center border-top-0">占比</th> --> | |||||
<th class="border-top-0">名称</th> | |||||
<th class="text-center border-top-0">词频</th> | |||||
<th class="text-center border-top-0">占比</th> | |||||
</tr> | </tr> | ||||
</thead> | </thead> | ||||
<tbody id="highPolicyChinaIndexList"> | <tbody id="highPolicyChinaIndexList"> | ||||
@@ -1098,23 +1112,23 @@ | |||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | |||||
</div> --> | |||||
<!-- shi jian end --> | <!-- shi jian end --> | ||||
<!-- gongsi start --> | <!-- gongsi start --> | ||||
<div class="col-lg-6"> | |||||
<!-- <div class="col-lg-6"> | |||||
<div class="card" style="min-height: 630px;"> | <div class="card" style="min-height: 630px;"> | ||||
<div class="card-body overview-content"> | <div class="card-body overview-content"> | ||||
<!--<div class="card-title">方案命中主体词</div>--> | |||||
<div class="card-title">方案命中主体词</div> | |||||
<h4 class="card-title">方案命中分类统计</h4> | <h4 class="card-title">方案命中分类统计</h4> | ||||
<!-- <div class="secondtitle">方案配置分类统计排名</div> --> | |||||
<div class="secondtitle">方案配置分类统计排名</div> | |||||
<ul class="list-style-none keywords-box" id="category_rank"> | <ul class="list-style-none keywords-box" id="category_rank"> | ||||
</ul> | </ul> | ||||
</div> | </div> | ||||
</div> | </div> | ||||
</div> | |||||
</div> --> | |||||
</div> | </div> | ||||