知识图谱构建流程

2019-10-08 03:05发布

今天以 CN-DBpedia 为例看下知识图谱大致是怎么构建的。

一、构建系统架构

下图分别是 CN-DBpedia 的构建流程和系统架构。知识图谱的构建是一个浩大的工程,从大方面来讲,分为知识获取、知识融合、知识验证、知识计算和应用几个部分,也就是上面架构图从下往上走的一个流程,简单来走一下这个流程。



数据支持层

最底下是知识获取及存储,或者说是数据支持层,首先从不同来源、不同结构的数据中获取知识,CN-DBpedia 的知识来源主要是通过爬取各种百科知识这类半结构化数据。

至于数据存储,要考虑的是选什么样的数据库以及怎么设计 schema。选关系数据库还是 NoSQL 数据库?要不要用内存数据库?要不要用图数据库?这些都需要根据数据场景慎重选择。

知识融合层

目前分布在互联网上的知识常常以分散、异构、自治的形式存在,另外还具有冗余、噪音、不确定、非完备的特点,清洗并不能解决这些问题,因此从这些知识出发,通常需要融合和验证的步骤,来将不同源不同结构的数据融合成统一的知识图谱,以保证知识的一致性。

所以数据支持层往上一层实际上是融合层,主要工作是对获取的数据进行标注、抽取,得到大量的三元组,并对这些三元组进行融合,去冗余、去冲突、规范化。


尤其是纯文本数据会涉及到的等,需要用到许多自然语言处理的技术,包括但不仅限于分词、词性标注、分布式语义表达、篇章潜在主题分析、同义词构建、语义解析、依存句法、语义角色标注、语义相似度计算等等。

二、知识融合

融合,目的是将不同数据源获取的知识进行融合构建数据之间的关联。包括实体对齐、属性对齐、冲突消解、规范化等,这一部分很多都是 dirty work,更多的是做一个数据的映射、实体的匹配,可能还会涉及的是本体的构建和融合。最后融合而成的知识库存入上一部分提到的数据库中。如有必要,也需要如 Spark 等大数据平台提供高性能计算能力,支持快速运算。

三、知识验证

再往上一层主要是验证,分为补全、纠错、外链、更新各部分,确保知识图谱的一致性和准确性。一个典型问题是,知识图谱的构建不是一个静态的过程,当引入新知识时,需要判断新知识是否正确,与已有知识是否一致,如果新知识与旧知识间有冲突,那么要判断是原有的知识错了,还是新的知识不靠谱?这里可以用到的证据可以是权威度、冗余度、多样性、一致性等。如果新知识是正确的,那么要进行相关实体和关系的更新

四、知识计算和应用

这一部分主要是基于知识图谱计算功能以及知识图谱的应用。知识计算主要是根据图谱提供的信息得到更多隐含的知识,像是通过本体或者规则推理技术可以获取数据中存在的隐含知识;通过链接预测预测实体间隐含的关系;通过社区计算在知识网络上计算获取知识图谱上存在的社区,提供知识间关联的路径……通过知识计算知识图谱可以产生大量的智能应用如专家系统、推荐系统、语义搜索、问答等。

五、数据获取

一般在数据获取之前会先做个知识建模,建立知识图谱的数据模式,可以采用两种方法:一种是自顶向下的方法,专家手工编辑形成数据模式;另一种是自底向上的方法,基于行业现有的标准进行转换或者从现有的高质量行业数据源中进行映射。数据建模都过程很重要,因为标准化的 schema 能有效降低领域数据之间对接的成本。

六、数据存储

数据存储是非常重要的一环,第一个问题是选什么数据库。如实体(公司、人)和规范的关系(高管),设计了四张表,两张实体表分别存公司(company)和人物(person)的信息,一张关系表存公司和高管的对应关系(management),最后一张 SPO 表存三元组

七、数据可视化

作者:李娇

文章来源: https://www.toutiao.com/group/6737069861224055310/