自学笔记——利用python开展Neo4j图数据库知识图谱构建和统计分析

前言:

在上《高级统计学》时,老师提到结合所学知识点自行设计任务,并利用所学完成。

近期正好在学习python的编程和利用neo4j开展知识图谱构建,于是在征得老师同意下,尝试完成任务:“统计近6年社科基金,并构建知识图谱。”  

入门小白自学笔记,请高手勿喷。

一、任务:统计近6年与专业相关的社科基金,并构建知识图谱。

二、所用软件:pycharm、neo4j

三、步骤:

  1. 全国哲学社会科学工作室官网查询近6年公布的社科基金项目(包括年度项目、青年社科、西部社科)
  2. 通过pycharm中的pandas库读取文件,提取所有文件中基金项目学科为(理论经济、应用经济、管理学)的项目名称,并保存为.txt文件;
  3. 采用pycharm中的jieba库进行分词;
    1. 知网中国学术文献网络出版总库 >> 学科学术热点高频词汇
    2. Jieba分词
      • 可以采用jieba.cut进行分词;
      • 可以采用jieba.pseg.cut进行分词(可以显示词语词性);
      • 可以采用jieba.analyse直接提取文件中的关键字
  4. 统计分词的情况并进行排序;
  5. 筛选高频词汇;
  6. 利用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强大的数据库构建和分类功能,通过高频词汇进行分类,进一步实现数据的分类、关系构建等任务。

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
要使用Python批量创建知识图谱,可以按照以下步骤进行: 1. 准备数据,可以从各种来源获取数据,例如CSV文件、API接口等。 2. 使用PythonNeo4j驱动程序,例如py2neo或neo4j-driver,连接Neo4j数据库。 3. 使用Python的循环结构,遍历数据并创建节点和关系。例如,以下代码从CSV文件中读取数据并创建节点和关系: ``` from py2neo import Graph, Node, Relationship import csv graph = Graph('bolt://localhost:7687', auth=('username', 'password')) # 从CSV文件中读取数据 with open('data.csv', 'r') as f: reader = csv.reader(f) for row in reader: # 创建节点 person = Node('Person', name=row[0]) graph.create(person) # 创建关系 for i in range(1, len(row)): friend = Node('Person', name=row[i]) knows = Relationship(person, 'KNOWS', friend) graph.create(knows) ``` 4. 在创建节点和关系时,可以使用事务来提高效率和安全性。例如,以下代码使用事务来创建节点和关系: ``` from py2neo import Graph, Node, Relationship import csv graph = Graph('bolt://localhost:7687', auth=('username', 'password')) # 开始事务 tx = graph.begin() # 从CSV文件中读取数据 with open('data.csv', 'r') as f: reader = csv.reader(f) for row in reader: # 创建节点 person = Node('Person', name=row[0]) tx.create(person) # 创建关系 for i in range(1, len(row)): friend = Node('Person', name=row[i]) knows = Relationship(person, 'KNOWS', friend) tx.create(knows) # 提交事务 tx.commit() ``` 需要注意的是,批量创建知识图谱需要考虑数据量和性能问题,一般可以采用分批处理或异步处理等方式来提高效率。另外,为了保证数据的一致性和完整性,需要进行异常处理和事务管理。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值