0

我正在尝试基于文本文档(非结构化数据)构建知识图谱。因此,我目前的方法是从数据中提取三元组并将它们发送到图形数据库,例如 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)

We thus need three 4 nodes:
1. Donald Trump
2. president-elect
2. republican party
2. July 2016

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

我不确定这是否真的是一个问题,或者包含如此长的关系是否是最佳实践,例如was president-elect for republican party since.

我考虑过创建遍历,例如:

(Donald Trump)-[was]->(president-elect)-[for]->(republican party)-[since]->(July 2016)

这提供了更“简单”的关系,但是这是独特的遍历,因此其他遍历president-elects与该特定节点无关,forsince关系不再可以唯一地跟踪到Donald Trump.

因此,我现在倾向于应用更长的关系。因此,我的问题是:这是一种最佳实践方法,还是我错过了替代解决方案?

4

2 回答 2

2

这是一个可能的数据模型:

(: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和节点是唯一的TitleParty

于 2020-01-03T19:09:07.640 回答
0

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

于 2020-01-06T11:00:57.317 回答