Topbase 是由 TEG-AI 平台部构建并维护的一个专注于通用领域知识图谱,其涉及 226 种概念类型,共计 1 亿多实体,三元组数量达 22 亿。在技术上,Topbase 支持图谱的自动构建和数据的及时更新入库。此外,Topbase 还连续两次获得过知识图谱领域顶级赛事 KBP 的大奖。目前,Topbase 主要应用在微信搜一搜,信息流推荐以及智能问答产品。本文主要梳理 Topbase 构建过程中的技术经验,从 0 到 1 的介绍了构建过程中的重难点问题以及相应的解决方案,希望对图谱建设者有一定的借鉴意义。
知识图谱( Knowledge Graph)以结构化的形式描述客观世界中概念、实体及其关系,便于计算机更好的管理、计算和理解互联网海量信息。通常结构化的知识是以图形式进行表示,图的节点表示语义符号(实体,概念),图的边表示符号之间的语义关系(如图 1 所示),此外每个实体还有一些非实体级别的边(通常称之为属性),如:人物的出生日期,主要成就等。
TEG-AI 平台部的 Topbase 是专注于通用领域知识。数据层面,TopBase 覆盖 51 个领域的知识,涉及 226 种概念类型,共计 1 亿多个实体,三元组数量达 22 亿多。技术层面,Topbase 已完成图谱自动构建和更新的整套流程,支持重点网站的监控,数据的及时更新入库,同时具备非结构化数据的抽取能力。此外,Topbase 还连续两次获得过知识图谱领域顶级赛事 KBP 的大奖,分别是 2017 年 KBP 实体链接的双项冠军,以及 2019 年 KBP 大赛第二名。在应用层面,Topbase 主要服务于微信搜一搜,信息流推荐以及智能问答产品。本文主要梳理 Topbase 构建过程中的重要技术点,介绍如何从 0 到 1 构建一个知识图谱,内容较长,建议先收藏。
TopBase 的技术框架如图 2 所示,主要包括知识图谱体系构建,数据生产流程,运维监控系统以及存储查询系统。其中知识图谱体系是知识图谱的骨架,决定了我们采用什么样的方式来组织和表达知识,数据生产流程是知识图谱构建的核心内容,主要包括下载平台,抽取平台,知识规整模块,知识融合模块,知识推理模块,实体重要度计算模块等。Topbase 应用层涉及知识问答(基于 topbase 的 KB-QA 准确率超 90%),实体链接(2017 图谱顶级赛事 KBP 双料冠军),相关实体推荐等。
知识体系的构建是指采用什么样的方式来组织和表达知识,核心是构建一个本体(或 schema)对目标知识进行描述。在这个本体中需要定义:1)知识的类别体系(如:图 1 中的人物类,娱乐人物,歌手等);2)各类别体系下实体间所具有的关系和实体自身所具有的属性;3)不同关系或者属性的定义域,值域等约束信息(如:出生日期的属性值是 Date 类型,身高属性值应该是 Float 类型,简介应该是 String 类型等)。我们构建 Topbase 知识体系主要是以人工构建和自动挖掘的方式相结合,同时我们还大量借鉴现有的第三方知识体系或与之相关的资源,如:http://Schema.org、Dbpedia、大词林、百科(搜狗)等。知识体系构建的具体做法:
知识更新主要包括两方面内容,一个是新出现的热门实体,需要被及时发现和下载其信息,另一个是关系属性变化的情况需要对其值进行替换或者补充,如明星的婚姻恋爱关系等。知识更新的具体流程如下图所示:
来源说明重点网站种子页新闻语料搜索日志已有图谱数据运营系统页面数量7293999696418888046704124
表 1 最近 7 日下载数据统计情况
2.针对其他关系属性易变的情况,我们针对某些重要关系属性进行专项更新。如明星等知名人物的婚姻感情关系我们主要通过事件挖掘的方式及时更新,如:离婚事件会触发已有关系“妻子”“丈夫”变化为“前妻”“前夫”,恋爱事件会触发“男友”“女友”关系等。此外,基于非结构化抽取平台获得的三元组信息也有助于更新实体的关系属性。
Topbase 的抽取平台主要包括结构化抽取,非结构化抽取和专项抽取。其中结构化抽取主要负责抽取网页编辑者整理好的规则化知识,其准确率高,可以直接入库。由于结构化知识的局限性,大量的知识信息蕴含在纯文本内容中,因此非结构化抽取主要是从纯文本数据中挖掘知识弥补结构化抽取信息的不足。此外,某些重要的知识信息需要额外的设计专项策略进行抽取,比如:事件信息,上位词信息(概念),描述信息,别名信息等。这些重要的知识抽取我们统称专项抽取,针对不同专项的特点设计不同的抽取模块。
1. 结构化抽取平台
许多网站提供了大量的结构化数据,如(图 4 左)所示的百科 Infobox 信息。这种结构化知识很容易转化为三元组,如:“<姚明,妻子,叶莉>”。针对结构化数据的抽取,我们设计了基于 Xpath 解析的抽取平台,如(图 4 右)所示,我们只需要定义好抽取网页的种子页面如:baike.com,然后从网页源码中拷贝 Infobox 中属性的 xpath 路径即可实现结构化知识的自动抽取,入库。通过结构化抽取平台生成的数据准确率高,因此无需人工参与审核即可直接入库,它是知识图谱的重要数据来源。
由于大量的知识是蕴含在纯文本中,为了弥补结构化抽取信息的不足,我们设计了非结构化抽取平台。非结构化抽取流程如图 5 所示:
首先我们获取知识图谱中重要度高的实体名构建 Tri 树,然后回标新闻数据和百科正文数据,并将包含实体的句子作为候选抽取语料(新闻和百科数据需要区别对待,新闻数据往往包含最及时和最丰富的三元组信息,百科数据质量高,包含准确的知识,且百科摘要或正文描述相对简单,抽取结果的准确率高)。
然后,我们利用 Topbase 的实体链接服务,将匹配上的实体链接到知识库的已有实体中,避免了后期的数据融合。比如:实体“李娜”匹配到一句话是“歌手李娜最终归一了佛门”,那么这句话中的李娜会对应到知识库中的歌手李娜,而不是网球李娜,从这句话中抽取的结果只会影响歌手李娜的。实体链接之后,我们将候选语料送入我们的抽取服务,得到实体的三元组信息。
最后,三元组结果会和知识库中已有的三元组数据进行匹配并给每一个抽取得到的三元组结果进行置信度打分,如果知识库已经存在该三元组信息则过滤,如果知识库中三元组和抽取得到的三元组发生冲突则进入众包标注平台,如果三元组是新增的知识则根据他们的分值决定是否可以直接入库或者送入标注平台。此外,标注平台的结果数据会加入到抽取服务中 Fine-tune 模型,不断提升抽取模型的能力。
上述流程中的核心是抽取服务模块,它是非结构化抽取策略的集合。抽取服务构建流程如图 6 所示,其主要包括离线模型构建部分以及在线服务部分。离线模型构建的重点主要在于如何利用远监督的方式构建抽取模型的训练数据以及训练抽取模型。在线流程重点是如何针对输入的文本进行预处理,走不同的抽取策略,以及抽取结果的后处理。针对不同属性信息的特点,抽取策略主要可以简单归纳为三大类方法:
3. 专项抽取
专项抽取模块主要是针对一些重要知识的抽取。目前知识图谱设计的专项抽取内容主要有:上位词抽取(概念),实体描述抽取,事件抽取,别名抽取等。
1 ) 上位词抽取: 上位词可以理解为实体细粒度的概念,有助于更好的理解实体含义。图 7 是构建上位词图谱的一个简要流程图,其中主要从三路数据源中抽取上位词数据,主要包括:知识图谱的属性数据,百科人工标注 Tag,纯文本语料。由于抽取得到的上位词表述多样性问题,所以需要在抽取后进行同义上位词合并。此外,抽取生成的上位词图谱也会存在着知识补全的问题,所以需要进一步的进行图谱的连接预测,进行上位词图谱的补全。
2) 实体描述 tag 抽取: 实体描述 tag 是指能够描述实体某个标签的短句,图 7 是从新闻文本数据中挖掘到的实体“李子柒”的部分描述 tag。描述 tag 目前主要用于相关实体推荐理由生成,以及搜索场景中实体信息展示。描述 tag 抽取的核心模块以 QA-bert 为主的序列标注模型,query 是给定的实体信息,答案是句子中的描述片段。此外,还包括一系列的预处理过滤模块和后处理规整过滤模块。
3)事件抽取: 事件抽取的目的是合并同一事件的新闻数据并从中识别出事件的关键信息生成事件的描述。事件抽取的基本流程如图 8 所示。
知识规整目的是将实体数据映射到知识体系,并对其关系属性等信息进行去噪,归一化等预处理。如图 9 所示,左侧是从百科页面获取的武则天人物信息,右侧是从电影相关网站中获得的武则天信息,那么左侧的“武则天”应该被视为“人物类--历史人物--帝王”,右侧“武则天”应该被视为“作品--影视作品--电影”。左侧人物的“民族”属性的原始名称为“民族族群”,所以需要将其规整为 schema 定义的“民族”,这称之为属性归一。此外,由于不同来源的数据对实体名称会有不同的注释,如豆瓣的“武则天”这部电影后面加了一个年份备注,所以我们还需要对实体名进行还原处理等各种清洗处理。知识规整的核心模块是如何将实体映射到知识体系,即实体分类。
1. 实体分类的挑战:
2.实体分类方法:实体分类本质是一个多分类问题。针对知识库的特点以及上述挑战,我们分别从训练样本构建,特征选择以及模型设计三方面实现实体分类模块。
1 )实体分类的训练样本构建:
2) 实体分类的特征选择:
3) 实体分类模型
知识融合的目的是将不同来源的数据进行合并处理。如从搜狗百科,体育页面以及 QQ 音乐都获取到了"姚明"信息,首先需要判断这些来源的"姚明"是否指同一实体,如果是同一个实体(图 18 中的搜狗和虎扑的姚明页面)则可以将他们的信息进行融合,如果不是(QQ 音乐的姚明页面)则不应该将其融合。知识融合的核心是实体对齐,即如何将不同来源的同一个实体进行合并。
1. 实体对齐挑战
2. 实体对齐的解决思路
实体对齐的整体流程如图所示,其主要环节包括数据分桶,桶内实体相似度计算,桶内实体的聚类融合。
1)数据分桶:数据分桶的目的是对所有的多源实体数据进行一个粗聚类,粗聚类的方法基于简单的规则对数据进行分桶,具体规则主要是同名(原名或者别名相同)实体分在一个桶内,除了基于名称匹配,我们还采用一些专有的属性值进行分桶,如出生年月和出生地一致的人物分在一个桶。
2)实体相似度计算:实体相似度直接决定了两个实体是否可以合并,它是实体对齐任务中的核心。为了解决相似属性稀疏导致的欠融合问题,我们引入异构网络向量化表示的特征,为了解决同系列作品极其相似的过融合问题,我们引入了互斥特征。
3) 相似实体的聚类合并:
**知识关联(链接预测)**是将实体的属性值链接到知识库的实体中,构建一条关系边,如图 24 所示“三国演义”的作者属性值是“罗贯中”字符串,知识关联需要将该属性值链接到知识库中的实体“罗贯中”,这样实体“三国演义”和“罗贯中”之间存在一条“作者”的关系边。
Topbase 的知识关联方案分为基于超链接的关联和基于 embedding 的文本关联两种方式。超链接关联是 Topbase 进行关联和推理的第一步,它是利用网页中存在的超链接对知识图谱中的实体进行关联,如百科“三国演义”页面中,其“作者”属性链接到“罗贯中”的百科页面(如图 24 所示),基于这种超链接的跳转关系,可以在 Topbase 的实体之间建立起一条边关系,如该示列会在实体“三国演义”与“罗贯中”之间生成一条“作者”关系,而“曹操”并没有该超链接,所以三国演义的主要人物属性中的字符串“曹操”不会关联到具体的实体页面中。在进行超链接关联之前,Topbase 中的实体是一个个孤立的个体,超链接关联为知识图谱补充了第一批边关系,但是超链接关联无法保证链接的覆盖率。
基于此,Topbase 提出基于 embedding 的文本关联。基于 embedding 的文本关联是在已知头实体、关系的基础上,在候选集中对尾实体进行筛选,尾实体的候选集是通过别名匹配召回。如上述百科示列中的“主要人物”属性,我们利用其属性值字符串”曹操“去 Topbase 库里匹配,召回所有和”曹操”同名称的实体作为建立链接关系的候选。然后利用知识库 embedding 的方法从候选实体中选择最相似的实体作为他的链接实体。基于文本名称的匹配召回候选可以大大提高知识库 embeding 方法的链接预测效果。基于 embedding 的链接关系预测是通过模型将实体和关系的属性信息、结构信息嵌入到一个低维向量中去,利用低维向量去对缺失的尾实体进行预测。
当前采用的嵌入模型是 TextEnhanced+TransE,模型结构如图 25 所示。TransE 是将实体与关系映射到同一向量空间下,它是依据已有的边关系结构对实体之间的边关系进行预测,对孤立实体或链接边较少的实体预测效果较差。为了引入文本信息,解决模型对孤立实体预测的难题,模型使用 TextEnhanced 对文本信息进行嵌入。TextEnhanced 通过 NN 模型对文本信息嵌入后,利用 Attention 机制将文本信息嵌入到 Trans 系列的实体向量中,进而对尾实体进行预测。
由于知识关联是在已知属性值的前提下,通过名称匹配的方式得到关联实体的候选集,所以知识关联无法补充缺失属性值的链接关系。如上图中“三国演义”的信息中并没有“关羽”,知识推理目的是希望能够挖掘“三国演义”和“关羽”的潜在关系。为了保证图谱数据的准确率,Topbase 的知识推理主要以规则推理为主,具体的规则方法可以归纳为以下几类:
实体的知名度(Popularity)指标可以用于量化不同实体的重要性程度,方便我们更好的使用图谱数据。Topbase 知识库的 popularity 计算以基于实体链接关系的 pagerank 算法为核心,以对新热实体的 popularity 调整为辅,并配以直接的人工干预来快速解决 badcase。具体地,首先抽取实体页面之间的超链接关系,以此为基础通过修改后的 pagerank 算法来计算所有实体的 popularity;对于难以通过 pagerank 算法计算的新热实体的 popularity,再进行规则干预。最后对于仍然难以解决的 case,则直接对其 popularity 值进行人工赋值。Popularity 计算模块的整体流程如下图所示:
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。