手机网站开发框架php,宝安建设网站,道滘网站仿做,网上注册公司流程和费用前言#xff1a; Hello大家好#xff0c;我是Dream。 在本次实战中#xff0c;我们将一起完成知识图谱Neo4j安装到实践全过程#xff0c;探索其中的关系和属性。知识图谱是一种以三元组形式存储的数据结构#xff0c;由实体、关系和属性组成#xff0c;能够帮助我们更好地… 前言 Hello大家好我是Dream。 在本次实战中我们将一起完成知识图谱Neo4j安装到实践全过程探索其中的关系和属性。知识图谱是一种以三元组形式存储的数据结构由实体、关系和属性组成能够帮助我们更好地理解和分析复杂的知识关系一起来看看吧~ 一、语义网络写入图形数据库
实验目的 1了解向数据库中写入语义网络的方法。 2简单使用Neo4j呈现语义网络。 实验要求 本次实验后能理解语义网络的 节点Node和关系(Relationship 在数据库中是如何呈现的。 实验原理 将一个事实用语义网络表示首先要找出它的节点再描述它与其他节点的关系最后用Python 写入数据库中。
实验准备
1.安装JDK
下载neo4j之前首先要安装JDK。
1.1 下载
官网下载链接https://www.oracle.com/java/technologies/javase-downloads.html JDK版本的选择一定要恰当建议jdk1.8 比较稳定 版本太高或者太低都可能导致后续的neo4j无法使用。 以下是安装路径
1.2 配置环境变量
安装好JDK之后就要开始配置环境变量了。 配置环境变量的步骤如下 在开始处直接搜索环境变量打开后会出现如下界面然后点击右下角处环境变量 在下方的系统变量区域新建环境变量命名为JAVA_HOME变量值设置为刚才JAVA的安装路径我这里是D:\大机场\java\java1。 编辑系统变量区的Path点击新建然后输入 %JAVA_HOME%\bin 打开命令提示符CMDWINR,输入cmd)输入 java -version若提示Java的版本信息则证明环境变量配置成功
2. 安装neo4j
安装好JDK之后就可以安装neo4j了。
2.1 下载
官方下载链接https://neo4j.com/download-center/#community 在这里我下载的是neo4j社区版5.8.0。 下载好之后直接解压到合适的路径就可以了无需安装
2.2 配置环境变量
接下来要配置环境变量了与刚才JAVA环境变量的配置方法极为相似因此在这里只进行简单描述。 在系统变量区域新建环境变量命名为NEO4J_HOME变量值设置为刚才neo4j的安装路径我这里是D:\大机场\neo4j\neo4j1。 编辑系统变量区的Path点击新建然后输入 %NEO4J_HOME%\bin最后点击确定进行保存就可以了。
3. 启动neo4j
以管理员身份运行cmd。
然后在命令行处输入neo4j.bat console 如出现此界面则证明neo4j启动成功。 在浏览器中输入界面中给出的网址http://localhost:7474/,则会显示如下界面。 默认的用户名和密码均为neo4j。 至此neo4j安装完毕~
实验步骤
1.从neomodel包导入类。
from neomodel import StructuredNode, StringProperty, RelationshipTo, RelationshipFrom, config2.连接Neo4j图形数据库。
config.DATABASE URL bolt://neo4i:neo4ialocalhost:7687即将要构造的事实为“树和草都是植物。树和草都有叶和根。水早是早且生长在水中。果树是树日会结里、烈树是里树的一种它会结梨”。
3.编写节点类。
植物、树、草、叶、根、水草、水、果树、结果、梨树、结架赵些节点英继承自StructuredNode类包括节点属性和连接关系。
class Plant(StructuredNode):name StringProperty(unique_indexTrue)has1 RelationshipFrom(Tree, AKO)has2 RelationshipFrom(Grass, AKO)have1 RelationshipTo(Leaf, Have)have2 RelationshipTo(Root, Have)
class Tree(StructuredNode):name StringProperty(unique_indexTrue)ako RelationshipTo(Plant, AKO)have RelationshipFrom(Fruiter, AKO)
class Grass(StructuredNode):name StringProperty(unique_indexTrue)ako RelationshipTo(Plant , AKO)has RelationshipFrom(Waterweeds, AKO)
class Leaf(StructuredNode):name StringProperty(unique_indexTrue)have RelationshipFrom(Plant, Have)
class Root(StructuredNode):name StringProperty(unique_indexTrue)have RelationshipFrom(Plant, Have)
class Waterweeds(StructuredNode):name StringProperty(unique_indexTrue)ako RelationshipTo(Grass , AKO)live RelationshipTo(Water, Live)
class Water(StructuredNode):name StringProperty(unique_indexTrue)have RelationshipFrom(Waterweeds, Live)class Fruiter(StructuredNode):name StringProperty(unique_indexTrue)ako RelationshipTo(Tree, AKO)can RelationshipTo(Bear, Can)have RelationshipFrom(Pear,AKO)class Bear(StructuredNode):name StringProperty(unique_indexTrue)have RelationshipFrom(Fruiter , Can)class Pear(StructuredNode):name StringProperty(unique_index True)ako RelationshipTo(Fruiter, AKO)can RelationshipTo(BearPear, Can)class BearPear(StructuredNode):name StringProperty(unique_indexTrue)have RelationshipFrom(Pear, Can)plant Plant(name植物).save()
tree Tree(name树).save()
grass Grass(name草 ).save()
leaf Leaf(name 叶 ).save()
root Ro4.根据类生成实例。
leaf Leaf(name 叶 ).save()
root Root(name根).save()
waterweeds Waterweeds(name水草).save()
water Water(name水 ).save()
fruiter Fruiter(name果树).save()
bear Bear(name结果).save()
pear Pear(name梨树).save()
bearpear BearPear(name结梨).save()5.创建实例之间的连接关系。
pear.ako.connect(fruiter)
pear.can.connect(bearpear)
fruiter.ako.connect(tree)
fruiter.can.connect(bear)
waterweeds.ako.connect(grass)
waterweeds.live.connect(water)
plant.have1.connect(leaf)
plant.have2.connect(root)
tree.ako.connect(plant)
grass.ako.connect(plant)实验结果 二、水浒传知识图谱构建
启动neo4j
以管理员身份运行cmd 在命令行处输入neo4j.bat console
如出现此界面则neo4j启动成功 在浏览器中输入界面中给出的网址http://localhost:7474/即可打开neo4j的可视化界面。
打开jupyter notebook
1.进入 jupyter notebook
在命令行中输入jupyter notebook命令并回车后会自动跳转到jupyter notebook的工作区页面。这样我们就可以开始进行知识图谱的构建了。
2.数据集下载
数据集triples.csv 链接https://pan.baidu.com/s/19vrJ1vkEf2lgchBkF8OALQ?pwdgn8o 提取码gn8o 数据说明构建知识图谱需要把数据处理成三元组实体1关系实体2或实体属性属性值的形式每个三元组(triples)可看成是由subject主语、predicate谓语和object宾语组成。知识图谱中的三元组主要包含两种一种是关系三元组relation triples另一种是属性三元组attribute triplesrelation triples中的subject和object均是实体而predicate通常被称为关系。attribute triples中的subject是实体而object则是取值(value)该值通常是一个数值或者文本其predicate通常称为属性。 数据又分为非结构化数据例如文本、文档、图片等半结构化文本如日志文件、XML文档、JSON文档等和结构化数据本实验使用的数据集是结构化的三元组数据无需做额外处理可以直接使用。
3.安装第三方库
为了能够顺利进行知识图谱构建我们需要安装一些必要的第三方库
安装py2neo库用于与neo4j图数据库进行交互。安装pyahocorasick,numpy和pandas库用于处理数据集和进行相关操作。
!pip install py2neo pyahocorasick numpy pandas
!pip install pytest-cov2. 0
!pip install pytest-filter-subpackage0. 1
!pip install typed ast 1. 4. 0
4.导包
在jupyter notebook中我们需要导入一些必要的库来进行知识图谱的构建。在代码开始的地方加入以下代码即可
import py2neo
from py2neo import Graph,Node,Relationship,NodeMatcher5.连接图数据库
为了能够与neo4j图数据库进行交互我们需要先连接到该数据库。接下来我们可以使用以下代码来连接图数据库 auth的值分别为neo4j登录时的账号和密码一定要使用安装时更改之后的密码否则无法连接到图数据库。
gGraph(neo4j://localhost:7687, auth(neo4j, mima))6.图谱构建
import csv
with open(rD:\PycharmProjects\知识表示\triples.csv,r, encodingutf-8) as f:readercsv.reader(f)for item in reader:if reader.line_num1:continueprint(当前行数:,reader.line_num,当前内容:,item)start_nodeNode(Person ,nameitem[0])end_nodeNode(Person, nameitem[1])relationRelationship(start_node,item[3],end_node)g.merge(start_node,Person, name)g. merge(end_node,Person,name)g.merge(relation,Person,name)这段代码将逐行读取数据集文件并将每行数据转换为三元组的形式进行图谱构建。 运行代码后可以在控制台上看到当前行数和对应的内容。
结果显示
结果显示 运行成功后我们可以在neo4j的可视化界面中查看已经构建好的知识图谱。
图谱可视化结果
我们可以在neo4j的可视化界面中通过查询相关节点和关系来查看已经构建好的水浒传知识图谱的可视化结果。 在界面中输入相应的Cypher查询语句即可。