Neo4j 如何在知识图中建立条件三元组模型

Neo4j 如何在知识图中建立条件三元组模型,neo4j,triples,knowledge-graph,Neo4j,Triples,Knowledge Graph,我正试图构建一个基于文本文档(非结构化数据)的知识图。因此,我目前的方法是从数据中提取三元组,并将其发送到图形数据库,例如neo4j,以便进一步分析。然而,我注意到在三元组的构造中有很多,我们称之为“条件三元组”。例如: text = "Donald Trump was president-elect for the republican party since July 2016" 提供以下“有趣的”三元组: (Donald Trump, was, president-elect) (Don

我正试图构建一个基于文本文档(非结构化数据)的知识图。因此,我目前的方法是从数据中提取三元组,并将其发送到图形数据库,例如neo4j,以便进一步分析。然而,我注意到在三元组的构造中有很多,我们称之为“条件三元组”。例如:

text = "Donald Trump was president-elect for the republican party since July 2016"
提供以下“有趣的”三元组:

(Donald Trump, was, president-elect)
(Donald Trump, was president-elect for, republican party)
(Donald Trump, was president-elect for republican party since, July 2016)
因此,我们需要三个4节点:
1.唐纳德·特朗普
2.当选总统
2.共和党
2.2016年7月

这4个节点可能与图中的其他实体有有趣的关系。然而,我的困难(或疑虑)在于人际关系,这些关系似乎非常具体和漫长

我不确定这是否真的是一个问题,也不确定是否将这种长期关系包括在内是最佳做法,例如自以来,
是共和党的当选总统

我考虑过创建如下遍历:

(Donald Trump)-[was]->(president-elect)-[for]->(republican party)-[since]->(July 2016)
这提供了更“简单”的关系,但是这是唯一的遍历,使得其他
总统选举
与此特定节点无关,或者如果这不是唯一的遍历,然后,其他总统选举与该节点相关,但随后与
和相关的
,因为
关系不能再唯一地追踪到唐纳德·特朗普


因此,我现在倾向于应用更长的关系。因此,我的问题是:这是一种最佳实践方法,还是我缺少替代解决方案?以下是一种可能的数据模型:

(:Person {name:"Donald Trump"})-[:ACHIEVED {date:'2016-07-01'}]->(pos:Position)
(pos)-[:HAS_TITLE]->(:Title {name:"President Elect"})
(pos)-[:FOR_PARTY]->(:Party {name:"Republican"})

人员
标题
参与方
节点是唯一的。

以下是一个可能的数据模型:

(:Person {name:"Donald Trump"})-[:ACHIEVED {date:'2016-07-01'}]->(pos:Position)
(pos)-[:HAS_TITLE]->(:Title {name:"President Elect"})
(pos)-[:FOR_PARTY]->(:Party {name:"Republican"})

Person
Title
Party
节点是唯一的。

如何提取这些三元组。
我建议使用NER和POS从您的数据中提取知识。然后根据可用的实体设计图形

如何提取这些三元组。
我建议使用NER和POS从您的数据中提取知识。然后,根据可用的实体,您可以设计图表

非常好的建议,与此方法相关的是NER的实现,至少对于日期的识别。非常好的建议确实与此方法相关的是NER的实现,至少对于日期的识别。