知识图谱入门篇(一)
参考资料/视频👇
知识图谱的应用
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 删除节点属性
本文来自博客园,作者:xiaoyufuture,转载请注明原文链接:https://www.cnblogs.com/xiaoyufuture/p/18433627
posted on 2024-09-26 16:14 xiaoyufuture 阅读(175) 评论(0) 收藏 举报