请关注一下微信公众号:机器学习简明教程

当关系型数据库oracle、mysql或者hive中存在一张关于某个主题的表时,我们应该如何基于该表创建知识图谱?

我们来看一个简单的例子。

01 关系型表


这张表结构如上图所示,包含公众号名称,建立时间,传播知识的主题,作者共4个字段。

节点的创建有两种方法。第一种方法,可以把每个字段都做成节点,公众号名称字段就是节点的标签名,具体的字段值就是name属性值;第二种方法,可以把公众号名称做成一种节点,其他字段信息做成公众号信息节点。

关系的创建其实就是把上面这张表列转行,关系的标签就是字段名:建立于、传播和作者。

详细工程代码和描述如下。

02 抽取

from py2neo import Node, Graph, Relationship
import pandas as pd
# connect neo4j
graph = Graph("bolt://localhost:7687", username="neo4j", password="****")
label_1 = "公众号节点"
label_2 = "公众号信息节点"
graph.delete_all()
​
# step1:read data
data = pd.read_csv("./data/raw_data.csv", header=0)
data["建立于"] = data["建立于"].astype(str)
​
# step2 : extract nodes
node_list = list(set(data['公众号名']))

mac下执行命令pip install py2neo==3,安装指定版本的py2neo。

实例化Graph类,并通过该类连接neo4j。

第一类节点:抽取出“公众号名称”字段,去重后转成list。

# step3 : extract nodes
node_info_list = []
for i in list(data.columns)[1:]:node_info_list.extend(data[i])
node_info_list = list(set(node_info_list))

第二类节点:遍历除了“公众号名称”之外的所有字段值,去重后,放进node_info_list中。

# step4 : extract relationships
relation_data = pd.DataFrame()
for i in list(data.columns)[1:]:rel_data = data[["公众号名", i]]rel_data["关系"] = irel_data.columns = ["公众号节点", "公众号信息节点", "关系"]relation_data = pd.concat([relation_data, rel_data], axis=0)

关系三元组:基于原始的data,列转行抽取关系。

03 写入

def create_node(node_list, label):
for name in node_list:print(name)name_node = Node(label, name=name)print(name_node)graph.create(name_node)
create_node(node_list, label_1)
create_node(node_info_list, label_2)

创建节点:create_node遍历节点列表,创建标签为label的节点。

def create_relation(relation_data, label_a, label_b):
for m in range(0, len(relation_data)):print()rel = Relationship(graph.find_one(label_a, property_key="name", property_value=str(list(relation_data['公众号节点'])[m])),list(relation_data['关系'])[m],graph.find_one(label_b, property_key="name", property_value=str(list(relation_data['公众号信息节点'])[m])))graph.merge(rel, label=[label_b, label_a])create_relation(relation_data, label_1, label_2)

创建关系:create_relation遍历关系数据并创建关系。

日志:节点和关系抽取过程如上。


知识图谱:最后neo4j中会出现如上图所示的节点与关系。

知识图谱构建之二:从结构化数据到知识图谱相关推荐

  1. 知识图谱 (2)半结构化数据的知识抽取

    1. 半结构化数据定义 类似于百科.商品列表等那种本身存在一定结构但需要进一步提取整理的数据. 对于一般的有规律的页面,我们可以使用正则表达式的方式写出XPath和CSS选择器表达式来提取网页中的元素 ...

  2. 【作业】非结构化数据相关知识整理

    文章目录 1.非结构化数据是什么 2.非结构化数据处理困难的原因 3.处理非结构化数据的方法 1.非结构化数据是什么 非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑 ...

  3. python爬虫工程师 成长之路六(二) 非结构化数据之lxml库

    文章目录 lxml库 介绍 lxml库 使用 最后 lxml库 介绍 lxml是一个使用python编写的库,处理XML非常方便,另外还支持XPath,(上篇博客的XPath派上用处了XPath 基础 ...

  4. d2rq java,知识图谱学习与实践(6)——从结构化数据进行知识抽取(D2RQ介绍)...

    1 概述 D2RQ,含义是把关系型数据库当作虚拟的RDF图数据库进行访问.D2RQ平台是一个将关系型数据库当作虚拟的.只读的RDF图数据库进行访问的系统.提供了基于RDF访问关系数据库的内容,而无需复 ...

  5. 知识图谱学习与实践(6)——从结构化数据进行知识抽取(D2RQ介绍)

    1 概述 D2RQ,含义是把关系型数据库当作虚拟的RDF图数据库进行访问.D2RQ平台是一个将关系型数据库当作虚拟的.只读的RDF图数据库进行访问的系统.提供了基于RDF访问关系数据库的内容,而无需复 ...

  6. 结构化数据抽取成三元组_干货丨AI在数据防泄漏中的应用——知识图谱之知识抽取...

    随着技术的不断发展,AI(Artificial Intelligence,人工智能)逐渐在社会经济发展的方方面面深入,成为信息化时代最重要的支柱技术之一. 在数据安全领域领域,AI技术所能起到的作用越 ...

  7. 基于规则的结构化数据知识抽取(一)

    为了方便阅读,本文分成三篇文章进行发布,本文先介绍技术背景.统一数据格式设计和规则设计:第二篇介绍抽取程序设计:第三篇介绍规则配置交互设计 1. 背景 知识抽取是从数据中提炼.萃取知识信息的过程.按照 ...

  8. 知识抽取学习笔记:面向非结构化数据的抽取

    1概念 知识抽取,即从不同来源.不同结构的数据中进行知识提取,形成知识(结构化数据)存入到知识图谱.大体的任务分类与对应技术如下图所示: 2知识抽取的技术与难点 从结构化数据库中获取知识:D2R 难点 ...

  9. 微软熊辰炎:如何利用图神经网络解决半结构化数据问题?

    对于许多信息检索和知识图谱研究者来说,究竟应该使用抽象的结构化信息进行表示学习还是使用海量的文本信息始终是一个富有争议的话题.在本届智源大会上,来自微软研究院的高级研究员熊辰炎博士带来了题为" ...

最新文章

  1. 维基百科联手谷歌翻译,结果“惨不忍睹”!
  2. NSKeyedUnarchiver简单的数据存储
  3. 集群系统实现方案详解
  4. 基于Android平台的流媒体播放器的设计
  5. TensorFlow 使用例子-LSTM实现序列标注
  6. java 酒店系统_基于JAVA的酒店管理系统
  7. Android动画的实现 上
  8. C++数据抽象和问题求解(第6版)
  9. Android XML的操作(SAX)
  10. ps怎么撤销参考线_入门板绘怎么练习?怎么提高板绘技巧?(干货)
  11. 论文笔记:Visual Question Answering as a Meta Learning Task
  12. c语言代码表白_程序员教你表白:C/C++打造浪漫表白程序,找女朋友从现在开始...
  13. 它不是哆啦A梦 也能满足你的挑剔需求
  14. 计算机主机电源功率查,电脑电源功率怎么测试?查看电脑功耗的操作方法
  15. python流程图-python如何画流程图
  16. 使用 python 脚本爬取豆瓣电影排行榜
  17. 游戏服务端框架之配置与玩家数据库设计
  18. 聊聊Uber公司迁移数据库这件事
  19. 为Linux发行版安装中文字体
  20. 2022国赛数学建模思路 - 案例:集成算法AdaBoost

热门文章

  1. UI自动化测试面试题总结
  2. 我自己很喜欢的几款文案编辑软件
  3. Linux下搭建第一个区块链网络(FISCO BCOS)
  4. 【量化】量化交易入门系列5:量化交易学习书籍推荐(一)
  5. 使用Rational Performance Tester实现DB2 性能测试和监控
  6. 计算机教学在语文中应用,浅谈信息技术在中学语文教学中的运用
  7. C#、TypeScript 之父 Anders Hejlsberg:“会用 Excel 的,都是程序员 ”
  8. React-Antd-表单-必选样式
  9. Oracle 监听端口被占用,别的端口也提示占用
  10. HanLP中人名识别分析