知识图谱入门篇(一)
1.知识图谱入门篇(一)
参考资料/视频👇
知识图谱的应用
1. 搜索引擎
2. 智能问答
3. 推荐系统
4. 语义理解
5. 决策分析
6. 智慧物联
7. ......
知识图谱构建流程
1. 数据获取
2. 实体识别
3. 关系抽取
4. 数据存储
5. 图谱应用
Neo4j 的使用(以股票知识图谱为例)
股票数据
公司代码 | 公司简称 | 上市日期 |
---|---|---|
600298 | 安琪酵母 | 2000-08-18 |
600036 | 招商银行 | 2002-04-09 |
300496 | 中科创达 | 2015-12-10 |
000988 | 华工科技 | 2000-06-08 |
002736 | 国信证券 | 2014-12-29 |
建立不同类型的节点
🔔创建节点的 Cypher 命令
create (Variable:Lable{Key1:Value1,Key2:Value2}) return Variable
—— 建立股票节点
# 【1】------删除数据库中以往的图,确保一个空白的环境进行操作------ # MATCH是匹配操作,而小括号()代表一个节点node(可理解为括号类似一个圆形),括号里面的n为标识符 match(n) detach delete n # 【2-1】------创建一个股票节点------ # CREATE是创建操作,Stock是标签,代表节点的类型。花括号{}代表节点的属性,属性类似Python的字典 # 这条语句的含义就是创建一个标签为Stock的节点,该节点具有name属性,属性值是'安琪酵母' create (n:Stock{name:'安琪酵母',code:'600298',launchdate:date("2000-08-18")}) return n # 【2-2】------创建多个股票节点------ # 在Cypher语言中,当想要创建多个节点时,每个节点都需要一个唯一的变量名 create (a:Stock{name:'招商银行',code:'600036',launchDate:date("2002-04-09")}), (b:Stock{name:'中科创达',code:'300496',launchDate:date("2015-12-10")}), (c:Stock{name:'华工科技',code:'000988',launchDate:date("2000-06-08")}), (d:Stock{name:'国信证券',code:'002736',launchDate:date("2014-12-29")})

图1 创建一个股票节点

图2 同时创建多个股票节点
——建立证券交易所节点
create (Variable:Lable{Key1:Value1,Key2:Value2}) return Variable # 【3】------创建多个证券交易所节点------ create (n:SecuritiesExchange{name:'上海证券交易所'}), (:SecuritiesExchange{name:'深圳证券交易所'}) return n

图3 同时创建多个证券交易所节点
——建立省市地方名称节点
create (Variable:Lable{Key1:Value1,Key2:Value2}) return Variable # 【4】------创建多个省市地方节点------ create (n:Province{name:'湖北'}),(:Province{name:'北京'}),(:Province{name:'广东'}) return n

图4 同时创建多个省市地方节点
建立节点之间的关系
——建立股票节点和证券交易所节点的关系
# 【5】------创建股票节点'安琪酵母'和证券交易所节点'上海证券交易所'的关系------ match (a:Stock),(b:SecuritiesExchange) where a.name='安琪酵母' and b.name='上海证券交易所' create (a)-[r:Exchange]->(b) return r

图5 创建股票节点和证券交易所节点间的关系
——建立股票节点和省市名称节点的关系
# 【6】------创建股票节点'安琪酵母'和省市名称节点'湖北'的关系------ match (a:Stock),(b:Province) where a.name='安琪酵母' and b.name='湖北' create (a)-[r:Area]->(b) return r

图6 创建股票节点和省市名称节点间的关系
查询节点和关系
—— 查询某个股票的节点
# 【7】------查询股票节点'安琪酵母'------ match (a:Stock) where a.name='安琪酵母' return a

图7 查询股票节点
——查询某个标签的所有节点
# 【8】------查询股票标签的所有节点------ match (a:Stock) return a

图8 查询某标签的所有节点
——查询两个节点之间的关系
# 【9】------查询股票节点'安琪酵母'和省市名称节点'湖北'间的关系------ match (:Stock {name:'安琪酵母'})-[r]->(:Province{name:'湖北'}) return type(r)

图9 查询节点之间的关系
——通过函数type获取关系的类型
# 【10】------通过type函数获取股票节点'安琪酵母'所有关系的类型------ match (:Stock {name:'安琪酵母'})-[r]->() return type(r)

图10 查询某节点所有关系的类型
删除节点和关系
—— 删除股票的节点
# 【11】------删除股票节点'中科创达'------ # 若该节点存在关系,则先删除关系,再删除节点 match (a:Stock) where a.name='中科创达' delete a

图11 删除股票节点'中科创达'
—— 删除某个标签的节点
# 【12-1】------删除标签'股票'节点------ match (a:Stock) delete a # 【12-2】------删除所有节点------ match (a) delete a


图12 删除标签节点
—— 删除两个节点的关系
# 【13】------删除节点'安琪酵母'和节点'湖北'之间的关系------ match (:Stock{name:'安琪酵母'})-[r]->(:Province{name:'湖北'}) delete r


图13 删除两节点关系前(左)删除两节点关系后(右)
—— 删除全部关系
#【14】------删除节点'安琪酵母'的所有关系------ match (:Stock{name:'安琪酵母'})-[r]->() delete r

图14 删除节点所有关系
更新图形
🔔更新图形的 Cypher 命令
set 子句用于更新节点的标签和实体的属性
remove 子句用于删除实体的属性和节点的标签
—— 增加节点属性
#【15】------为股票'安琪酵母'及创建新属性:名称简写------ match (a:Stock) where a.name='安琪酵母' set a.abbreviation='AQJM' return a

图15 增加节点属性
—— 删除节点属性
#【16】------删除股票'安琪酵母'的某一属性------ match (a:Stock) where a.name='安琪酵母' remove a.abbreviation

图16 删除节点属性
posted on 2024-09-26 16:14 xiaoyufuture 阅读(74) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY