python关系图谱_AI=>知识图谱之Neo4j-Cypher

Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待

4999元包邮

去购买 >

iphone.jpg

CRUD

创建

普通无属性创建(默认给你创建一个ID)

create (p:person)-[:eat]->(f:food)

带有属性的创建( {} )

create (p:person{name:'zhangsan'})-[:eat]->(f:food{name:'apple'})

给两个孤独的实体创建关系:

match

(a:animal),(c:color)

create (如果这里改为 merge 则是 “有则查询,无则创建”)

(a)-[h:have]->(c) return h

对应查询:

match

(a:animal),(c:color)

return a,c

删除 (delete)

match

(a:animal)-[h:have]->(c:color)

delete a,h,c

更新修改(set)

match

(f:food)

set f.age=20

查询

主体查询结构

match

(p:)-[:关系名]-[别名2:实体名]

return 别名1,别名2

普通条件查询1(whree)

match

(n:User)

where

n.name='Tom'

return n

普通条件查询2:( {} )

match

(p:person{name:'zhangsan'})-[:eat{level:1}]->(f:food{name:'apple'})

return p,f

正则条件查询(~)

match

(n:User)

where

n.name=~'T.*'

return n

包含条件查询(contains)

match

(n:User)

where

n.name contains 'T'

return n

多度查询

match (t:teacher)-[]-(s:student)-[]-(ss:score) return t,s,ss

# 注意1: [] 里面不写,代表所有关系

# 注意2: - 没有箭头,代表任意方向

# 注意3: 别名不可以重复指定, 所以我设置了 ss

多度关系: (通常是基于人脉来讲的)

1度关系:我 -> 你

2度关系:我 -> 你 -> 他

理解技巧: 算几度关系时,把自己(节点)捂住不看, 然后剩下几个人员节点,就是几度关系

特别注意:

多度查关系时,比如你查 3度关系的结果。

neo4j的图可能会把, 2度关系也画出来,why? 因为他通过2度关系也可直接得出结果。

(可理解为 条条大路通罗马。)

!!!但是最终有效的返回路径只是你最初想要的 3度。 (2度就不算了)

查询最短路径:

match (t:teacher), (s:student),

p=shortestpath( (t)-[*..]-(s) )

return p

# 注意: p= 之前有个逗号 ,

查询所有最短路径:

match (t:teacher), (s:student),

p=allshortestpaths( (t)-[*..]-(s) )

return p

# 注意1: 前面多个 all ,后面多个s

# 注意2: 所有最短路径的都会列出来。 人人平等~

索引

创建索引 (create)

create index on :food(name)

# food为实体名,name为属性名, 同时注意这个 :

删除索引(drop)

drop index on :food(name)

约束

创建约束

create constraint on (gf:girlfriend) assert (gf.name) is unique

删除约束

create constraint on (o:others) assert (o.name) is unique

聚合

统计个数(count)

match ... return count(别名)

限制取多少条 (limit)

match ... return 别名 limit 5 # 只取5条

知识图谱流程

数据抓取

知识模型设计

NER (远程监督)

关系抽取(Bootstrap)

知识推理

图谱存储(Neo4j Cypher)

检索/问答/推荐

实体抽取

BILSTM+CRF

关系抽取

Bootstrap方法:

1. 构建种子实体: "猫", "老鼠"。

2. 寻找包含 "猫" "老鼠" 的 句子:

找到句子:"猫和老鼠是好朋友"

可抽取关系: 和...是好朋友

3. 拿着抽取的关系再次寻找新句子:

找到新句子:"张三和里李四是好朋友"

提取出新实体: "张三", "李四"

4. 寻找包含 "张三" "李四" 的 句子:

找到句子:"张三经常和李四一起玩"

可抽取关系: 经常和... 一起玩

5. 拿着抽取的关系再次寻找新句子:

找到新句子:"王五和赵六是好朋友"

提取出新实体: "王五", "赵六"

...

...

循环反复

原文链接:https://segmentfault.com/a/1190000020853490

jd_dn250.png

jd_sj250.jpg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值