0 前言

  • 知识图谱属于一种特殊的结构化数据,具有良好的可读性;
  • 知识图谱是高效知识检索系统的一部分,摒弃的非结构化数据(如文本)的低效性;
  • 知识图谱的数据集来自于非结构化数据,其得益于对它进行自然语言处理的一系列流程(如:词性标注,命名实体识别,实体消歧等),自然语言处理之后的结构化数据可以存放在csv等结构化数据数据库中,常常以三元组的形式存放,还可以存放属性。

1 安装JDK

  • 方法自行度娘:先在官网下载最新的JDK,然后添加环境变量,最后如果运行不了neo4j的话,就重新安装老版本的JDK。

2 下载和安装neo4j

  • 方法自行度娘。

3 小试牛刀

  • 注意:先在cmd控制台进入到neo4j的安装主目录的bin文件夹,然后输入命令启动neo4j:
neo4j.bat console
  • 成功之后在浏览器上输入下面这个链接就可以进入知识图谱界面了:

(1) 创建节点

from py2neo import Graph, Node, Relationship, NodeMatcher
import py2neo
# py2neo import neo2j自带的语言



# 连接知识图谱
g = Graph('http://localhost:7474', user = 'neo4j', password = 'neo4j') # 这是系统默认的密码

g.run('match (n) detach delete n') # 删除现在的图

# 初始化两个节点,同时设置名称和属性!!!
test_node_1 = Node('Person', name = 'b站one')
test_node_2 = Node('Person', name = 'b站two')

# 在节点上添加属性
test_node_1['age'] = 18
test_node_1['sex'] = '男'
test_node_2['age'] = 16
test_node_2['sex'] = '女'

# 在图中创建节点!!!!
# g.create(test_node_1)
# g.create(test_node_2)

# 覆盖创建(采用这种方式进行创建!!)
g.merge(test_node_1, 'Person', 'name')
g.merge(test_node_2, 'Person', 'name')

(2)构建关系

friend  = Relationship(test_node_1,'friend',test_node_2) # 三元组的方式构建关系
g.merge(friend, 'Person', 'name') # 覆盖式创建friend!

(3)查询元素

matcher = NodeMatcher(g)
print(matcher.match('Person',name = 'b站one').first())

(4)查看效果

java知识图谱插件 知识图谱java实现_java知识图谱插件

4 一个小项目

  • 接下来的一篇技术文档是一个练手小项目,无非就是从数据集中导入一系列数据,然后一个for循环创建好知识图谱,原理很简单,但是这为我们后面的企业级项目奠定了基础;
  • 接下来的数据集是红楼梦人物关系数据集,数据集来源于网络,应该是红楼梦的学习者构建的。如果是目前的英文文本或者是中文文本,这类知识图谱的构建可以借助于自然语言处理实现,不过在准确度效果上有待提升。目前工业界都是自行进行规则的设定,以适应于自家企业非结构化数据的提取,进而构建出知识图谱。