知识图谱技术原理介绍近两年来,随着LinkingOpenData1等项目的全面展开,语义Web数据源的数量激增,大量RDF数据被发布。互联网正从仅包含网页和网页之间超链接的文档万维网(DocumentWeb)转变成包含大量描述各种实体和实体之间丰富关系的数据万维网(DataWeb)。在这个背景下,Google、百度和搜狗等搜索引擎公司纷纷以此为基础构建知识图谱,分别为KnowledgeGraph、知心和知立方,来改进搜索质量,从而拉开了语义搜索的序幕。下面我将从以下几个方面来介绍知识图谱:知识图谱的表示和在搜索中的展现形式,知识图谱的构建和知识图谱在搜索中的应用等,从而让大家有机会了解其内部的技术实现和各种挑战。知识图谱的表示和在搜索中的展现形式正如Google的辛格博士在介绍知识图谱时提到的:“Theworldisnotmadeofstrings,butismadeofthings.”,知识图谱旨在描述真实世界中存在的各种实体或概念。其中,每个实体或概念用一个全局唯一确定的ID来标识,称为它们的标识符(identifier)。每个属性-值对(attribute-valuepair,又称AVP)用来刻画实体的内在特性,而关系(relation)用来连接两个实体,刻画它们之间的关联。知识图谱亦可被看作是一张巨大的图,图中的节点表示实体或概念,而图中的边则由属性或关系构成。上述图模型可用W3C提出的资源描述框架RDF2或属性图(propertygraph)3来表示。知识图谱率先由Google提出,以提高其搜索的质量。为了更好地理解知识图谱,我们先来看一下其在搜索中的展现形式,即知识卡片(又称KnowledgeCard)。知识卡片旨在为用户提供更多与搜索内容相关的信息。更具体地说,知识卡片为用户查询中所包含的实体或返回的答案提供详细的结构化摘要。从某种意义来说,它是特定于查询(queryspecific)的知识图谱。例如,当在搜索引擎中输入“姚明”作为关键词时,我们发现搜索结果页面的右侧原先用于置放广告的地方被知识卡片所取代。广告被移至左上角,而广告下面则显示的是传统的搜索结果,即匹配关键词的文档列表。这个布局上的微调也预示着各大搜索引擎在提高用户体验和直接返回答案方面的决心。图1从左到右依次是Google、百度和搜狗在搜索结果首页中所展现的与姚明相关的知识卡片。1://://github.com/tinkerpop/blueprints/wiki/Property-Graph-Model图1.当搜索“姚明”时,Google、百度和搜狗所展示的知识卡片虽说三大搜索引擎在知识卡片的排版和内容展现上略有不同,但是它们都列出了姚明的身高、体重、民族等属性信息。此外,它们均包含“用户还搜索了”或“其他人还搜”的功能来展现相关的人物。该功能允许用户去浏览其他与姚明相关的人物的详细信息。细心的读者也发现Google在其知识卡片中也展示了很多与姚明相关的图片,以图文并茂的方式来展示姚明的方方面面。百度则结合了百度风云榜的信息,列出了姚明的类别(体坛人物)及其百度指数(今日排名和今日搜索热度等信息)。在搜索结果页面的左上角(在图中未给出),百度还展示了其特有的专题搜索,包含了与姚明相关的百科、图片、微博、新闻、音乐、贴吧和视频等七大类的结果,基本涵盖了用户最基本的需求。搜狗在列出与姚明相关的百科、图片,电影和最新相关消息等专题的同时,其知识卡片额外显示了诸如“主持电视节目”、“效力篮球队”、“人物关系”等各种细粒度的语义关系。当遇到含有歧义的用户查询时,知识卡片还会列出其他可能的查询目标对象。在上面的例子中,搜狗还列出了一项“您是否要找”的功能,列出一位也叫姚明的一级作曲家。该功能用于去歧义,在显示最相关实体的同时也给出其他可能的对象,达到去歧义的作用。当搜索“李娜”或“长城”时,Google和百度也在其知识卡片下方展现了类似的功能。除了给出著名网球运动员李娜和万里长城之外,它们还列出歌手李娜和长城汽车供用户选择和浏览。更值得一提的是,当在搜狗知立方中输入“姚明的老婆的女儿的身高”如此复杂的查询时,其会直接返回其女儿的姓名(姚沁蕾)以及其身高(110cm),并给出推理说明“叶莉的女儿是姚沁蕾”。如此详实的说明不仅为返回的答案提供了很好的解释,从另一个侧面也展示了知识图谱的强大,其不仅能识别出运动员姚明,也能抽取出关系“老婆”和“女儿”和属性“身高”等信息。当我们将查询修改为“姚明的妻子的女儿的身高”时,依然返回相同的结果,这也意味着知识图谱知道“妻子”和“老婆”代表相同的含义。通过上述的介绍,大家应该对知识图谱的表示以及其在搜索中的展现形式有了更深的了解。接着,我将介绍知识图谱的构建以及如何在搜索中应用知识图谱返回相应的知识卡片以及答案。知识图谱的构建1.知识图谱的规模据不完全统计,Google知识图谱到目前为止包含了5亿个实体和35亿条事实(形如实体-属性-值,和实体-关系-实体)。其知识图谱是面向全球的,因此包含了实体和相关事实的多语言描述。不过相比占主导的英语外,仅包含其他语言(如中文)的知识图谱的规模则小了很多。与此不同的是,百度和搜狗主要针对中文搜索推出知识图谱,其知识库中的知识也主要以中文来描述,其规模略小于Google的。2.知识图谱的数据来源为了提高搜索质量,特别是提供如对话搜索和复杂问答等新的搜索体验,我们不仅要求知识图谱包含大量高质量的常识性知识,还要能及时发现并添加新的知识。在这种背景下,知识图谱通过收集来自百科类站点和各种垂直站点的结构化数据来覆盖大部分常识性知识。这些数据普遍质量较高,更新比较慢。而另一方面,知识图谱通过从各种半结构化数据(形如HTML表格)抽取相关实体的属性-值对来丰富实体的描述。此外,通过搜索日志(querylog)发现新的实体或新的实体属性从而不断扩展知识图谱的覆盖率。相比高质量的常识性知识,通过数据挖掘抽取得到的知识数据更大,更能反映当前用户的查询需求并能及时发现最新的实体或事实,但其质量相对较差,存在一定的错误。这些知识利用互联网的冗余性在后续的挖掘中通过投票或其他聚合算法来评估其置信度,并通过人工审核加入到知识图谱中。a)百科类数据维基百科4,通过协同编辑,已经成为最大的在线百科全书,其质量与大英百科媲美。可以通过以下方式来从维基百科中获取所需的内容:通过文章页面(ArticlePage)抽取各种实体;通过重定向页面(RedirectPage)获得这些实体的同义词(又称Synonym);通过去歧义页面(DisambiguationPage)和内链锚文本(InternalLinkAnchorText)获得它们的同音异义词(又称Homonym);通过概念页面(CategoryPage)获得各种概念以及其上下位(subclass)关系;通过文章页面关联的开放分类抽取实体所对应的类别;通过信息框(Infobox)抽取实体所对应的属性-值对和关系-实体对。类似地,从百度百科和互动百科抽取各种中文知识来弥补维基百科中文数据不足的缺陷。此外,Freebase5是另一个重要的百科类的数据源,其包含超过3900万个实体(其称为Topics)和18亿条事实,规模远大于维基百科。对比之前提及的知识图谱的规模,我们发现仅Freebase一个数据源就构成了Google知识图谱的半壁江山。更为重要的是,维基百科所编辑的是各种词条,这些词条以文章的形式来展现,包含各种半结构化信息,需要通过事先制定的规则来抽取知识;而Freebase则直接编辑知识,包括实体及其包含的属性和关系,以及实体所属的类型等结构化信息。因此,不需要通过任何抽取规则即可获得高质量的知识。虽然开发Freebase的母公司MetaWeb于2010年被Google收购,Freebase还是作为开放的知识管理平台独立运行。所以百度和搜狗也将Freebase加入到其知识图谱中。b)结构化数据除了百科类的数据,各大搜索引擎公司在构建知识图谱时,还考虑其他结构化数据。其中,LOD项目在发布各种语义数据的同时,通过owl:sameAs将新发布的语义数据中涉及的实体和LOD中已有数据源所包含的潜在同一实体进行关联,从而实现了手工的实体对齐(entity4://)。LOD不仅包括如DBpedia6和YAGO7等通用语义数据集,还包括如MusicBrainz8和DrugBank9等特定领域的知识库。因此,Google等通过整合LOD中的(部分)语义数据提高知识的覆盖率,尤其是垂直领域的各种知识。此外,Web上存在大量高质量的垂直领域站点(如电商网站,点评网站等),这些站点被称为DeepWeb10。它们通过动态网页技术将保存在数据库中的各种领域相关的结构化数据以HTML表格的形式展现给用户。各大搜索引擎公司通过收购这些站点或购买其数据来进一步扩充其知识图谱在特定领域的知识。这样做出于三方面原因:其一、大量爬取这些站点的数据会占据大量带宽,导致这些站点无法被正常访问;其二、爬取全站点数据可能会涉及知识产权纠纷;最后,相比静态网页的爬取,DeepWeb爬虫需要通过表单填充(FormFilling)技术来获取相关内容,且解析这些页面中包含的结构化信息需要额外的自动化抽取算法,具体细节在下一节描述。c)半结构化数据挖掘AVP虽然从DeepWeb爬取数据并解析其中所包含的结构化信息面临很大的挑战,各大搜索引擎公司仍在这方面投入了大量精力。一方面,Web上存在大量长尾的结构化站点,这些站点提供的数据与最主流的相关领域站点所提供的内容具有很强的互补性,因此对这些长尾站点进行大规模的信息抽取(尤其是实体相关的属性-值对的抽取)对于知识图谱所含内容的扩展是非常有价值的。另一方面,中文百科类的站点(如百度百科等)的结构化程度远不如维基百科,能通过信息框获得AVP的实体非常稀少,大量属性-值对隐含在一些列表或表格中。一个切实可行的做法是构建面向站点的包装器(Site-specificWrapper)。其背后的基本思想是:一个DeepWeb站点中的各种页面由统一的程序动态生成,具有类似的布局和结构。利用这一点,我们仅需从当前待抽取站点采样并标注几个典型详细页面(DetailedPages),利用这些页面通过模式学习算法(PatternLearning)6://://musicbrainz.org/9相对以静态网页和超链接关联的浅层Web(ShallowWeb)而言,称为深层Web。自动构建出一个或多个以类Xpath表示的模式,然后将其应用在该站点的其他详细页面中从而实现自动化的AVP抽取。对于百科类站点,我们可以将具有相同类别的页面作为某个“虚拟”站点,并使用类似的方法进行实体AVP的抽取。自动学习获得的模式并非完美,可能会遗漏部分重要的属性,也可能产生错误的抽取结果。为了应对这个问题,搜索引擎公司往往通过构建工具来可视化这些模式,并人工调整或新增合适的模式用于抽取。此外,通过人工评估抽取的结果,将那些抽取结果不令人满意的典型页面进行再标注来更新训练样本,从而达到主动学习(ActiveLearning)的目的。d)通过搜索日志进行实体和实体属性等挖掘搜索日志是搜索引擎公司积累的宝贵财富。一条搜索日志形如查询,点击的页面链接,时间戳。通过挖掘搜索日志,我们往往可以发现最新出现的各种实体及其属性,从而保证知识图谱的实时性。这里侧重于从查询的关键词短语和点击的页面所对应的标题中抽取实体及其属性。选择查询作为抽取目标的意义在于其反映了用户最新最广泛的需求,从中能挖掘出用户感兴趣的实体以及