知识图谱问答 | (4) 知识图谱和语义表示

本篇博客主要基于微软亚洲研究院段楠老师的《智能问答》第四章 知识图谱问答 进行整理。

本篇博客我们将介绍一下知识图谱的基本概念以及基于知识图谱的语义表示方法。

知识图谱可以看做是对现实世界中客观存在的事实的一种高度抽象和总结。举例来说,Barack Obama 出生在 Honolulu 这个事实可以用不同自然语言对其进行表述,例如 Barack Obama was born in Honolulu ;Honolulu is the birth place of Obama、 The birthplace of Barach Obama is Honolulu 等,但它们都对应同一个知识图谱三元组:<Barack Obama,PlaceOfBirth,Honolulu>,这个三元组就是上述不
同表述基于知识图谱的语义表示。

1. 知识图谱

知识图谱(knowledge graph)的概念由 Google 在2012年5月提出,该类数据的出现为从实体和关系层面上进行自然语言理解提供了数据上的保证。

知识图谱将三元组(triple)作为知识存储和表示的基本单元。每个知识图谱三元组具有如下形式:<实体,谓词,实体>(谓词指的是关系谓词/属性谓词。如:<实体1,关系,实体2>、<实体,属性,属性值>等)。其中,每个实体表示现实世界中一个独一无二的对象,并对应一个全局唯一标识符(GUID).不同实体的名字允许相同,但 GUID一定不相同(Michael Jordan既可以指篮球运动员Jordan,也可以指机器学习专家Jordan)。每个谓词表示两个实体之间所满足的关系。例如,<Barack Obama,PlaceOfBirth,Honolulu>是满足该形式的一个知识图谱三元组,Barack Obama和Honolulu分别表示主语实体和宾语实体,谓词 PlaceOfBirth表示Barack Obama 的出生地是 Honolulu.不同的知识图谱实体通过谓词连接构成一个图状数据结构(三元组的集合)。下图给出一个知识图谱示例。需要注意的是,知识图谱中存在一类称为CVT(compound value type)的特殊节点,例如下图中的 Event3、Event8 和 Event21.每个 CVT节点并没有具体的名字,它通过连接多个实体节点,表示一个复杂的事实。例如,Event8这个 CVT 节点通过连接 BarackObama、Michelle Obama 和 1992.10.03这三个实体节点,表示 Barack Obama 这个人在婚姻方面的事实,这类事实仅通过三元组是无法表示的。
知识图谱问答 | (4) 知识图谱和语义表示
目前,典型的知识图谱包括 Freebase,DBpedia、YAGO 和 Satori等。Freebase的内容主要源于 Wikipedia,NNDB,MusicBrainz以及社区用户的贡献。该项目由MeteWeb 公司在2005年启动,Google 于2010年收购了该公司,并将 Freebase 作为 Google 知识图谱的核心部分。2016年8月,Google 停止了对 Freebase 的维护,并将其整体迁移合并到WikiData 项目中。DBpedia 的内容主要源于 Wikipedia.该项目采用众包社区方式从 Wikipedia 中抽取结构化信息并构建知识图谱,可以用来开发基于 Wikipedia 的智能问答和文本理解系统。YAGO的内容主要源于 Wikipedia、WordNet 和 GeoNames.该项目由德国普朗克信息学研究所提出。通过将 WordNet和 Wikipedia 中的分类体系进行融合,YAGO的实体分类体系更为丰富。IBM Watson 将 YAGO 作为其后端使用的问答知识库之一。Satori是微软公司提出并构建的大规模知识图谱,主要用于支持微软必应搜索及Cortana 语音助手项目。目前,Satori 不支持外部下载,仅在微软内部使用。

知识图谱的自动获取(构建)和应用是该研究领域最重要的两个课题。前者涉及实体链接、关系分类等技术,后者涉及语义分析、智能问答和搜索等场景。

2. 语义表示

将自然语言转化为机器能够理解和执行的语义表示(meaning representation,MR)并应用于智能问答任务,是构建知识图谱的主要目的之一。再介绍知识图谱问答方法之前,首先简要介绍三种典型的语义表示方法:一阶谓词逻辑、λ\lambda-算子和λ\lambda-DCS.

一阶谓词逻辑(first-order predicate logic)是一种常见的语义表示方法,它的定义包含如下基本元素:

  • 命题(sentence),包括原子命题和复合命题两类。每个原子命题最多包含一个谓词,并且不包含任何连接符号或限量词。例如,句子 Barack Obama was born in Honolulu对应的语义表示 PlaceOfBirth(Barack Obama,Honolulu)是一个原子命题。每个复合命题通过使用连接符号或限量词来连接多个原子命题构成。例如,句子 Barack Obama was born in Honolulu on Augest 4 th,1961 对应的语义表示 PlaceOfBirth(Barack Obama,Honolulu) \land DateOfBirth(Barack Obama,1961-08-04)是一个复合命题,该命题包含 PlaceOfBirth(Barack Obama,Honolulu)和DateOfBirth(Barack Obama,1961-08-04)两个原子命题,并使用\land进行连接。
  • 谓词(predicate),包括属性(property)和关系(relation)两类。属性谓词的输入只能包含一个参数,输出值是真或假,用来表示输入是否具有该谓词所表示的属性。例如,Location(x)中 Location 表示一个属性谓词,当输入参数x的类型是地点(例如China)时,该谓词返回真,否则返回假。关系谓词的输入可以包含多个参数,输出值是真或假,用来表示输入参数是否满足该谓词所表示的语义关系。例如,PlaceOfBirth(x,y)中 PlaceOfBirth 表示一个关系谓词,当输入参数x和y满足人和出生地关系(例如 Barack Obama 和 Honolulu)时,该谓词返回真,否则返回假。
  • 函数(function),形式和谓词类似,但函数的返回值是一个对象的集合,而非真或假。对象(object),包括常量(constant)、变量(variable)或函数符号(functional symbol)三类。每个常量表示现实世界中一个具体的事物,例如 Barack Obama、China、Forrest Gump等。每个变量表示一个未知的对象,例如x、y、z等。每个函数符号对应一个函数,例如 argmax 和 argmin等。
  • 连接符号(connective),包括交(\land)、并(\lor)、否定(\urcorner)、当(\Rightarrow)和当且仅当(\Leftrightarrow)五类。
  • 等号(equality),Term1=Term2Term_1=Term_2当且仅当 Term1Term_1Term2Term_2,指向同一个对象时成立。
  • 限量词(quantifier),包括全称量词(universal quantifier)和存在量词(existential quantifier)两类。全称量词对应的形式是<variables><sentence>\forall <variables><sentence>,它表示变量对应的每一组值都能够使命题 sentence返回真。例如,everyone loves QA对应的语义表示是x(Loves(x,QA))\forall x (Loves(x,QA)).存在量词对应的形式是<variables><sentence>\exists <variables><sentence>,它表示变量至少对应一组值能够使命题 sentence 返回真。例如,someone loves QA 对应的语义表示是x(Loves(x,QA))\exists x (Loves(x,QA))
  • 高阶谓词逻辑(higher-order predicate logic)和一阶谓词逻辑的区别在于:高阶谓词逻辑允许将限量词应用于谓词和函数,一阶谓词逻辑只允许将限量词应用在对象。由于目前语义分析研究大都采用一阶谓词逻辑,对高阶谓词逻辑不做扩展介绍。

陈述句的语义可以采用一阶谓词逻辑进行表示,问句的语义则通常采用λ\lambda-算子形式。λ\lambda-算子(lambda calculus)由 Alonzo Chruch 在1930年提出,是另一种常见的语义表示方法。该理论引入了λ\lambda操作符这一概念,该概念可以用来表示语义中包含的未知信息,这种设计和形式非常适用于表示缺失了答案信息的自然语言问题。

λ\lambda-算子的核心概念是表达式(expression),该概念可以通过下述形式进行递归的定义。
知识图谱问答 | (4) 知识图谱和语义表示
constant 表示常量,例如 Barack Obama。variable 表示变量,例如x。function 表示函数,例如λx.PlaceOfBirth(BarackObama,x)\lambda x.PlaceOfBirth( Barack Obama,x),该函数表示所有和 Barack Obama 满足 PlaceOfBirth 关系的实体。application 表示对两个λ\lambda-算子表达式expression1expression_1expression1expression_1进行代入操作,例如将 Barack Obama 带入到λx.λy.PlaceOfBirth(x,y)\lambda x.\lambda y.PlaceOfBirth(x,y)后得到的结果是一个新的表达式λy.PlaceOfBirth(BarackObama,y)\lambda y.PlaceOfBirth( Barack Obama,y).

一阶谓词逻辑和λ\lambda-算子并未在其定义中考虑知识图谱的特性。针对这一问题,斯坦福大学提出一种适用于知识图谱的语义表示方法:λDCS\lambda-DCS[1]。λDCS\lambda-DCS具有和λ\lambda-算子类似的语义表示能力,但在具体表达形式上更适用于现有的知识
图谱,也更简洁。下面给出λDCS\lambda-DCS包含的基本元素和操作,并基于具体的例子对比其与λ\lambda-算子的不同。

  • 一元语义表示。实体是λDCS\lambda-DCS中最基本的一元语义表示单元。在λDCS\lambda-DCS中,每个实体u对应的语义表示就是该实体本身。例如,Seattle 对应的λDCS\lambda-DCS 语义表示为Seattle,对应的λ\lambda-算子语义表示为 λx.Equal(x,Seattle)\lambda x. Equal(x,Seattle)这里,
    Equal 表示一个函数,该函数在x等于 Seattle 时返回真,其他情况返回假。
  • 二元语义表示。谓词是λDCS\lambda-DCS中基本的二元语义表示单元。在λDCS\lambda-DCS中,每个谓词b对应的语义表示就是该谓词本身。例如,谓词 PlaceOfBirth 对应的λDCS\lambda-DCS 语义表示为 PlaceOfBirth,对应的λ\lambda-算子语义表示为λx.λy.PlaceOfBirth(x,y)\lambda x.\lambda y. PlaceOfBirth(x,y)
  • 连接操作。给定一个一元语义表示u和一个二元语义表示b,连接操作对应的λDCS\lambda-DCS语义表示是b.u。例如,people born in Seattle 对应的λDCS\lambda-DCS语义表示为 PlaceOfBirth.Seattle,对应的λ\lambda-算子语义表示为λx.PlaceOfBirth(x,Seattle)\lambda x.PlaceOfBirth(x,Seattle)。此外,连接操作还允许采用链式形式组织多个二元语义表示。例如,people who had children born in Seattle 对应的λDCS\lambda-DCS语义表示为 Children.PlaceOfBirth.Seattle,对应的λ\lambda-算子语义表示为λx.y.Children(x,y)PlaceOfBirth(y,Seattle)\lambda x.\exists y.Children(x,y)\land PlaceOfBirth(y,Seattle)
  • 交操作。给定两个一元语义表示u1u_1u2u_2,交操作对应的λDCS\lambda-DCS语义表示为u1u2u_1\sqcap u_2。例如,scientists born in Seattle 对应的λDCS\lambda-DCS语义表示为 Profession. Scientist \sqcap PlaceOfBirth.Seattle,对应的λ\lambda-算子语义表示为λx.Profession(x,Scientist)PlaceOfBirth(x,Seattle)\lambda x.Profession(x,Scientist) \land PlaceOfBirth(x,Seattle)
  • 并操作。给定两个一元语义表示u1u_1u2u_2、并操作对应的λDCS\lambda-DCS语义表示为u1u2u_1\sqcup u_2.例如,Oregon,Washington and Canadian provinces 对应的λDCS\lambda-DCS语义表示为OregonWashingtonType.CanadianProvinceOregon\sqcup Washington \sqcup Type.CanadianProvince,对应的λ\lambda-算子语义表示: λx.[x=Oregon][x=Washington]Type(x,CanadianProvince)\lambda x. [x=Oregon]\lor [x=Washington]\lor Type(x,CanadianProvince)
  • 否定操作。给定一个一元语义表示u,否定操作对应的λDCS\lambda-DCS语义表示为u\urcorner u.例如,us states not bordering California对应的λDCS\lambda-DCS语义表示为Type.USState\sqcap\urcornerBorder.California,对应的λ\lambda-算子语义表示为λx.Type(x,USState)Border(x,California)\lambda x.Type(x,USState)\land \urcorner Border(x,California)
  • 高阶函数。 每个高阶函数都对应一种特定的操作符,问答任务中常见的操作符包括 count、argmin、argmax和sum等例如,number of states in US对应的λDCS\lambda-DCS语义表示为 count(Type.USState),对应的λ\lambda-算子语义表示为 count(λx.Type(x,USState)\lambda x.Type(x,USState))。count函数的输入参数是一个实体集合,输出是该集合包含的元素个数。 the area of the largest state in US对应的λDCS\lambda-DCS 语义表示为 argmax(Type.USState,Area),对应的λ\lambda-算子语义表示为argmax(λx.Type(x,USState)\lambda x.Type(x,USState),λx.λy.Area(x,y)\lambda x. \lambda y.Area(x,y))。argmax函数的输入参数有两个,第一个参数对应一个实体集合,第二个参数表示按照哪个属性从该实体集合中选择具有最大属性值的实体作为函数的输出。

通过上述介绍可以看出,λDCS\lambda-DCS基于知识图谱的特性,设计其语义表示形式。和λ\lambda-算子相比较,λDCS\lambda-DCS由于省略了全部未知变量,因此从形式上更为简洁。

3. 参考文献

[1]Percy Liang.Lambda Dependency-Based Compositional Semantics [c].arXiv,2013.