导入csv文件构建知识图谱

使用 neo4j 构建知识图谱, neo4j 的使用就自行百度吧

1. 首先用 python 连接 neo4j,详细参考下面的代码

    没有安装 py2neo 和 pandas 的使用 pip install 一下

2. 然后 neo4j 不允许有空值,所以使用函数把空值填充一下,填充内容自己定

3. 最后遍历导入数据的每一行,创建新的结点即可

笔者这里的数据集均为属性,没有创建其他关系,后续用到笔者还会分享

from py2neo import Graph,Node,Relationship,NodeMatcher
import pandas as pd
# 连接Neo4j数据库,http://localhost:7474这个一般是默认的端口,auth参数第一个是你的账户名,第二个是你的密码
graph = Graph('http://localhost:7474',auth=("neo4j", "123456"),name='neo4j')
# 读取数据集,参数为数据集的位置,最好别加中文路径。前面的r是禁止转义的意思,就比如\n,你不加r就给你转成换行符了
resume = pd.read_csv(r'D:\neo4j-community-5.17.0\import\data_all.csv')
# 这几个是读取每一列的值,把空的值赋值为字符串未知,不然无法导入
resume['address'] = resume['address'].fillna('未知')
resume['last_active'] = resume['last_active'].fillna('未知')
resume['company'] = resume['company'].fillna('未知')
resume['title'] = resume['title'].fillna('未知')
resume['salary'] = resume['salary'].fillna('未知')
resume['education'] = resume['education'].fillna('未知')
resume['description'] = resume['description'].fillna('未知')
resume['hiring_manager'] = resume['hiring_manager'].fillna('未知')
# 遍历读取的每一行,添加结点
for i in resume.values:
   a = Node('resume',id=i[0],company=i[1],title=i[2],salary=i[3],education=i[4],description=i[5],hiring_manager=i[6],last_active=i[7],address=i[8],link=i[9])
   graph.create(a)

导入CSV文件到Neo4j构建知识图谱通常包括以下几个步骤: 1. **数据准备**: 首先,你需要有一个CSV文件,其中包含关系和节点的数据。每个记录可能是两个节点之间的关系,或者是节点属性信息。例如,如果文件是关于人-书的关系,那么可能会有两列,“Person”和“Book”,分别代表人物和书籍。 2. **安装依赖**: 确保已经安装了`neo4j-python-driver`库,这是Python连接 Neo4j 的官方驱动程序。 3. **连接数据库**: 使用`neo4j-driver`创建一个到Neo4j服务器的连接。```python from neo4j import GraphDatabase uri = "bolt://localhost:7687" # 根据实际情况替换 driver = GraphDatabase.driver(uri, auth=("username", "password")) ``` 4. **读取CSV并解析**: 通过pandas库可以方便地读取CSV文件,并将其转换为适合处理的对象。然后遍历每一行,提取关系和节点信息。 5. **创建Cypher查询**: Cypher是Neo4j的查询语言,用于将数据插入图结构。根据CSV数据,你可以编写如下的Cypher查询来创建节点和边: ```python def create_node(tx, data): query = f""" CREATE (:{data['type']} {data['properties']}) """ tx.run(query) def create_relationship(tx, source, relation, target): query = f""" MATCH (a), (b) WHERE a.id = $source AND b.id = $target CREATE (a)-[:{relation}]->(b) """ tx.run(query, source=source, target=target) ``` 6. **批量操作**: 打开一个事务(Transaction),然后对每行CSV数据执行上述的创建节点和关系操作。 7. **提交事务并关闭连接**: 当所有数据都处理完毕后,提交事务并关闭driver。 ```python with driver.session() as session: session.begin_transaction() for row in pd.read_csv('file.csv'): ... # 调用create_node 和 create_relationship函数处理每一行 session.commit() session.close() driver.close() ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海绵不是宝宝817

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值