今天开始学习知识图谱的相关内容,在这里简单记录一下我的学习过程
1 安装Java SE 11
首先需要保证电脑上安装了Java,一开始我安装的是Java SE 16,后来运行有报错
WARNING! You are using an unsupported Java runtime.
* Please use Oracle(R) Java(TM) 11, OpenJDK(TM) 11 to run Neo4j.....
大概报错是这样,意思是需要安装Java SE 11才可以,官方下载地址点击这里。
在oracle官网下载Java SE 11需要注册,如果嫌麻烦的话可以点击这里下载
安装JDK应该都会吧,点击客户端后一直下一步,然后在环境变量的path中添加就可以了,成功后在命令行中输入java -version,查看版本是否正确
2 安装neo4j
我用的图数据库是neo4j,下的是社区版,下载地址点击这里。
下载完成后解压缩,然后点击bin目录下的 neo4j.bat。
完成后运行cmd,输入neo4j,效果如下
3 启动neo4j
这里介绍两种方式启动neo4j
一种是使用管理员身份运行cmd,然后输入neo4j console,结果如图:
这种方式每次都需要手动启动,比较麻烦。
另一种可以直接运行
neo4j install-service
然后打开服务(win+service),在服务中找到Neo4j Graph Database - neo4j,双击后点击启动
这样服务就会在每次开机时自动启动了。
如果需要停止/启动服务,也可以在命令行输入
neo4j stop
neo4j start
4 第一次使用neoj4
打开浏览器,输入
http://localhost:7474/
第一次登陆界面如下:
默认的 host 是 bolt://localhost:7687,默认的用户是 neo4j,默认的密码是:neo4j。
第一次成功 connect 到 Neo4j 服务器之后,需要重置密码。
第一次登陆成功后画面如图,点击中间的open guide:
在guide中点击相应代码,代码即会自动复制至输入行,点击运行,即可实现相应操作,如下图,建立了一个关于电影的图:
代码运用的是cypher语句,具体内容在这里不做详述。
还可以点击下一步查看相关其他操作。
点击code可以查看图谱的具体代码。
5 其他操作
对数据库进行添加、改名等操作。
首先讲一下如何设置默认数据库。
来看一下Neo4j 目录结构:
bin 目录:用于存储 Neo4j 的可执行程序;
conf 目录:用于控制 Neo4j 启动的配置文件;
data 目录:用于存储核心数据库文件;
plugins 目录:用于存储 Neo4j 的插件;
前面的图可以看到我使用的数据库名为neo4j,第一次使用时会自动创建两个数据库,neo4j和system,此时的默认数据库为neo4j,可以在 %neo4j_home%\data\databases 目录下查看。
进入%neo4j_home%\conf目录,打开neo4j.conf,可以看到有一行 #dbms.default_database=neo4j
这里的井号键#是注释,去掉井号键#,在后面修改你想要的数据库名称,然后重启服务,刷新页面即可
再次进入 %neo4j_home%\data\databases 目录,我们可以看到这里多了一个database.db的文件夹,就是我们新建的数据库,并且这个就是我们的默认数据库。
如果我们想要将别的数据库里的内容移植过来,只要将数据库copy到这个目录下,并将其名字改为database.db就可以了。
6 简单的Cypher语句使用
6.1 节点的生成
在页面中输入
CREATE (n:Person { name: 'Andres', title: 'Developer' }) return n;
点击运行,即可创建一个name为Andres,title为Developer的Person节点,其中的name和title都是属性,后面是属性的值。可以点击节点修改节点的颜色等。
可以用这种方式生成多个节点,点击左边的Person就可以查看我们生成的节点了,点击后页面会显示
MATCH (n:Person) RETURN n LIMIT 25
意思是显示n个Person节点中的25个,可以通过修改LIMIT后面的数字控制显示的节点数,也可以去掉LIMIT X来显示全部节点。
6.2 边的生成
边,也就是知识图谱中的关系,在页面中输入下列语句,点击生成:
match(n:Person{name:"Vic"}),(m:Person{name:"Andres"}) create (n)-[r:Friend]->(m) return r;
这句话的意思是,找到一个name为Vic的人,命名为n,找到一个name为Andres的人,命名为m,创建一个Friend关系,这个关系的名字叫r
点击左边的Friend就可以看到现在的图谱了,需要注意的是这里创建的关系是一个单向的关系,我这边创建了两个关系。
这里我们可以看到点击关系是有如下语句,意思是返回节点到节点间,关系为Friend的图谱:
MATCH p=()-[r:Friend]->() RETURN p LIMIT 25
如果想直接返回整个图谱,也可以直接输入:
MATCH (n) RETURN n
7 知识图谱的应用
知识图谱是把所有的信息都存储成三元组的形式,即a-关系-b,a-属性-b。
搜索引擎很好的运用了这点,在搜索时可以直接对相关信息进行搜索。
如搜索“刘邦的老婆是谁”,则会搜索与刘邦这个节点有夫妻关系的人。
如搜索“北京的面积有多大”,则搜索北京这个节点的面积属性值。
还有例如企查查等网站,也可以看到知识图谱的运用。
在电商的推荐页面,也会通过搜索历史来关联相关内容进行推荐。
还有一些智能QA产品也运用了知识图谱,如苹果siri等。