【问题标题】:How to store vectored, year-indexed data in node properties in Neo4j?如何在 Neo4j 的节点属性中存储矢量化的年份索引数据?
【发布时间】:2019-06-28 18:13:15
【问题描述】:

我有一个包含许多节点(:Node) 的大型数据库。这些节点在给定的(:Year) 中创建,并且该信息通过(n:Node)-[:CREATED_IN]->(y:Year) 存储。

对于任何年份y,我计算所有年份y..2020 的多个标量分数(类似于 PageRank)。我还计算图嵌入,它们是向量。

我想存储这些标量和这些向量以供将来计算。

我尝试了两种方法,但都不令人满意:

(1) 为每个节点的每个年份的每个分数创建不同的属性(例如,2018_PageRank2018_Word2Vec)。这并不理想,因为我最终得到了数百个属性,而且查询起来更加复杂。

(2) 为每个大小为 2020 的标量创建一个向量,然后将标量分数打分到该向量的适当位置。例如,2018 年的 PageRank 得分 s 将在 n.PageRank[2018-1] 中。但是,这会浪费空间,并且不能用于向量化嵌入。

任何帮助/建议将不胜感激。

【问题讨论】:

    标签: neo4j cypher graph-databases


    【解决方案1】:

    如果我正确理解模型,我会将所有嵌入和 PageRank 分数存储为新关系的属性:EMBEDDINGS

    所以你的最终模型是:

    (:Node)-[:EMBEDDINGS{pagerank:1,embeddings...}]->(:Year{value:'2018'})
    

    因评论而编辑

    【讨论】:

    • 您的解决方案的问题在于,每年 >= :CREATED_AT 年份都是相关的。因此,对于(n:Node)-[:CREATED_IN]->(y:Year),从y 到 2020 年,我每年都会有嵌入和 PageRank 分数。
    • 在这种情况下,为每年创建一个新关系...就像分类 pagerank 概念...在neo4j.com/blog/categorical-pagerank-using-neo4j-apache-spark找到更多信息
    • 这是一个有趣的想法。你能再解释一下吗?关系从哪里来/去哪里?我假设每年y 的 PageRank 和嵌入将存储为这种关系的属性?另外,您将如何编写查询来将默认写入节点的结果存储到关系中?
    • 我确实阅读了您建议的链接,正如我所说,这很有趣但并不明显这如何映射到我的问题上。你能详细说明/解释吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    相关资源
    最近更新 更多