引言:本系统的目标是设计并实现一个基于分布式数据库HBase的文献数据挖掘系统,以帮助科研人员分析出相关科技前沿领域的专家、机构等的学术影响力。并挖掘领域高频词和不同协作者之间的关系图谱,如此便可达到科研决策支持的目的。以下将从几个方面进行简要介绍。
科研文献是科技与学术的载体,高效的分析科研文献对科技的发展有着重要的推动作用。准确地提取出期刊会议中科研文献元数据里所隐藏的信息,可提高科研文献分析的准确度与效率。
本系统的功能主要分为三个模块,分别是数据统计分析结果展示平台、后台管理系统和数据存储平台,其总体功能架构如图所示。
考虑到系统需求,采用在CentOS系统上,搭建整个开发和运行环境,其中包括Hadoop分布式平台以及HBase分布式数据库,在Win10上搭建Django框架和关系型数据库MySQL等必要的开发环境。
环境/框架 | 名称/版本 |
---|---|
操作系统 | CentOS 7.5+Win10 |
数据库 | MySQL 5.7+HBase 2.1.0 |
数据库管理软件 | Navicat-10.1.7 |
主要编程语言 | Python-3.6.6 |
Web服务器 | Nginx服务器 |
后端框架Django | 2.0.1 |
前端框架LayUI | 2.4.5 |
前端框架Bootstrap | 3.3.7 |
可视化图库ECharts | 4.2.1 |
Hadoop | 3.0.3 |
Zookeeper | 3.4.13 |
Gephi复杂网络分析软件 | 0.9.2 |
- 搭建Hadoop平台。使用四台云主机(CentOS7.5)搭建集群,配置好HDFS,ZooKeeper和HBase。
- 异步爬取数据。使用Python中的
asyncio
和aiohttp
库实现异步爬虫,从而异步爬取AAAI人工智能会议的历年论文元数据(包括论文标题、摘要、作者、机构以及关键词等数据)存储到Excel表中,并对爬取的数据进行规则清洗和必要的人工清洗得到较为干净的数据。 - 数据分析。①利用Excel函数进行数据去重、统计、排序;②利用Python构建作者数据的共现矩阵,然后将其三元组数据导入至
Gephi
软件进行复杂网络可视化并导出SVG
可伸缩矢量图片;③利用LDA主题模型对论文摘要进行主题聚类,得到top5热门话题;④最终将清洗后的完整数据以及分析结果数据存储至位于云端的HBase中。 - Web系统开发。使用
Django
+LayUI
+Bootstrap
开发(对于前端样式冲突问题可通过提升优先级解决),主要功能有注册登录、忘记密码邮箱验证、个人中心信息修改、全局检索、论文下载、数据分析结果展示(使用Echarts
和Gephi
进行数据可视化)以及词云图(中文使用jieba
分词,英文使用wordcloud
分词)等。同时使用Django第三方插件xadmin
进行后台管理系统的快速注册和绑定。 - 系统部署。最后将系统部署到云端Nginx服务器中。
①注册页面如下:
点击注册按钮后,系统邮箱会自动给注册用户邮箱发激活链接(如下图),当用户在个人邮箱中点击激活链接后方可登录,以此来确认注册为本人操作。
②登录页面如下:
③忘记密码页面如下,使用邮箱验证修改密码:
用户在收到邮件后点击修改页面链接后,跳转到如下页面进行密码修改。点击“提交”按钮后会自动跳转到登录页面进行登录。如图为修改密码页面图。
用户成功登录进入系统主页面后,可进入个人中心查看个人信息,同时可以完善或修改自己的个人信息,其中包括头像、密码、昵称、性别和地址等信息。
全局检索功能主要方便用户快速查找所需信息。其中,本系统提供了“标题”、“作者”和“机构”三个方面的模糊查询服务,并对英文关键词大小写不敏感。如图为按论文标题查找,关键词为Machine LEARNING
。
向下滑动可看到top10国家以及各个国家的具体论文发表机构分布(该表样式由LayUI
提供)。
①动态词云图,使用WordArt第三方在线工具导入。
②静态词云图,使用Python中的wordcloud
制作。
在对作者数据构建共现矩阵并得出其三元组存储形式后,将数据导入到Gephi
,使用力引导布局绘制出如下知识图谱
,并以SVG
矢量可伸缩图片保存,将其导入到HTML
中,借用开源JavaScript包svg_Zoom_Pan
实现可无限伸缩且可平移的网页效果。(具体实现步骤见此)
其中top5
主题分别是:
- 机器学习的理论和应用
- 自然语言处理
- 深度神经网络
- 知识表现与垂直搜索
- 博弈论与经济范式
点击标题链接后可进入到论文详情页面,可看到论文标题、摘要以及作者和所属机构,同时对于已登录用户可提供PDF论文下载服务。
本系统对前五年的作者、前三年以及2018年的做了统计(其中细化为所有作者和第一作者两部分)
本系统同时对前五年、前三年和2018年机构做了统计,细化规则同上,此处不再赘述。
完整代码见我的GitHub:DataMingingPaper
- 机构国家分布、论文接受率、论文概览、论文详情页面、词云图、作者和机构统计页面后端代码见:
DataMingingPaper/apps/statistic/views.py
;其路由设置见DataMingingPaper/apps/statistic/urls.py
- 连接远程HBase以及相关HBase表操作代码见:
DataMingingPaper/apps/statistic/connect_hbase.py
- 用户登录、注册、忘记密码找回、账号激活、个人中心信息修改及头像上传和404页面配置页面后端代码见:
DataMingingPaper/apps/users/views.py
- 用户个人信息ORM代码见:
DataMingingPaper/apps/users/models.py
xadmin
后台管理系统代码见:DataMingingPaper/apps/users/adminx.py
- 邮件发送代码见:
DataMingingPaper/apps/utils/email_send.py
- 异步爬虫代码见:
DataMingingPaper/spider/metadata_Coroutine_Spider.py
- 共现矩阵构建算法见:
DataMingingPaper/others/Co-occurrence_Matrix.py
- LDA主题模型算法见:
DataMingingPaper/others/LDAkeywords.py
- 词云图代码见:
DataMingingPaper/others/wordcloud.py
- 各个HTML页面见:
DataMingingPaper/templates/