首页 > 解决方案 > 如何将我的知识图存储在数据库中以回答搜索查询?

问题描述

我是机器学习的新手,我正在尝试实现知识图并将其用于搜索目的(就像 Google 和 Bing 一样)。这是我的方法。我有一些文本文件。我对python很熟悉。

脚步:

  1. 从文本文档中提取三元组。我正在考虑为此使用斯坦福 OpenIE。(有没有更好的可用于 python 的库?)。

提取三元组并将它们加载到 csv 中后,我的数据如下所示:

 Subject    relation     predicate

    New Delhi   IS_CAPITAL   India
    India Gate  IS_LOCATED   New Delhi
    India       HAS_STATES     29
    Hyderabad   IS_CAPITAL   Telangana
    Charminar   IS_LOCATED   Telangana

2. 将数据集导入 python 并根据TransHTransEComplEx等任何模型对其进行训练。 3.然后使用TensorflowAmpligraph库(Ampligraph 示例)对其进行训练。

现在,一旦我获得了嵌入式模型,我该如何使用它来回答搜索查询?我如何将我的模型存储在数据库中,为此我应该使用什么数据库?

谢谢你。

附言。您可以访问“Ampligraph Example”的链接,了解训练后生成什么样的模型。

标签: pythonknowledge-graph

解决方案


根据我的经验,人们发现 neo4j 是最容易上手的图形数据库之一。Neo 使用属性图模型,因此您可以向节点和边添加属性。

在 AmpliGraph 示例中,它显示如下输出:

陈述 分数 概率
丹妮莉丝·坦格利安配偶卡斯特 4090 -2.750880 0.060037

对于此数据,Daenerys Targaryen将连接到Craster边缘SPOUSE。Rank、score 和 prob 可以作为边缘属性包含在内。

Neo 有一个使用桌面工具加载 CSV的教程。我还找到了这个python neo 驱动程序,但我不熟悉它的功能。

为了查询数据库,neo 使用了一种称为 cypher 的查询语言。您不会说您是否正在寻找自然语言查询,但如果您可能需要将其构建为系统的一个单独部分——解析自然语言并构建密码查询。

RDF 图是另一种选择,但这些工具有点复杂。特别是,向边添加属性将涉及更复杂的建模。如果您不熟悉图形数据库,Neo 是一个不错的起点。


推荐阅读