当前位置:   article > 正文

Python创建知识图谱_python 构建知识图谱

python 构建知识图谱


前言

使用Python读取CSV数据生成简易的知识图谱


一、环境搭建

pandas==1.1.5
py2neo==2021.0.1
  • 1
  • 2

若py2neo安装失败请升级pip

二、使用步骤

1.引入库

import pandas as pd
from py2neo import Graph, Node, Relationship
  • 1
  • 2

2.数据展示

事故灾害的一些数据:
在这里插入图片描述
博主提供一百条数据供个人学习实验
链接:https://pan.baidu.com/s/15fjkOMyaxZTVSocWeiRzuQ
提取码:qjbx

3.读入数据

# 字段映射字典
mapping_dict = {"发生时间": "occurrence_time",
                "发布时间": "release_time",
                "发生地点": "scene",
                "死亡人数": "death_toll",
                "受伤人数": "injury_toll",
                "直接损失": "direct_loss",
                "事故主体单位": "accident_unit",
                "灾害事故类型": "accident_type",
                "防范与整改": "prevention_rectification",
                "处理建议": "treatment_recommendations",
                "应急措施": "emergency_measure",
                "直接原因": "immediate_cause",
                "严重程度": "order_severity",
                "应急响应": "emergency_response"}
# 读取文件
storage_df = pd.read_csv('database/new.csv', encoding='utf-8')
# 获取列标签
columns_list = storage_df.columns.tolist()
# 获取数据条数
nums = len(storage_df['title'])
# 删除title列标签
columns_list.remove('title')
# 逆转映射字典
new_dic = dict(zip(mapping_dict.values(), mapping_dict.keys()))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

4.连接图数据库

# 连接数据库,输入个人配置
graph = Graph("http://localhost:7474//browser/", username='', password='', run="sub")
# 清空全部数据
graph.delete_all()
# 开启一个新的事务
graph.begin()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参数详细参考官方网站:https://py2neo.readthedocs.io/en/latest/

5.创建知识图谱

 for i in range(nums):
     data_dict = {}
     title = storage_df['title'][i]
     for columns in columns_list:
         if str(storage_df[columns][i]) != 'nan':
             data_dict[columns] = storage_df[columns][i]
     # 创建事件节点(主节点),节点属性
     node1 = Node("case", name=title, **data_dict)
     graph.merge(node1, 'case', 'name')
     # 删除id列
     data_dict.pop('id')
     # 创建关系与副节点
     for key, value in data_dict.items():
     	 # 创建副节点
         node2 = Node(key, name=value)
         graph.merge(node2, key, 'name')
         # 创建关系
         rel = Relationship(node1, new_dic[key], node2, type=key)
         graph.merge(rel)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

节点属性data_dict:
在这里插入图片描述
各个节点和关系都可以添加多个属性。

6.知识图谱展示

在这里插入图片描述


总结

工作随笔,希望可以帮助到大家!
如有不足之处,请多多指教!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/376690
推荐阅读
相关标签
  

闽ICP备14008679号