基于Django+LayUI+HBase的文献数据挖掘系统的实现

26 篇文章 7 订阅
11 篇文章 1 订阅

引言:本系统的目标是设计并实现一个基于分布式数据库HBase的文献数据挖掘系统,以帮助科研人员分析出相关科技前沿领域的专家、机构等的学术影响力。并挖掘领域高频词和不同协作者之间关系图谱,如此便可达到科研决策支持的目的。以下将从几个方面进行简要介绍。

一、开发意义

科研文献是科技与学术的载体,高效的分析科研文献对科技的发展有着重要的推动作用。准确地提取出期刊会议中科研文献元数据里所隐藏的信息,可提高科研文献分析的准确度与效率。

二、功能架构设计

本系统的功能主要分为三个模块,分别是数据统计分析结果展示平台后台管理系统数据存储平台,其总体功能架构如图所示。
在这里插入图片描述

三、系统实现

3.1 开发环境及框架配置

考虑到系统需求,采用在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服务器
后端框架Django2.0.1
前端框架LayUI2.4.5
前端框架Bootstrap3.3.7
可视化图库ECharts4.2.1
Hadoop3.0.3
Zookeeper3.4.13
Gephi复杂网络分析软件0.9.2
3.2 主要技术实现过程
  1. 搭建Hadoop平台。使用四台云主机(CentOS7.5)搭建集群,配置好HDFSZooKeeperHBase
  2. 异步爬取数据。使用Python中的asyncioaiohttp库实现异步爬虫,从而异步爬取AAAI人工智能会议的历年论文元数据(包括论文标题、摘要、作者、机构以及关键词等数据)存储到Excel表中,并对爬取的数据进行规则清洗和必要的人工清洗得到较为干净的数据
  3. 数据分析。①利用Excel函数进行数据去重、统计、排序;②利用Python构建作者数据的共现矩阵,然后将其三元组数据导入至Gephi软件进行复杂网络可视化并导出SVG可伸缩矢量图片;③利用LDA主题模型对论文摘要进行主题聚类,得到top5热门话题;④最终将清洗后的完整数据以及分析结果数据存储至位于云端的HBase中。
  4. Web系统开发。使用Django+LayUI+Bootstrap开发(对于前端样式冲突问题可通过提升优先级解决),主要功能有注册登录、忘记密码邮箱验证、个人中心信息修改、全局检索、论文下载、数据分析结果展示(使用EchartsGephi进行数据可视化)以及词云图(中文使用jieba分词,英文使用wordcloud分词)等。同时使用Django第三方插件xadmin进行后台管理系统的快速注册和绑定。
  5. 系统部署。最后将系统部署到云端Nginx服务器中。

四、系统界面展示

4.1 系统主界面展示

在这里插入图片描述
在这里插入图片描述

4.2 用户注册登录页面

①注册页面如下:
在这里插入图片描述
点击注册按钮后,系统邮箱会自动给注册用户邮箱发激活链接(如下图),当用户在个人邮箱中点击激活链接后方可登录,以此来确认注册为本人操作。
在这里插入图片描述
②登录页面如下:
在这里插入图片描述
③忘记密码页面如下,使用邮箱验证修改密码:
在这里插入图片描述
用户在收到邮件后点击修改页面链接后,跳转到如下页面进行密码修改。点击“提交”按钮后会自动跳转到登录页面进行登录。如图为修改密码页面图。
在这里插入图片描述

4.3 用户个人中心

用户成功登录进入系统主页面后,可进入个人中心查看个人信息,同时可以完善或修改自己的个人信息,其中包括头像、密码、昵称、性别和地址等信息。
在这里插入图片描述

4.4 全局检索功能

全局检索功能主要方便用户快速查找所需信息。其中,本系统提供了“标题”、“作者”和“机构”三个方面的模糊查询服务,并对英文关键词大小写不敏感。如图为按论文标题查找,关键词为Machine LEARNING

在这里插入图片描述

4.5 系统各项功能模块
4.5.1 论文所属国家分布(图表基于Echarts实现)

在这里插入图片描述
在这里插入图片描述
向下滑动可看到top10国家以及各个国家的具体论文发表机构分布(该表样式LayUI提供)。
在这里插入图片描述

4.5.2 AAAI会议历年中稿率

在这里插入图片描述

4.5.3 AAAI词云图

①动态词云图,使用WordArt第三方在线工具导入。
在这里插入图片描述
②静态词云图,使用Python中的wordcloud制作。
在这里插入图片描述

4.5.4 AAAI作者关系图谱

在对作者数据构建共现矩阵并得出其三元组存储形式后,将数据导入到Gephi,使用力引导布局绘制出如下知识图谱,并以SVG矢量可伸缩图片保存,将其导入到HTML中,借用开源JavaScript包svg_Zoom_Pan实现可无限伸缩且可平移的网页效果。(具体实现步骤见此)
在这里插入图片描述

4.5.5 AAAI会议论文主题聚类(使用LDA主题模型)

其中top5主题分别是:

  • 机器学习的理论和应用
  • 自然语言处理
  • 深度神经网络
  • 知识表现与垂直搜索
  • 博弈论与经济范式

在这里插入图片描述

4.5.6 AAAI会议论文概览及下载页面

在这里插入图片描述
点击标题链接后可进入到论文详情页面,可看到论文标题、摘要以及作者和所属机构,同时对于已登录用户可提供PDF论文下载服务。
在这里插入图片描述

4.5.7 AAAI会议论文作者统计

本系统对前五年的作者、前三年以及2018年的做了统计(其中细化为所有作者第一作者两部分)
在这里插入图片描述

4.5.8 AAAI会议论文机构统计

本系统同时对前五年、前三年和2018年机构做了统计,细化规则同上,此处不再赘述。
在这里插入图片描述

4.6 系统管理后台

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、完整代码及相关文件说明

完整代码见我的GitHub:DataMingingPaper

  1. 机构国家分布、论文接受率、论文概览、论文详情页面、词云图、作者和机构统计页面后端代码见:DataMingingPaper/apps/statistic/views.py;其路由设置DataMingingPaper/apps/statistic/urls.py
  2. 连接远程HBase以及相关HBase表操作代码见:DataMingingPaper/apps/statistic/connect_hbase.py
  3. 用户登录、注册、忘记密码找回、账号激活、个人中心信息修改及头像上传和404页面配置页面后端代码见:DataMingingPaper/apps/users/views.py
  4. 用户个人信息ORM代码见:DataMingingPaper/apps/users/models.py
  5. xadmin后台管理系统代码见:DataMingingPaper/apps/users/adminx.py
  6. 邮件发送代码见:DataMingingPaper/apps/utils/email_send.py
  7. 异步爬虫代码见:DataMingingPaper/spider/metadata_Coroutine_Spider.py
  8. 共现矩阵构建算法见:DataMingingPaper/others/Co-occurrence_Matrix.py
  9. LDA主题模型算法见:DataMingingPaper/others/LDAkeywords.py
  10. 词云图代码见:DataMingingPaper/others/wordcloud.py
  11. 各个HTML页面见:DataMingingPaper/templates/
  • 13
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
实现导出数据,你需要按照以下步骤进行操作: 1. 安装 pandas 和 django-excel-response 包,可以使用 pip install pandas 和 pip install django-excel-response 命令进行安装。 2. 在 views.py 文件中编写视图函数,用于处理导出数据的请求。在该函数中,你需要使用 pandas 库读取数据,并将其导出为 Excel 文件格式。然后将 Excel 文件返回给用户。这里使用 django-excel-response 包提供的 ExcelResponse 类来实现。 ```python import pandas as pd from django.http import HttpResponse from django_excel_response import ExcelResponse def export_data(request): # 从数据库中获取数据 data = YourModel.objects.all().values() # 转换为 Pandas 数据框 df = pd.DataFrame(list(data)) # 将数据导出为 Excel 文件 output = BytesIO() writer = pd.ExcelWriter(output, engine='xlsxwriter') df.to_excel(writer, index=False, sheet_name='Sheet1') writer.save() output.seek(0) # 返回 Excel 文件 return ExcelResponse(output.getvalue(), content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', status=200) ``` 3. 在 urls.py 文件中添加对应的 URL 路由,将导出数据的请求映射到视图函数。 ```python from django.urls import path from . import views urlpatterns = [ path('export-data/', views.export_data, name='export_data'), ] ``` 4. 在前端页面上添加一个导出数据的按钮,并使用 AJAX 请求后端视图函数,从而实现导出数据的功能。 ```html <button id="export-btn">导出数据</button> <script> $(document).ready(function() { $('#export-btn').click(function() { $.ajax({ url: '/export-data/', type: 'GET', success: function(response) { // 下载 Excel 文件 var link = document.createElement('a'); link.href = window.URL.createObjectURL(response); link.download = 'data.xlsx'; link.click(); } }); }); }); </script> ``` 这样就可以使用 DjangoLayui 和 Pandas 实现导出数据的功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SL_World

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值