Neo4j : 通过两种类型的节点传播标签。

问题描述 投票:1回答:1

我想在Neo4j中对我的数据应用标签传播。我的数据看起来像图片一样。

enter image description here

关系 "Appears_in "有权重属性,一些文章节点有种子标签属性。

我想传播这些种子标签,以创建谈论相同主题的文章的聚类,例如(政治聚类)。更准确地说,我想把种子标签传播到另一个文章节点,但文章之间并没有直接关系。他们是通过他们在交流中的单词 "在某处 "连接起来的。

是否可以通过单词节点将标签从一个文章节点传播到另一个文章节点?

neo4j graph-algorithm
1个回答
1
投票

是的,这是很常见的情况。你想把一个双曲图投影到一个单曲图上。我写了一个 博文中的类似情况.

bipartite projection

我将给你一个解决方案,一步到位地处理所有的问题。它由两部分组成。我们将一个二元图形投影到一个单元图形上,并将其与 影射. 在下一步,你将运行标签传播算法。您将需要 Neo4j图形数据科学库. 下面是一个查询示例。

CALL gds.labelPropagation.write({
nodeQuery:"MATCH (n:Article) RETURN id(n) as id, n.seed_property as seed",
relationshipQuery:"MATCH (a:Article)<-[:APPEARS_IN]-()-[:APPEARS_IN]->(b:Article)
                   RETURN id(a) as source, id(b) as target",
seedProperty: "seed",
writeProperty: "lpa"
})

我没有包括关系权重,因为我不知道你到底想怎么处理它们。你也可以使用任何一个 相似性算法 取而代之的是投影一个单方块图形。

希望能帮到你

© www.soinside.com 2019 - 2024. All rights reserved.