问题标签 [graph-data-science]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
30 浏览

neo4j - 为相互关联的数据建模 GraphDb

我是 Graph DB ( Neo4j) 的新手,并且正在为下面提到的用例探索 Graph DB。我需要modellingGraph DB 方面的帮助

假设我的 RDBMS 中有这 5 条记录

排# 价值1 价值2 价值3 价值4 其他数据
1 C ü OD123
2 一个 C OD234
3 一个 D OD345
4 G Z OD456
5 R X G Z OD567

我想根据匹配值的数量(Value1,Value2,Value3)合并这些记录的结果

如果我配置为匹配至少 2 个值匹配的记录,那么我的结果应该是

获取合并记录 1、2、3

排# 价值观 其他数据
R1 A,B,C,D,Q OD123、OD234、OD345
R2 E,B,G OD456
R3 R,X,G OD567

如果匹配配置 = 3,则获取合并记录 2 和 3

排# 价值观 其他数据
R1 Q,B,C,U OD123
R2 A,B,C,D,Y OD234、OD345
R3 E、B、G、Z OD456
R4 R,X,G,Z OD567

除了获得综合结果之外,我应该能够检索每个值的详细信息说为“B”获取数据

其他数据相关值 OD123、OD234、OD345、OD456 A、C、Q、B、E、G、Z、Y

说为“G”获取数据

其他数据相关值 OD456,OD567 E,B,Z,R,X

这是针对大数据的,因此考虑 Graph DB,我们可以使用它来维护值之间的关系(Value1,Value2,Value3 .....)。每个值都可以被视为一个节点,因为我们需要每个值上的 TTL

有人可以帮助/指导我如何在 Graph DB ( Neo4j) 中实现这一点。

0 投票
1 回答
73 浏览

neo4j - Neo4j:具有多种关系的二部到单部投影

我是 Neo4j 的新手。我正在尝试从二部图创建单部投影。我只有两种类型的节点:

  • 帖子节点(绿色):这些都是内容片段,例如推文、reddit 帖子、新闻文章等。
  • 实体节点(棕色):这些是与内容关联的实体

在此处输入图像描述

我的挑战是我有一些不同的关系。一些例子:

  • (e1:Entity)-[r:TWEETED]->(p:Post)->[r:AT_MENTIONED]->(e2:Entity)
  • (e1:Entity)-[r:TWEETED]->(p1:Post)-->[r:QUOTE_TWEETED]->(p2:Post)<-[r:TWEETED]<-(e2:Entity)
  • (e1:Entity)-[r:PUBLISHED]->(p:Post)-[r:MENTIONS]->(e2:entity)

我想做的是

  1. 将其更改为仅具有实体但基于所有类型的关系推断 RELATED_TO 边缘的单部分图投影,而不仅仅是单一类型的关系和
  2. 根据两个实体同时出现的次数分配边缘权重。

换句话说,使用上面的例子:

示例 1

  • 之前:(e1:Entity)-[r:TWEETED]->(p:Post)->[r:AT_MENTIONED]->(e2:Entity)
  • 之后:(e1:实体)-[r:RELATED_TO]-(e2:实体)

示例 2

  • 之前:(e1:Entity)-[r:TWEETED]->(p1:Post)-->[r:QUOTE_TWEETED]->(p2:Post)<-[r:TWEETED]<-(e2:Entity)
  • 之后:(e1:实体)-[r:RELATED_TO]-(e2:实体)

示例 3

  • 之前:(e1:Entity)-[r:PUBLISHED]->(p:Post)-[r:MENTIONS]->(e2:entity)
  • 之后:(e1:实体)-[r:RELATED_TO]-(e2:实体)

我可以在网上找到仅将一种类型的关系转换为单方关系的示例,但似乎无法为具有不同类型的中间节点(即实体节点之间的两个后节点)的多个关系或关系获得任何工作。我已经完成了图形数据科学培训,但也找不到我想要的东西。

有什么建议吗?

0 投票
1 回答
51 浏览

neo4j - 使用 Neo4j 和 GraphSAGE 将具有多种属性类型(int、float、string)的节点转换为嵌入?

如果我的节点看起来像:

考虑所有都是相互关联的,我想在属性上应用 GraphSAGE 算法。出于某种原因,当我的属性是字符串时,我无法获得嵌入。请指导我如何在具有字符串类型属性的节点上应用 GraphSAGE 算法?或混合(浮点、整数、字符串)。

0 投票
1 回答
34 浏览

neo4j - 构建相似度图时,如果平均相似度得分很高,会不会有问题?

我正在 Neo4j 中构建相似度图,并且 gds.nodeSimilarity.stats 报告我正在使用的投影的平均相似度得分在 0.60 到 0.85 范围内,无论我如何转换图。我试过了:

  • 仅投影边权重大于 1 的关系
  • 删除核心节点以增加组件数量(我的图表是关于单个主题,核心节点代表该主题)
  • 将其更改为无向图

我意识到我总是可以将 gds.nodeSimilarity.write 中的similarityCut​​off 设置为更高的值,但我在猜测自己,因为我用于训练的所有玩具问题,包括 Neo4j 的实践,平均 Jaccard 分数都低于 0.5。我是不是想多了,还是有什么不对劲的迹象?

*** 编辑添加*** 这是一个有两种类型节点的图:帖子和实体。帖子反映了各种媒体类型,而实体反映了各种作者和专有名词。在这种情况下,我主要关注 Twitter。一些关系示例:

  • (e1 {Type:TwitterAccount})-[TWEETED]->(p:Post {Type:Tweet})-[AT_MENTIONED]->(e2 {Type:TwitterAccount})

  • (e1 {Type:TwitterAccount})-[TWEETED]->(p2:Post {Type:Tweet})-[QUOTE_TWEETED]->(p2:Post {Type:Tweet})-[AT_MENTIONED]->(e2 {Type :推特账号})

对于我的代码,我首先尝试仅投影 AT_MENTIONED 关系:

  • 调用 gds.graph.create('similarity_graph', ["Entity", "Post"], "AT_MENTIONED")

我试过用相反的方向这样做:

我尝试在具有 RELATED_TO 关系的所有节点之间创建单方加权关系......

...然后投影:

无论我尝试上述哪种方法,然后通过运行以下命令获得我的 Jaccard 发行版:

0 投票
1 回答
27 浏览

neo4j - 将字符串属性转换为嵌入 Neo4j Cypher?

我的 Neo4j 图中有以下节点(实际上我有很多,这是一个代表节点):

如何将字符串类型的所有属性转换为嵌入向量。请告知我如何使用 Cypher 在 Neo4j 中执行此操作?

0 投票
1 回答
19 浏览

neo4j - 如何在 Neo4j 中找到大图的连通分量?

  1. 我在 Neo4j 中有一个巨大的图表,它由属于 12 个标签的 52639796 个节点和 119,343,754 条边组成。我想找到这个图的弱连接分量。但是,每次我尝试将整个投影到内存中时,它都会给出“调用过程失败gds.graph.create.cypher:原因:java.lang.OutOfMemoryError:Java 堆空间”。您对如何找到整个图的弱连通分量有什么建议吗?

  2. 我试图找到对图表进行采样的方法。但是,现有工具似乎不适用于 Neo4j 图。有没有办法获得整个图表的随机样本?

如果我能在这方面收到一些建议或推荐,那将意义重大。

0 投票
1 回答
30 浏览

java - Neo4j嵌入模式使用GDS

我正在尝试将 GDS 1.8.2 用作运行嵌入式 Neo4j 4.4.3 服务器的系统的一部分。嵌入式服务器作为一个运行组件已经有好几年了,Neo4j 的几个版本,所以这个组件本身已经过时间检验并且功能很好。这是在该组件中添加对图形算法的支持的第一次尝试。

我的第一个测试只是提交一个 CQL 查询:

CALL gds.graph.create("someNamedGraph", ["SomeNodeLabel"], ["SomeRelationshipType"])

在让它工作的过程中,我发现我必须在图形数据库的GlobalProcedures注册表中注册org.neo4j.gds.catalog.GraphCreateProc类。这似乎是成功的,因为虽然我最初遇到 CQL 异常说该过程是未知的,但现在它似乎毫无例外地执行。但是,我现在看到事务没有生成命名图(通过使用开箱即用的 Neo4j 社区版服务器模式检查图数据库来验证)。它只运行了大约 0.1 秒(与通过 Neo4j 社区版服务器模式运行的几秒钟相比,它工作得很好)。gds.graph.create

我现在看到的是查询执行类型(如从执行返回的结果对象中所示)被标记为 READ_ONLY。没有异常、通知等。我已经验证了在同一测试代码中的后续写入事务,它创建了一个简单的节点(作为测试),成功地写入了一个节点,并且 Result 对象提供了该事务的所有验证信息.

谁能建议为什么gds.graph.create过程似乎毫无例外地执行,但不知何故被标记为 READ_ONLY 事务?这甚至是没有创建命名图的原因吗?

感谢您的建议或提示!如果有人有探索性问题可能有助于找出其根本原因,我很乐意提供更多详细信息。

0 投票
1 回答
19 浏览

neo4j - 有没有办法改变节点上已经存在的关系属性?

我正在使用 neo4j GDS 库,想知道有什么方法可以改变节点上已经存在的关系上的属性。例如,我有带有标签 Person 连接节点 Book 使用关系读取的节点。我正在使用 Page Rank 算法,它给了我预期的输出,但我想使用加权算法并想使用 Book 上的属性 Price。根据我的文档,我可以发现我可以使用“relationshipWeightProperty”对关系使用权重,但找不到与节点相关的任何内容。那么有什么方法可以使用来自目标节点属性的权重,或者有什么方法可以改变节点关系上的价格属性然后使用它?

0 投票
1 回答
26 浏览

algorithm - 使用 Neo4j 寻找路径查找算法

我有以下图表:

不正确的图

我正在寻找一种图形数据科学算法,它可以以某种方式在图形内部找到一条路径,即给定起点,所有终点都可以到达。像这儿:

正确图

到目前为止,我已经尝试了 Dijkstra 单源和深度优先搜索算法以及与纯密码的 N 度关系,但无济于事。

我有几个类似的图表,因此我宁愿寻找算法解决方案,但我愿意接受任何建议。

密码:

0 投票
1 回答
14 浏览

neo4j - 识别具有许多但细连接的节点

我需要识别(并标记)具有许多关系的节点(例如,10 个,可能范围为 1 到 60),但关系的权重较弱(例如 1 或 2,可能范围为 1 到 100)。我可以编写一个 Cypher 查询来找到它们。我不需要这方面的帮助。我想问的是,是否有一个 GDS 指标?