Advertisement

python构建知识图谱_构建知识体系的知识图谱

阅读量:

任务:利用Neo4j构建图片所示内容

3e2263b33bef0b30994d5db1555eaa23.png

第一步:下载jdk

jdk1.8下载地址:

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

如下图,根据系统的版本下载相对应的jdk
eebdceab1daffe43a989ab11f16eeca5.png

下载之后直接双击运行,可自定义安装目录,如:
b19b68fbde7c90dadcf4bc2d5e95462d.png

第二步:配置系统java环境

1、新建系统变量JAVA_HOME
2456eb3e110ea9796a997a9561f83248.png

2、编辑系统变量Path,添加如下两条:
45a0fd7869100195e20731af639abe2e.png

3、新建系统变量CLASSPATH
2c259ba95f0f6da2d693f5d93f65fd96.png

以上就已经配置好java环境了,然后cmd,java -version

出现:java version "1.8.0_221" 就表示java环境安装配置成功。

第三步:下载Neo4j安装文件

直接上官网下载社区版 的对应操作系统的Neo4j安装文件
dc4c261aa817a985ba8b8f96ee379902.png
2996f7b0be64b8971697f73f7ee83138.png

然后解压,位置随便哪都可以,我是解压到如下位置:
8b64aa2fc45d0264d0718e3f1fcc2f0e.png

第四步:Neo4j的配置,及服务启动

1、新建系统变量NEO4J_HOME
66e7c7fae0273d213bb9d0f6d8406978.png

2、设置Neo4j的常用配置

(1)、设置默认的监听地址,在默认情况下,Neo4j只允许本地主机(localhost)访问,要想通过网络远程访问Neo4j数据库,需要修改监听地址为 0.0.0.0,这样设置之后,就能允许远程主机的访问。例如:

HTTP Connector. There can be zero or one HTTP connectors.

dbms.connector.http.enabled=true

dbms.connector.http.listen_address=0.0.0.0:7474

(2)、设置安全验证,默认是启用的,我这里改为不启用,是因为默认第一次进去会让修改密码,我老是修改不起,所以就改为不验证了。(这一步非必须)

Whether requests to Neo4j are authenticated.

To disable authentication, uncomment this line

dbms.security.auth_enabled=false

(3)、将Neo4j安装为服务(Windows Services)

安装:neo4j install-service
卸载:neo4j uninstall-service

(4)、启动、停止服务

neo4j start

neo4j stop

neo4j restart

操作示例:
d65658a1d72267b9e108a5f745efd22b.png

(5)、登录

默认的host是bolt://localhost:7687(我这里改为了:http://本机ip:7474),默认的用户是neo4j,默认的密码是:neo4j。进入以下界面,就可以开始通过Cypher命令,创建节点和关系,构建自己的知识图谱了。
11bd04d3670b4fe5b60cdb7bdd58a9f9.png

第五步:通过Cypher命令,创建节点和关系,构建知识图谱

1、创建节点:

CREATE (j:Job { name: '自动化办公' }) return j;
e2df59d030b05498b907a5c3103677fb.png

2、创建关系:

match(j:Job{name:"自动化办公"}),(k:Knowledge{name:"Python基础"}) create (j)-[h:Have]->(k)

return j,k,h;
8d70f92ace65737dae65426586e9e363.png

只利用这两种命令实际上就可以创建第一张图那样的知识图谱了。

补充知识:删除所有的节点:match n= () delete n

我先把之前创建的两个实体和一个关系删除:MATCH p=()-[r:Have]->() delete p

创建岗位节点:

复制代码
 CREATE (j1:Job { name: '自动化办公' }),(j2:Job { name: 'Web开发' }),(j3:Job { name: '爬虫' }),

    
 (j4:Job { name: '数据分析' }),(j5:Job { name: '人工智能' }),(j6:Job { name: '大数据' }) 
    
 return j1,j2,j3,j4,j5,j6;
0bbcc6fcc35eeabbc7460a404fe583f7.png

创建知识节点:

复制代码
 CREATE (k1:Knowledge { name: 'Linux' }),(k2:Knowledge { name: 'CSS' }),(k3:Knowledge { name: 'xpath' })

    
 ,(k4:Knowledge { name: '网络' }),(k5:Knowledge { name: 'HTML' }),(k6:Knowledge { name: 'Windows办公软件' })
    
 ,(k7:Knowledge { name: '所属行业的业务知识' }),(k8:Knowledge { name: '统计' }),(k9:Knowledge { name: '机器学习' })
    
 ,(k10:Knowledge { name: '高数' }),(k11:Knowledge { name: '深度学习' }),(k12:Knowledge { name: 'Python基础' })
    
 ,(k13:Knowledge { name: '文件处理' }),(k14:Knowledge { name: 'Requests' }),(k15:Knowledge { name: 'Flask' })
    
 ,(k16:Knowledge { name: 'Django' }),(k17:Knowledge { name: 'bs4' }),(k18:Knowledge { name: 'scrapy' })
    
 ,(k19:Knowledge { name: 'MySql' }),(k20:Knowledge { name: 'MongoDB' }),(k21:Knowledge { name: 'Hive' })
    
 ,(k22:Knowledge { name: 'Hbase' }),(k23:Knowledge { name: 'Scala' }),(k24:Knowledge { name: 'spark' })
    
 ,(k25:Knowledge { name: 'Hadoop' }),(k26:Knowledge { name: 'JAVA' }),(k27:Knowledge { name: 'FLink' })
    
 ,(k28:Knowledge { name: 'Storm' }),(k29:Knowledge { name: 'Kafka' }),(k30:Knowledge { name: 'flume' })
    
  return k1,k2;

创建岗位方向节点:

复制代码
 CREATE (j1:JobDirection { name: '视觉' }),(j2:JobDirection { name: '语音' }),(j3:JobDirection { name: 'NLP' })

    
 ,(j4:JobDirection { name: '推荐' }),(j5:JobDirection { name: '离线计算' }),(j6:JobDirection { name: '实时计算' })
    
  return j1,j2,j3,j4,j5.j6;

查看一下所有节点:match (n) return n;
11ec451957e949a3b08d4fd284867480.png

接下来就是创建关系,我这里就只用一种关系了,命令都一样的。例如:

复制代码
 match(j:Job{name:"自动化办公"}),(k:Knowledge{name:"Python基础"}) create (j)-[h:Have]->(k) return j,k,h;

    
 match(j:Job{name:"Web开发"}),(k:Knowledge{name:"Python基础"}) create (j)-[h:Have]->(k) return j,k,h;
    
 match(j:Job{name:"Web开发"}),(k:Knowledge{name:"Linux"}) create (j)-[h:Have]->(k) return j,k,h;

创建好所有的关系之后查看结果:MATCH (n) RETURN n
6e4c6bda598ab07ae3ef9adb362b35b6.png

到此,从安装java环境,到安装Neo4j,到创建第一张图所示的知识图谱就已经完成了。

以上只是用了cypher命令来创建节点和关系,实际上应该是使用代码来创建的。这个后面再继续学习吧。

全部评论 (0)

还没有任何评论哟~