使用Neo4j进行关系挖掘实践

简介: 基于企业和老板的关系数据,使用Neo4j进行关系挖掘实践

使用Neo4j进行关系挖掘实践

介绍

Neo4j是一种图数据库,它可以存储和查询复杂的实体和关系网络。它基于图论的原理,使用节点和边来表示数据和它们之间的联系。

企业和老板关系是一种典型的图数据,它可以用Neo4j来建模和分析。我们可以把企业作为节点,把老板作为节点,把老板拥有或管理企业的关系作为边,把企业之间的合作或竞争关系作为边。这样就构成了一个企业和老板关系图谱。

利用Neo4j,我们可以进行各种关系挖掘,比如:

  • 查询某个企业的最终受益人或者实际控制人
  • 查询某个老板拥有或管理哪些企业
  • 查询某个企业的所有老板或高管
  • 查询某两个老板是否有共同拥有或管理的企业
  • 查询某两个企业是否有合作或竞争的关系
  • 查询与某个老板或企业最相关或最相似的其他老板或企业
  • 老板唯一标识的分配

关系挖掘

下面是一个简单的例子,展示了如何使用Neo4j进行关系挖掘。

假设我们有一个包含以下数据的企业和老板关系图谱:

我们可以使用Cypher语言来编写如下查询:

// 查询马云拥有或管理哪些企业
MATCH (b:Boss {name: "马云"})-[:OWN|MANAGE]->(c:Company)
RETURN b.name, c.name

// 查询阿里巴巴的所有老板或高管
MATCH (b:Boss)-[:OWN|MANAGE]->(c:Company {name: "阿里巴巴"})
RETURN b.name, c.name

// 查询马云和刘强东是否有共同拥有或管理的企业
MATCH (b1:Boss {name: "马云"})-[:OWN|MANAGE]->(c:Company)<-[:OWN|MANAGE]-(b2:Boss {name: "刘强东"})
RETURN b1.name, b2.name, c.name

// 查询阿里巴巴和京东是否有合作或竞争的关系
MATCH (c1:Company {name: "阿里巴巴"})-[r:COOP|COMPETE]->(c2:Company {name: "京东"})
RETURN c1.name, r.type, c2.name

// 查询与马云最相关的其他老板(基于邻居信息)
MATCH (b1:Boss {name:"马云"})-[r1]->(n)<-[r2]-(b2:Boss)
WHERE b1 <> b2
WITH b1, b2, count(n) as common_neighbors
ORDER BY common_neighbors DESC LIMIT 5
RETURN b1.name, b2.name, common_neighbors

// 查询马云实际控股的公司
MATCH
path=(b1:Boss {name:"马云"}})-[r:invest*..9{deleted: 0}]->(c:Company) 
with c,
sum(reduce(s=1.0, i in r | s*toFloat(i.capital_ratio))) as capital_ratio,collect(path) as paths
where capital_ratio>=0.25
return c,paths
...

思考 如何基于现有关系挖掘新的关系

以上的关系挖掘基于已有完整数据,但是目前我们缺失老板的唯一标识,就无法查询某个老板的关系链

现有数据:企业信息、企业和老板的单点关系、企业和企业的单点关系
最终需要实现挖掘新的关系链,增加以老板为入口的查询方式

思路

  1. 通过已存在的企业关系绘制图谱
  2. 将所有有关系的企业进行分组然后根据Boss的姓名进行聚合,从而给每个Boss进行唯一标识的分配。
  3. 将分配好的Boss唯一标识数据灌入图谱,再次进行以上操作用于优化,最终得到新的关系数据
  4. 实测因为数据量过大,所以不能够一次性聚合得到结果,所以采用遍历的方式每次遍历深度为3的关系数据
  5. 实测最终得到新的关系覆盖率达到95%以上,足以满足需求
相关文章
|
12月前
|
JavaScript 前端开发 定位技术
Cesium介绍和入门
这篇文章介绍了Cesium的基本概念及其在Web开发中的应用,包括如何集成Cesium并使用它来创建和展示3D地图。
1096 4
Cesium介绍和入门
|
负载均衡 Ubuntu 应用服务中间件
|
安全 Linux 网络安全
如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)
如何在 VM 虚拟机中安装 Red Hat Enterprise Linux 9.3 操作系统保姆级教程(附链接)
|
Java Linux PHP
15款免费IDE,推荐给开发者
本文为您推荐大量的开源、免费的IDE,精选15个免费IDE,推荐给大家。列表如下: Komodo Edit(Windows, Mac, Linux) Komodo IDE可以在Windows、Mac OS X 和 Linux上运行,并支持通用的开源语言——Perl、PHP和Ruby。
3756 0
|
NoSQL 搜索推荐 Java
使用Spring Boot实现与Neo4j图数据库的集成
使用Spring Boot实现与Neo4j图数据库的集成
|
7月前
|
消息中间件 缓存 NoSQL
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
缓存与数据库的一致性方案,Redis与Mysql一致性方案,大厂P8的终极方案(图解+秒懂+史上最全)
|
11月前
|
并行计算 异构计算
建立Hugging Face模型调用环境
本文介绍了如何在环境中导入transformers库,并从Hugging Face网站下载模型。如果使用镜像网站,需获取access token。部分模型需申请仓库权限,建议使用国外信息填写。有GPU的用户需先配置CUDA和pytorch-gpu。
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers
【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers
949 1
|
SQL Shell 数据库
在TDengine容器中创建初始化数据库的Shell命令实例
以上就是在Docker容器环境中部署并初始化TDengine数据库的全过程,希望对你有所帮助。
374 0
|
Java 数据库 Spring
Springboot项目中VO包的含义
Springboot项目中VO包的含义
545 0