database - 可调整的版本化图形数据库

标签 database data-structures graph-databases event-sourcing

我目前正在开展一个项目,我使用自然语言处理从文本中提取情感,将它们与上下文信息相关联。

上下文信息的定义:与描述实体在时间和空间上的情况相关的所有信息。

我正在寻找的数据结构的描述:

有任意数量的实体(一个实体可以是一个人或一个组,例如(Twitter 哈希标签)),我想跟踪其中的上下文信息以及他们与其他实体的对话。处理实体之间的对话是为了对它们的情感特征进行分类。基本情绪特征由一个向量组成,该向量按百分比指定它们的出现:{fear: 0.1, happiness: 0.4, joy: 0.1, surprise: 0.9, anger: 0} 实体还可以提交他们想要共享的任何上下文信息,例如:位置、室温、血压……等等(将此称为上下文变量)。 因为在任何时间点,实体的对话数量和他们想要共享的上下文变量的数量都不清楚,因此数据结构需要能够相应地进行调整。

重要:数据中的每个更改也必须代表自己的状态,因为我期待将某些状态更改相互关联。

示例:鲍勃和爱丽丝的谈话显示出高度恐惧。几个小时后,他们又进行了另一次谈话,不再表现出恐惧,而是高兴。 现在,有人可能会争辩说,高度恐惧,然后是快乐实际上可以解释为情绪缓解。

但是,为了能够提取这些信息,我需要能够将不同的状态相互关联起来。 使用上下文信息将它们与对话中跟踪的情绪相关联也是如此。 这就是为什么每次状态更改都必须记录并可用的原因。

为了让您更清楚,我创建了一个 graphic并将其附在问题上。

enter image description here 现在,我的实际问题是:我可以使用哪个数据库/数据结构来解决这个问题? 我研究过事件溯源数据库,但不确定是否可以轻松地用它们重新创建图形结构。我还查看了图形数据库,但没有找到我要找的东西。

因此,如果这里有人至少可以指出我正确的方向或帮助我相应地调整我的结构以解决问题,那就太好了。但是,如果有数据结构支持,我称之为带快照的图形数据库,那么易用性可能是要筛选的最重要的特性。

最佳答案

Rich Hickey(以 Clojure 闻名)有一个名为 Datomic 的数据库,它存储随时间变化的事实。数据库中的每个条目都是一个带有时间戳的事实,就像在事件溯源中一样只能追加。

可以使用关系/逻辑语言ala Datalog(类似于Prolog)来查询这些事实。请看This post by kisai快速概览。它过去曾用于查询图形并取得了一些成功:Using Datomic as a Graph Database .

虽然我没有使用 Datomic 的经验,但它似乎非常适合您的特定问题。

关于database - 可调整的版本化图形数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28606507/

相关文章:

mysql - 手动触发数据库/系统错误

Django:如何锁定行以供阅读?

mysql - 在数据库中存储两个位置之间的路线

java - Neo4j Java API : widest path algorithm performance issues

neo4j - 如何在 Neo4j 2.0.0M5 中通过标签创建和检索节点

sql - 在字母索引中查找候选人的上一个和下一个条目

data-structures - 查找存储为 Ahnentafel 数组的二进制最大堆的最小元素

algorithm - 计算两个数组元素之间的距离

c++ - 列和行交换的最佳稀疏矩阵表示

java - 在Java中编写密码并获取所有属性的正确方法