知识图谱构建

1.导入Python库和模块用于处理CSV文件并与Neo4j图数据库交互

import csv
import py2neo
from py2neo import Graph,Node,Relationship,NodeMatcher

(1)import csv:导入 csv`模块,用于读取和写入CSV文件

(2)import py2neo:导入py2neo库,提供与Neo4j图数据库进行交互的接口

(3)Graph:用于连接和操作Neo4j图数据库的主要类

(4)Node:代表图数据库中的节点,节点是Neo4j中存储数据的基本单元。

(5)Relationship:表示图数据库中的关系,用于连接两个节点

(6)NodeMatcher:用于在图中查找特定节点

2.连接本地Neo4j图数据库实例,创建Graph对象用于数据库操作

graph = Graph("bolt://localhost:7687", auth=("neo4j", "12345678"))

(1)bolt://: Neo4j的Bolt协议,用于高效传输数据

(2)localhost :表示数据库运行在本地(即同一台机器上)

(3)7687 是Neo4j的默认Bolt端口,通常Neo4j会在这个端口上监听Bolt连接

(4)auth 参数用于设置数据库的用户名和密码。

3.读取CSV文件并逐行输出内容

with open('D:/bert/HLM.csv','r',encoding='utf-8')as f:
    reader=csv.reader(f)
    for item in reader:
        if reader.line_num==1:
            continue
        print("当前行数",reader.line_num,"当前内容:",item)

(1)with open()语句打开指定路径的CSV文件HLM.csv

(2)文件以只读模式('r')打开,编码格式为UTF-8

(3)使用with语句可以确保在文件操作完成后,文件会自动关闭

(4)通过csv.reader()函数创建一个CSV读取器reader,用于逐行读取文件内容

(5)使用for循环遍历CSV文件中的每一行,将当前行的内容存储在变量item中

(6)reader.line_num获取当前读取行号。如果行号是1(第一行),则使用continue跳过这行。这通常用于跳过CSV文件的表头

4.读取CSV文件,包含人物之间的关系信息。每一对人物作为节点,彼此之间的关系作为边,并将这些信息存储到图数据库中

with open('D:/bert/HLM.csv','r',encoding='utf-8')as f:
    reader=csv.reader(f)
    for item in reader:
        if reader.line_num==1:
            continue
        print("当前行数",reader.line_num,"当前内容:",item)
        start_node=Node("Person",name=item[0])
        end_node=Node("Person",name=item[1])
        relation=Relationship(start_node,item[3],end_node)
        graph.merge(start_node,"Person","name")
        graph.merge(end_node,"Person","name")
        graph.merge(relation,"Person","name")

(1)for循环:使用for循环逐行读取reader中的每一行内容,将其存储在变量item中。每一行是一个列表,包含多个字段

(2)通过判断行号是否为1来跳过CSV文件的第一行(标题行),避免将标题行作为数据处理

(3)start_node和end_node分别表示每行中两个相关联的“人物”

(4)Relationship类用于创建一个关系对象,连接start_node和end_node,关系类型为item[3],当前行的第三个字段

(5)merge方法用于将节点和关系合并到图数据库。merge方法会检查图中是否已有同名的节点或关系,如果已有相同的节点或关系,则不会创建新的节点或关系,确保图中数据的唯一性

(6)使用merge方法防止重复节点和关系的创建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值