首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

炸裂!450 万 + 行知识图谱数据,从 txt 到 Neo4j 的惊险蜕变DAY2

昨天,把超高质量的 txt 知识图谱数据转成了 csv 格式,为深入研究数据、搭建知识图谱和 RAG 应用打好基础。今天,我们有三个主要任务:摸透数据、处理数据问题、导入数据到 neo4j。这份数据有 450 万 + 行,下面是整个系列工作安排:

Day1

处理数据,转为知识图谱标准格式。

Day2

构建知识图谱,存数据到 Neo4J(本篇正在进行)。

Day3

企业批量创建,工程化处理知识数据。

Day4

学习 RAG,深入了解 langchain 核心。

Day5

融合 GraphRAG,增强 RAG 性能,搭建 kg+rag 应用。

今天,我们马上深入研究数据,边摸索、边分析、边修正。事不宜迟,马上开始今天的任务:

摸数据

了解数据特点,查看有无缺失值。

处理数据

找出并处理缺失值和非标准格式数据。

链接 neo4j

申请 key,连接本地环境。

导入 neo4j

在 Neo4j 里创建节点和边,导入处理好的数据。

第一部分:摸数据

刚完成 txt 到 csv 的格式转换,现在能深入探索数据了。

1.1 进入实践环境

激活 conda 环境

在命令行输入指定指令,激活之前创建的 medkg 环境。

进入 jupyter

输入对应指令,自动打开浏览器进入 jupyter notebook。

1.2 了解数据基本情况

导入数据,记得改文件路径。雄哥把数据加载到 “med_df” 这个 DataFrame 里。

接着用一些指令查看数据是否导入成功,以及行数和列数。

导入知识图谱要批量处理,所以得清楚哪些数据不符合标准。重点看这几点:

缺失值

单元格有空值,会影响知识图谱赋值和导入。

特殊符号

Neo4j 规范里,关系名不能有空格、括号、标点等特殊符号,不然 Cypher 创建图谱会报错。

重复值

重复值影响导入性能,可能重复创建,注意别误删数据。

这份 kg 数据质量高,做这些检查是怕 txt 转 csv 时出问题,毕竟有 460 万 + 条数据。

1.3 深入查看缺失值

用特定指令查看每列缺失值数量。

结果显示,第二列没缺失值,后面很多列有 42 万多缺失值,第一列有 125 行缺失。

第二部分:处理问题数据

把缺失值从原 DataFrame 提取出来存本地,方便后续处理,这部分数据本文不上传。

2.1 处理缺失值

提取缺失值后,用没缺失值的数据继续操作,通过指令查看是否还有缺失值。

2.2 处理特殊符号

简单介绍下 Cypher,它是 Neo4j 图数据库用的声明式查询语言,用于处理图形数据结构。基本规则和作用如下:

规则

模式匹配

用节点(() 表示)、关系([] 表示)和属性(键值对)匹配图数据,比如 (a)-[:FRIEND]->(b) 表示 a、b 节点有 FRIEND 关系。

语法结构

查询含 RETURN 子句(指定返回结果),以及 MATCH、WHERE 等子句(定义查询逻辑),像 MATCH (n) RETURN n; 就是匹配并返回所有节点。

命名规则

节点、关系用字母、数字、下划线命名,不能数字开头,属性名规则类似。

大小写敏感性

关键字不区分大小写,属性键和字符串值区分大小写。

注释

单行注释 // 开头,多行注释用 /*... */。

作用

数据查询

查询节点、关系、属性,执行图算法,如找最短路径。

数据修改

CREATE 创建节点和关系,SET 更新属性,DELETE 删除节点和关系。

模式匹配

定义复杂模式找特定图结构。

索引和约束

创建索引加快查询,定义唯一性等约束保证数据完整。

批量操作

执行批量插入、更新、删除。

脚本编写

组合多个查询成脚本自动化处理。

聚合和分组

用 RETURN 子句的聚合函数(COUNT、SUM 等)分组聚合查询结果。

用特定指令处理数据里的特殊符号,保证能正常导入 Neo4j。

处理完就可以准备接入 Neo4J 了。

第三部分:链接 neo4j

数据准备好了,开始接入 Neo4J。

申请 neo4j 账号及实例

复制指定链接在浏览器打开,填邮箱创建账号,邮箱激活后,回 neo4j 界面点同意,选免费套餐,点下载配置文件。下载文件里有 key ,在工作目录创建.env 文件,粘贴 key。

链接 neo4j

用特定指令连接配置文件到环境。

第四部分:导入数据到 neo4j

按代码操作,每行都有注释说明功能,因篇幅有些操作不细讲。导入数据按下面策略:

常量 (3 个)

“疾病”、“其他治疗”、“辅助治疗”

常变量 (2 个)

“胃十二指肠出血”、“禁食”

数据结构示例

头实体

胃十二指肠出血

头实体类型

疾病

关系

辅助治疗

尾实体

禁食

尾实体类型

其他治疗

A 点

A 点属性

边属性

B 点

B 点属性

用特定指令在 Neo4j 创建节点和边。

执行代码后,jupyter 右上角显示运行状态。

完成后,在 neo4j 刷新看导入结果,点右上角 Open 查看知识图谱节点和边,这样就完成数据从探索、处理到导入 Neo4j 的全部过程了!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Oad1gmO5l-xbgIR5bMXh6oLg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券