常见知识图谱项目整理

428 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情

导语

最近在看KBQA的相关内容,这里简要记录一下知识图谱相关的学习笔记。本文主要介绍几个常见的知识图谱,如FreeBase、DBpedia和Wikidata。

知识库(Knowledge Base)与三元组

知识库(KB)用于存储各种各样的复杂信息,其中的数据通常以三元组形式形成,即

(主语,谓语,宾语)

也即

(subject, predicate, object)

其中的主语和宾语常被称为“实体”,谓语常被称为“关系”。

三元组示例

举个例子,假设一句话为“the capital of Canada is Ottawa”。我们可以将其转换为三元组

('Canada''capital is''Ottawa')

其中有两个实体"Canada", "Ottawa"和一个关系'capital is'。

常见知识库

如今,大型的知识库(Knowledge Base)包含非常多的三元组,例如维基数据就有超过139亿个三元组。所有的实体和关系都由唯一的国际化资源标识符(Internationalized Resource identifier, IRI)标识。以维基数据为例,维基数据中实体“Canada”的IRI为“www.wikidata.org/entity/Q16”

由于IRI太长,人们通常用缩写来表示这些前缀,如“wd:Q16”来表示“www.wikidata.org/entity/Q16” ,“wd:”是缩写来表示前缀“www.wikidata.org/entity/”

另一方面,大型KBs在资源描述框架(RDF)下发布,以支持结构化查询语言(通常为SPARQL) 。

Wikidata数据查询示例

Wikidata提供了SPARQL的查询接口,我们可以通过这个网址在线进行查询:

wikidata.demo.openlinksw.com/sparql

假设我们要查这样一个问题(该样例来自LC-QuAD 2.0测试集):

What is the name of the opera based on Twelfth Night ?

那么首先我们需要将问句中所涉及的实体和关系全部找出来,并且链接到对应的Wikidata的资源上。

在这个句子中存在两个实体:

  • opera,对应资源为:wd:Q1344;
  • Twelfth Night,对应资源为:wd:Q221211;

用到了两个关系,分为为:

  • instance of,对应资源为:wdt:P31;
  • based on,对应资源为:wdt:P144;

在获得以上信息后,我们编写对应的SPARQL查询语句为:

SELECT DISTINCT ?sbj WHERE
{
?sbj wdt:P144 wd:Q221211 .
?sbj wdt:P31 wd:Q1344
}

在SPARQL中,我们定义了一个查询变量 ?sbj 代表要查询的内容,在WHERE子句中,我们对查询条件进行约束。即这个要查询的变量应该 based on Twelfth Night并且还得符合是 instance of opera。

在Wikidata的查询网站进行查询

image.png

得到的结果如下:

image.png

点击查看详情后即可看到查询结果的详细信息:

image.png

总结

本文简要概述了知识库的相关内容,并且简要介绍了几个大型的知识库。最后,以LC-QuAD 2.0数据集上的一个样例作为参考,介绍了如何使用SPARQL语句在对应的知识库上进行查询得到答案。希望本文的内容对您有帮助。