Skip to content

Jayl1n/SmartAviationForecast

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

智能航空预报系统 (SmartAviationForecast)

第六届"中国软件杯"大学生软件设计大赛赛题-B1-基于互联网大数据的事件智能抓取和画像

赛题内容

赛题 基于互联网大数据的事件智能抓取和画像
赛题介绍 随着互联网大数据的发展,各种大数据的分析对各行业都产生了不同程度的影响。网站数据、社交媒体数据等是互联网大数据的重要组成部分。对于民航业领域,社会 事件的发生,会很大程度影响旅客的出行需求变化,从而影响航空公司飞机运力投放、航班编排、票价策略调整等,对互联网事件的准确抓取和分析能够帮助航空公 司更好的服务市场、服务旅客、提升收益。
业务场景 对 于航空公司来说,能否预先判断旅客的出行需求,可用于航空公司及行业管理部门决定行业运力投放的合理性,从而提高旅客服务水平、提高航空公司航班收益水 平。目前,仅靠航空公司拥有的数据是远远不够的,从互联网中获取大量的影响民航领域的信息能够帮助航空公司制定销售策略。而互联网事件数据,是其中非常重 要的一种数据来源。通过初步分析,对民航业可能有影响的事件主要可分为如下几类:政治会议(例G20)、展会、体育赛事、演唱会、突发异常天气等。对不同类型的事件分别分析,并建立一个相对统一的模型描述事件,用来分析其对旅客出行的影响。但是互联网上的数据复杂性非常高,一是事件数据来源多;二是各数据源对事件的描述非常复杂,来自不同数据源的同一事件,可能差别较大;三是事件数据一般为非结构化数据,其处理和分析有一定的难度。传统做法需要投入大量人工进行标注。因此要求参赛者具有抓取数据的技术和一定的自然语言处理能力,实现自动化。
功能性需求 实现互联网事件天级或更高频次抓取,能够采集政治会议、展会、体育赛事、演唱会、突发异常天气等各类中比较主要的事件,每个类型的事件数据至少来自2个数据源(网站)。 实现事件的去重功能,主要有两个方面,一是不同数据源(网站)的事件去重,二是不同天抓取的事件去重。 事件画像建模,即事件属性自动化提取。属性需包括主办方级别、影响区域范围、影响力度、影响人群等。4.可视化展现,可视化展示事件的影响情况,形式不限。5.加分项:参赛选手可从互联网上自行抓取民航有关的数据,并分析事件对民航相关数据的影响。注:本题"事件"可主要考虑国内事件。
非功能性需求 1.事件抓取频率:每天至少一次。2.事件应包括主要的影响力较大的事件,能涵盖指定时间段内主办方选取的事件为优。3.属性提取准确性高为优。4.可视化展现效果好者为优,形式不限。

解题思路

题目可分为三个模块:

  1. 数据采集
  2. 数据分析
  3. 数据可视化。

数据采集

这一模块,主要就是编写爬虫,采集互联网上的事件。

我们使用了Scrapy编写爬虫,采集以下数据源的事件:

  1. 大麦网
  2. E展会
  3. 中国天气网
  4. 学术会议云

事件去重功能

  • 同源事件去重

    1. 布隆过滤器(BloomFilter) 对每个事件的来源的url进行判断,实现第一重过滤。 这一方式不仅实现了初步的去重,还实现了采集模块的增量爬行,只会对未采集过的url,进行进一步采集, 大大缩短了采集的时间。

    2. 根据事件的 名称举办地点开始\结束日期,使用Hash算法生成相对唯一的事件指纹,采集过程结束后,删除数据库中指纹相同的记录。

  • 不同源事件去重

    查询数据库中相同 地点开始\结束日期 的记录,对事件名进行分词,使用 余弦相似度,判断事件相似度,删除相似度达到阀值的记录。

数据分析

分析部分,我们使用了深度学习的方式实现自动提取事件属性,平台使用的是Google的TensorFlow。由于出题只给了20 事件样例,所以我们对采集的一万条数据进行人工标注,经过分词、向量化输入我们搭建的卷积神经网络,进行学习。之后将学习到模型,应用到我们这一模块。

(模过较大,所以没有上传,需要模型可联系Jaylin)

数据采集、数据分析模块均由Python开发,详见数据采集及分析模块

数据可视化

可视化部分,我们搭建了一个网站,使用Echarts绘图,提供了大屏展示功能,适用于实时动态展示,监控状态,可将整个互联网上的事件分布情况展现出来。

主要由Java开发,详见可视化模块

效果图


团队 - 你的画像

学校: 成都航空职业技术学院

指导老师 - CWR

队员

  1. Jaylin
  2. HL
  3. LC

(排名不分先后)

一些题外话

接到这个比赛通知的时候是四月,早早就开始了技术选型。

第一版智能航空预报系统是纯Java开发,从爬虫到分析,再到可视化,每一个模块都是Java写的。统计了下,代码行数接近两万。后来好不容易通过了初赛(也没出乎意料,做的还不错),后来为了完善作品,尽量拿下一奖。从暑假开始,就开始设计第二版。

第二版,就是大家现在看到的样子。为了让爬虫更易维护,用Python重写了所有爬虫。为了提高采集效率,试过了很多缓存机制,后来才找到BloomFilter,实现增量采集(除了第一次采集会耗费两个小时左右,之后每次采集都不会超过15分钟)。为了数据属性提取效果更好,专程去学了深度学习、TensorFlow,又让队员自己分析了一万多条事件,拿来做训练集。后来数据分析模块,也就是这个属性提取功能的最终效果,都挺令我满意的。 关于可视化部分,直接放弃了原来的代码。根据现在比较流行的可视化样例,重新设计了一个,在进决赛的队伍里,应该算比较好的了吧。

比赛时候,B1赛题应该是最后一个评审的。我们是第一组,优势全无。周围混了一堆别的队的在听,关于数据源,有几个说了"每个类型基本都有两个数据源"的组,麻烦要点脸,用嘴写代码确实挺快的。评审的过程也没像赛题里说的,自己准备一份事件及属性数据作为评价标准。评委对赛题里的需求没问几个,扯着一堆无关的问题问。最后结果挺意外的,三等奖,没进二辩就算了,二奖也没混上。没懂别的队强在哪,属性提取用If-Else的,我也是服气。比赛说好鼓励使用开源工具,某评委老头对我用了别人的库,似乎很不满意啊。自动提取,给的事件样例少,算了,自己标注。评委:你们这个不可行啊。 谁家深度学习用20条数据做训练集?

软件杯,规模挺大,专业性很有问题,遇上出题人评还好说,其他的一波水过一波。给想要参加的同学一波忠告,出门右转见逼乎1 逼乎2

2017年09月11日

About

第六届软件杯赛题-B1-基于互联网大数据的事件智能抓取和画像-你的画像

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published