昨天,把超高质量的 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 的全部过程了!
领取专属 10元无门槛券
私享最新 技术干货