本文参考了Mayank Kejriwal的新著《Domain-Specific Knowledge Graph Construction》(2019年)
最近几年,knowledge graph(KG)作为AI(人工智能)的一个主要领域活跃起来。图(graph)经常出现在AI的最新论文当中。由于大数据时代的到来,我们很需要让计算机高效地“理解”并分析这些数据。
而计算机无法真正理解自然语言(英语、汉语等),这使得很多普通AI任务以及常识推理(commonsense reasoning)的结果并不理想。虽然相关领域都进步很快,但是计算机仍然更擅长处理用图(graphs),辞典(dictionaries),表格(tables)存储的结构化数据,而不太擅长直接处理自然语言。
谷歌是近年来利用KG这个特点来扩展搜索的可能性的大公司之一。“知识图谱”这个词的出现可以追溯到在2010年的一篇博客中所提到的“Google Knowledge Graph”,其理念是“搜索事物(things)而不是字符串(strings)”。
也就是说,搜索可以进化到不只是单纯搜索字符串,而是通过实体、属性和关系的推理(reasoning about entities, attributes and relationships),来预测用户想真正要寻找什么。当你现在使用谷歌的时候就能看到右边显示了你可能在寻找的内容(如下图红框中内容)。
除了谷歌之外,还有很多公司都开始给KG投资,在很多国家也涌现了以KG为核心的创业公司,还有一些KG的应用在被非盈利组织,政府机构,学术机构使用。下一篇文章会讲到几个KG的应用的例子。
简单来说,KG就是用图理论表现人类的知识,使得计算机能够理解它们的语义。换句话说,KG是一种通过图来表现知识的方式,这种方式能够让计算机进行推理(reasoning and reference),从而回答一些问题。
从功能角度来定义的话,KG是一些三元组(triple)的合集,每一个三元组表示了一个断言(assertion)。如果KG是基于可靠的数据且100%正确构建的话,我们可以把这些断言看作是事实(facts)。
通常,一个三元组由三个元组(h, r, t)组成,h是头实体(head entity),t是尾实体(tail entity),r是两个实体之间的关系(relationship)。在大部分情况下,自然语言都能被这种形式很方便地表现出来。
举个例子,“Fido the dog stole a bone from Mary's backyard”(小狗Fido从Mary的后院里偷走了一根骨头)这句话可以被以下的三元组set表示出来:{(Fido, is-a, Dog), (Fido, stole, bone_1), (bone_1, is-a, Bone), (bone_1, located-in, yard_1), (yard_1, is-a, Yard), (yard_1, belongs-to, Mary), (Mary, is-a, Person)}。这些三元组也可以通过图来表示,如下图:
在这个图中,实心的椭圆可以看做是ontology的一部分(关于ontology的知识这里就不再赘述,以后可能写一篇介绍ontology的文章,再把链接放过去),空心的椭圆就是KG,is-a关系连接了实例(instances)和概念(concepts)。关系都在ontology中被定义,而在KG中被使用。
除了Google KG,其他大部分KG都是基于某个领域的(domain-specific),而且拥有该领域对应的ontology。这是因为并没有可以适用于所有情况(“one-size fits all”)的schema或ontology来解决一切问题。
但是一旦有了ontology的框架,我们只需要让KG根据这个框架生成。虽然框架越复杂填充KG越难,但是复杂度高的ontology可以让语义(semantics)变得更强健,也能支持更复杂的查询(queries)。反之,简单的ontology可以让填充,检查和分析KG变得更简单。
到这里《什么是知识图谱(Knowledge Graph)(上)》的内容就结束啦~
下半部分《什么是知识图谱(Knowledge Graph)(下)》将会讲述几个使用了KG技术的经典例子。
本人也在边总结这本书边学习知识图谱,如果有错误还请指正^_^
这一系列文章主要是提取一些最最最关键内容,想仔细阅读的朋友们还请移步原书哟~
(last but not least:转载请注明出处)