问题标签 [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.
neo4j - 为相互关联的数据建模 GraphDb
我是 Graph DB ( Neo4j
) 的新手,并且正在为下面提到的用例探索 Graph DB。我需要modelling
Graph 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
) 中实现这一点。
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)
我想做的是
- 将其更改为仅具有实体但基于所有类型的关系推断 RELATED_TO 边缘的单部分图投影,而不仅仅是单一类型的关系和
- 根据两个实体同时出现的次数分配边缘权重。
换句话说,使用上面的例子:
示例 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:实体)
我可以在网上找到仅将一种类型的关系转换为单方关系的示例,但似乎无法为具有不同类型的中间节点(即实体节点之间的两个后节点)的多个关系或关系获得任何工作。我已经完成了图形数据科学培训,但也找不到我想要的东西。
有什么建议吗?
neo4j - 使用 Neo4j 和 GraphSAGE 将具有多种属性类型(int、float、string)的节点转换为嵌入?
如果我的节点看起来像:
考虑所有都是相互关联的,我想在属性上应用 GraphSAGE 算法。出于某种原因,当我的属性是字符串时,我无法获得嵌入。请指导我如何在具有字符串类型属性的节点上应用 GraphSAGE 算法?或混合(浮点、整数、字符串)。
neo4j - 构建相似度图时,如果平均相似度得分很高,会不会有问题?
我正在 Neo4j 中构建相似度图,并且 gds.nodeSimilarity.stats 报告我正在使用的投影的平均相似度得分在 0.60 到 0.85 范围内,无论我如何转换图。我试过了:
- 仅投影边权重大于 1 的关系
- 删除核心节点以增加组件数量(我的图表是关于单个主题,核心节点代表该主题)
- 将其更改为无向图
我意识到我总是可以将 gds.nodeSimilarity.write 中的similarityCutoff 设置为更高的值,但我在猜测自己,因为我用于训练的所有玩具问题,包括 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 发行版:
neo4j - 将字符串属性转换为嵌入 Neo4j Cypher?
我的 Neo4j 图中有以下节点(实际上我有很多,这是一个代表节点):
如何将字符串类型的所有属性转换为嵌入向量。请告知我如何使用 Cypher 在 Neo4j 中执行此操作?
neo4j - 如何在 Neo4j 中找到大图的连通分量?
我在 Neo4j 中有一个巨大的图表,它由属于 12 个标签的 52639796 个节点和 119,343,754 条边组成。我想找到这个图的弱连接分量。但是,每次我尝试将整个投影到内存中时,它都会给出“调用过程失败
gds.graph.create.cypher
:原因:java.lang.OutOfMemoryError:Java 堆空间”。您对如何找到整个图的弱连通分量有什么建议吗?我试图找到对图表进行采样的方法。但是,现有工具似乎不适用于 Neo4j 图。有没有办法获得整个图表的随机样本?
如果我能在这方面收到一些建议或推荐,那将意义重大。
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 事务?这甚至是没有创建命名图的原因吗?
感谢您的建议或提示!如果有人有探索性问题可能有助于找出其根本原因,我很乐意提供更多详细信息。
neo4j - 有没有办法改变节点上已经存在的关系属性?
我正在使用 neo4j GDS 库,想知道有什么方法可以改变节点上已经存在的关系上的属性。例如,我有带有标签 Person 连接节点 Book 使用关系读取的节点。我正在使用 Page Rank 算法,它给了我预期的输出,但我想使用加权算法并想使用 Book 上的属性 Price。根据我的文档,我可以发现我可以使用“relationshipWeightProperty”对关系使用权重,但找不到与节点相关的任何内容。那么有什么方法可以使用来自目标节点属性的权重,或者有什么方法可以改变节点关系上的价格属性然后使用它?
neo4j - 识别具有许多但细连接的节点
我需要识别(并标记)具有许多关系的节点(例如,10 个,可能范围为 1 到 60),但关系的权重较弱(例如 1 或 2,可能范围为 1 到 100)。我可以编写一个 Cypher 查询来找到它们。我不需要这方面的帮助。我想问的是,是否有一个 GDS 指标?