前言:
在上《高级统计学》时,老师提到结合所学知识点自行设计任务,并利用所学完成。
近期正好在学习python的编程和利用neo4j开展知识图谱构建,于是在征得老师同意下,尝试完成任务:“统计近6年社科基金,并构建知识图谱。”
入门小白自学笔记,请高手勿喷。
一、任务:统计近6年与专业相关的社科基金,并构建知识图谱。
二、所用软件:pycharm、neo4j
三、步骤:
- 在全国哲学社会科学工作室官网查询近6年公布的社科基金项目(包括年度项目、青年社科、西部社科)
- 通过pycharm中的pandas库读取文件,提取所有文件中基金项目学科为(理论经济、应用经济、管理学)的项目名称,并保存为.txt文件;
- 采用pycharm中的jieba库进行分词;
- 在知网中国学术文献网络出版总库 >> 学科学术热点高频词汇
- Jieba分词
- 可以采用jieba.cut进行分词;
- 可以采用jieba.pseg.cut进行分词(可以显示词语词性);
- 可以采用jieba.analyse直接提取文件中的关键字
- 统计分词的情况并进行排序;
- 筛选高频词汇;
- 利用neo4j,建立社科基金知识图谱。(可用于查询)
四、分布式方法及结果:
在全国哲学社会科学工作室官网查询近6年公布的社科基金项目(包括年度项目、青年社科、西部社科)
1、通过pycharm中的pandas库读取文件,提取所有文件中基金项目学科为(理论经济、应用经济、管理学)的项目名称,并保存为.txt文件。
2、采用pycharm中的jieba库进行分。在知网中国学术文献网络出版总库 >> 学科学术热点-经济与管理科学学科高频词汇进行分词词库补充,根据知网高频学术热点进行分词词库补充。补充6000个高频词库,对提取出的项目名称进行分词。 最初的项目题目被分为了83782行,即83782个词(含重复词及空格行),加了高频词汇,变为73560,减少了10222个词,充分说明了补充分词词库的有效性。
3、统计分词的情况并进行排序。对原先去除空格行的69910行词(原为73560行),去除空格项,69910合并重复项并对每个词进行数量统计,最终产生5413个词。词频从最高的3548次到最低的1次。然后,筛选掉部分我们关注度不高的词性(比如p介词、f方位词、c连词、r代词等),最终结果如下:
五、利用neo4j,建立社科基金知识图谱。(可用于查询)
利用python中py2neo库,实现在python中进行neo4j知识图谱构建。成功实现数据的可视化。在Neo4j图数据库中,数据是通过节点、属性以及节点间关系来展现,每个节点可以拥有多个属性,不同节点之间也可以拥有多个关系,针对复杂的关系数据,Neo4j图数据库可以较好地实现可视化展示。并在这基础之上,针对传统数据库在表示数据表的连接时的局限性,Neo4j图数据库可概括为一个节点,从而大幅度提升数据检索时的效率。
Neo4j所开发的Bloom可视化工具,功能强大,非技术人员也可以轻松使用和可视化展示。neo4j可以完整显示数据库所有节点、属性及关系,该工具支持根据用户实际需求进行设置,显示部分需求信息,满足个性化需求。
六、利用neo4j开展数据查询
Neo4j图形数据库查询语法简单,但功能强大。比如我们需要查询样本数据库中“三峡大学2021年项目立项情况”,只需要利用neo4j的查询语句即可实现。如果我们知道中间的结构关系,我们可以依次输入,即输入“MATCH (a:Information) WHERE a.Place_the_unit="三峡大学" and a.Yaer="2021" 通过“RETURN count(a)”即可统计样本数量。
除了简单的条件和匹配查询,在neo4j Bloom工具中,Bloom允许用户始终对数据库运行全文搜索查询以获取其搜索输入,可以通过“Search phrase *功能自定义高级查询语句,预先定义静态搜索模板(不带参数)、带参数模板语句,并指定用于调用该查询的短语和参数,实现一键式高级查询。本实验中,我们自定义“项目名称或工作单位包含自定字符”的输出结果,即可查询到对应节点信息,以满足个性化高级查询功能。如下图属于,输入“数字经济”,即可查询到所有项目名称包含“数字经济”的项目,同时可以快速了解所有信息,以及进行关系构建。
未来,准备结合neo4j强大的数据库构建和分类功能,通过高频词汇进行分类,进一步实现数据的分类、关系构建等任务。