欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

知识图谱概述

程序员文章站 2022-06-12 17:34:14
...

1. 知识图谱概述与架构

1.1 web发展路线
  • web 1.0时代:文档互联
  • web 2.0 时代:数据互联
  • web 3.0时代:知识互联,知识图谱强大的语义理解和开放互联能力为基础

RDF(resource description framework)和OWL(web ontology language),基于使用本体模式来形式化的表达数据中的隐含语义的目的。知识图谱是基于语义网的相关研究,是对语义网标准与技术的一次扬弃与升华。

1.2 知识图谱

知识图谱2015年,goole为解决收索引擎的能力,增强用户的搜索质量与体验,正是提出知识图谱。目前已广泛用于智能搜索,智能问答,个性化推荐等领域。

  • 定义

    狭义的讲(*),知识图谱是google用于增强其搜索功能的知识库。本质上讲,知识图谱是一种揭示实体之间关系的语义网络,对现实世界的事物以及相互关系进行形式化的描述。目前的知识图谱广泛的指各大规模的知识库。

  • 表示

    • 三元组:G=(E,R,S)G=(E, R, S)

      • E=e1,e2,...enE={e_{1}, e_{2}, ... e_{n}} 是知识库中实体集合。
      • R=r1,r2,...rnR={r_{1}, r_{2}, ... r_{n}} 是知识库中的关系集合。
      • S={rrE×R×E}S =\{ r | r \in E × R × E\} 代表知识库中三元组集合
    • 三元组的基本形式

      • 实体:知识图谱中的最基本元素

      • 关系:连接两个实体,刻画它们之间的联系

      • 概念:主要指集合、类别、对象类型、事物的种类。例如:人物、地理等

      • 属性:对象可能具有的属性、特征、特点、参数等。例如:国籍、姓名、生日等。

      • 属性值:对象属性的值。

        每个实体(概念的外延)可用全局唯一确定的ID来标识,属性对(attribute-value par, AVP)用来刻画实体的内在特性。

  • 分类

    • 通用知识图谱:注重广度,覆盖行业多,范围大,但准确度不够高。主要应用与智能搜索。
    • 行业知识图谱(垂直领域):依靠特定行业的数据来构建,具有特定的行业意义。专业性较强。
  • 知识图谱架构

    • 逻辑结构

      • 模式层: 构建于数据层之上,通过本体库来规范数据层的一些列事实表达。
      • 数据层:事实数据,知识以事实为单位存储。常用的图数据库有:Neo4j, gStore, Twitter的FlockDB, sones的GraphDB等。
      • 本体:本体是结构化知识库的概率模板。层次结构强,冗余程度小。
    • 体系结构

      知识图谱的体系结构指构建模式。如下图所示。

      ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200319174739520.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NoZW5ndWFuZ2NodW4xOTkz,size_16,color_FFFFFF,t_70)
      
      • 自顶向下(top-down):先定义本体与数据模式,再将实体加入到知识库。例如:Freebase。
      • 自底向上(bottom-up):从一些开放链路数据中提取实体,选择置信度较高的实体加入知识库,最后再构建本体模式。目前,大多数采用自底向上的模式构建知识图谱,典型的有Google的Knowledge Vault。

2. 大规模知识库

2.1 开放链接知识库
  • Freebase:Metaweb(创建)->Google(收购)。Freebase在人工构建的基础上,融合了*、IMDB、Flick等语料库。截止2014年底,Freebase包含6800万实体,10亿条关系信息,24亿条事实三元组信息。2015年6月,Freebase整体移入WikiData。

  • Wikidata:维基媒体基金会主持的一个*的协作式多语言辅助知识库。Wikidata中的数据主要以文档的形式进行存储,目前已包含了超过1 700万个文档。其中的每个文档都有一个主题或一个管理页面,且被唯一的数字标识。

  • DBpedia:DBpedia[18]是由德国莱比锡大学和曼海姆大学的科研人员创建的多语言综合型知识库,在LOD项目中处于最核心的地位。截止至2014年年底,DBpedia中的事实三元组 数量已经超过了30亿条。

  • YAGO:YAGO[19]是由德国马普所(max planck institute,MPI)的科研人员构建的综合型知识库。YAGO整合了*、WordNet以及GeoNames等数据源。2012年发布的第二版本,包含了超过1000万的实体以及超过1.2亿的事实。

2.2 垂直行业知识库
  • IMDB:关于电影、演员、电视节目的知识库。截止到2012年2月,IMDB共收集了2 132 383部作品资料和4 530 159名人物资料。

      MusicBrainz:一个结构化的音乐*,致力于收藏所有的音乐元数据,并向大众用户开放。
    
  • ConceptNet:语义知识网络。与链路数据和Google知识图谱相比,ConceptNet更加侧重与词与词的关系。ConceptNet完全免费开放,并支持多种语言。

3. 知识图谱的关键技术

3.1 知识抽取

知识抽取主要面向开放的链接数据,通过自动化技术抽取出可用的知识单元,知识单元包括:实体、关系、属性。

  • 实体抽取(NER)

    • 基于规则和词典
    • 基于统计机器学习:隐马尔科夫模型(HMM)、条件马尔科夫模型(CMM)、最大熵模型(MaxEnt)、条件随机场(CRF)。
    • 基于深度学习:LSTM+CRF、LSTM+CNNs+CRF、 BERT、Attention
  • 关系抽取

    目标在于解决实体间语义链接的问题,早期的关系抽取主要是通过构造人工语义规则和模板,发展至今,实体间的关系模型成为主流抽取方法。

    • 基于模板:二元开放式 vs n元开放式

    • 基于监督学习

      基于监督学习的关系抽取方法核心在于将关系抽取转化为分类问题。在大量标注数据的基础上,训练监督模型进行关系抽取,一般步骤如下:a. 预定义关系类型, b. 人工标注数据 c. 设计关系识别所需要的特征 d. 选择分类模型 e. 训练模型

      传统的基于监督学习的关系抽取严重依赖与特征工程,而深度学习的方法自动学习特征,不再需要人工构建各种特征,大大简化了人工操作。

      • 基于深度学习流水线的关系抽取方法

        CR-CNN模型、Attention CNNs模型、Attention BLSTM模型 …

      • 基于深度学习的联合关系抽取方法

    • 基于若监督学习的关系抽取方法

      监督学习需要大量的标注预料,当预料不足时,弱监督学习可以只利用少量标注数据进行模型学习。

      • 远程监督方法

        远程监督方法通过讲知识图谱与非机构化文本对齐的方式自动构建大量的训练预料,减少模型对人工标注训练数据的依赖。远程监督的基本假设是如果两个实体在知识图谱中存在某种关系,则包含两个实体的句子均表达了这种关系。例如:在某知识图谱中存在实体关系创始人(乔布斯,苹果公司),那么,包含实体乔布斯和苹果公司的句子“乔布斯是苹果公司的联合创始人和CEO” 可以被用作关系创始人的训练正例。远程监督的一般步骤为:

        1. 从知识图谱中抽取存在的目标关系的实体对
        2. 从非机构化文本中抽取包含实体对的句子作为训练样例
        3. 训练监督学习模型进行关系抽取
      • Bootstrapping方法

        Boostrapping方法利用少量的实例作为初始种子集合,然后在种子集合上学习关系抽取的模板,再利用模板抽取更多的实例,加入种子集合中,通过不断的迭代,Boostrapping可以从文本中抽取关系的大量实例。

  • 属性抽取

    针对实体而言,通过属性形成对实体的完整刻画。实体的属性抽取可以转化为关系抽取问题。

  • 事件抽取

    事件抽取指从自然语言中抽取出用户感兴趣的事件信息,并以结构化的形式呈现出来。事件指发生的事件,通常具有时间、地点、参与者等属性。事件的发生可能因为一个动作的产生或者系统状态的改变。一般地,事件抽取任务包含的子任务有:

    • 识别事件触发词及事件类型
    • 识别事件元素同时判断其角色
    • 抽取描述事件的词或者句子
    • 事件属性标注
    • 事件共指消解

    同样的,事件抽取可分为以下两类:

    • 基于流水线的事件抽取

      流水线方法将事件抽取任务划分为一系列基于分类的子任务,每个子任务由一个机器学习器负责实施。

    • 联合抽取

      流水线方法存在误差传递问题,导致误差不断积累,事件抽取性能急剧衰减。在联合抽取方法中,事件的所有相关信息会通过一个模型同时抽取出来。

      • 联合推断:建立事件抽取子任务的模型,然后将各个模型的目标函数进行组合,形成联合推断的目标函数,通过对联合目标函数的优化,获得事件抽取各个子任务的结果。
      • 在充分分析子任务之间的关系之后,基于概率图模型进行联合建模,获得事件抽取的总体结果。
3.2 知识表示
知识表示主要有两种:基于离散符号的知识表示和基于连续向量的知识表示方法

​ 基于离散符号化的表示方法可以很有效的将数据结构化,节点对应着三元组的头实体和尾实体,边对应着三元组的关系。但是它并不能在计算机中表达相应的语义层面的信息,也不能进行语义计算。

  • 基于离散符号的知识表示

    随着语义网的发展,早期web的标准语言HTML和XML无法适应语义网对知识表示的要求,W3C提出了新的标准语言:RDF、RDFS和OWL

    • RDF

      知识总是以三元组的形式出现,表示为:(subject,predicate,object)。例如:“IBM邀请Jeff Pan作为讲者,演讲主题是知识图谱”,可以以下RDF三元组:(IBM-Talk,speaker,Jeff),(IBM-Talk,theme,KG)。

      RDF中的主语是一个个体,个体是类的实例。谓语是一个属性。宾语可以是一个个体,如(IBM-Talk,speaker,Jeff),也可以是一个数据类型的实例,例如:(IBM-Talk,TalkDate,“05-10-2012”^xsd:date)

    • RDFS

      RDFS在RDF的基础上定义了类和属性的模式,RDF Schema(简称 RDFS)提供了对类和属性的简单描述。

      RDFS提供了最基本的对类和属性的描述原语:

      • rdf:type: 用于指定个体的类
      • rdfs:subClassOf:指定父类
      • rdfs:subPropertyOf:属性的父属性
      • rdfs:domain:属性的定义域
      • rdfs:range:属性的值域
    • OWL

      相对于RDF和RDFS,OWL能够表达更丰富的信息,应用与更加复杂的场景。OWL的常见词汇有:

      • 等价性声明:声明两个类、属性、实例是等价的。例如:exp:运动员 owl:equivalentClass exp:体育选手;exp:获得 owl:equivalentProperty exp:取得;exp:运动员 A owl:sameIndividualAs exp:小明

      • 属性传递声明:声明一个属性是传递关系,例如:exp:ancestor rdf:type owl:TransitiveProperty 指的是exp:ancestor是一个传递关系。

      • 属性互逆声明:声明两个属性有互逆的关系,owl:inverseOf

      • 属性的函数性声明:声明一个属性是函数。例如:exp:hasMother rdf:type owl:FunctionalProperty 指的是exp:hasmother是一个函数,即一个生物只有一个母亲。

      • 属性的对称性声明:声明一个属性是对称的。owl:SymmetricProperty

      • 属性的全称限定声明:声明一个属性是全称限定的。例如:

        exp:Person owl:allValuesFrom exp:Woman

        exp:Person owl:onProperty exp:hasMother

        上诉说明exp:haMother在主语exp:Person类的条件下,宾语的取值只能来自于exp:Women类。

      • 属性的存在限定声明。例如:

        exp:SemanticWebPaper owl:someValuesFrom exp:AAAI

        exp:SemanticWebPaper owl:onProperty exp:publishedIn

        上诉表明,exp:publishedIn的取值部分来自于exp:AAAI

      • 属性的基数限定声明:声明一个属性的基数,例如:

        exp:Person owl:cardinality “1”^^xsd:integer

        exp:Person owl:onProperty exp:hasMother

        上述表明,exp:hasMother在主语属于exp:person类的条件下,宾语的取值只能有一个,“1”的数据类型被声明为xsd:integer。

      • 相交的类声明:声明一个类是等价与两个类相交。例如:

        exp:Mother owl:intersectionOf _tmp

        _tmp rdf:type rdfs:Collection

        _tmp rdfs:member exp:Person

        _tmp:rdfs:member exp:HasChildren

        上述说明,exp:Mother是exp:Person和exp:HasChildren两个类的交集。

  • 连续向量的表示方法

    KG embedding主要是将KG中实体与关系隐射到一个低维的向量空间。KG embedding也是通过机器学习的方法对模型进行学习,与one-hot、word2vec的最大区别在于,它需要进行监督学习。

    • 转移距离模型(Translation Distance Model)

      transD模型的主要思想是讲衡量向量化的知识图谱中三元组的合理性问题,转化为衡量头实体和尾实体的距离问题。核心在于如何设计得分函数,得分函数通常被设计成利用关系把头实体转移到尾实体的合理性的函数。

      TransE受到词向量中平移不变性的启发,把实体和关系表示成向量,对某一个具体的关系(h, r, t),把关系的向量表示解释成头实体的向量到尾实体的向量的转移向量,即满足关系h+rth+r \approx t关系。

      vec(Rome)+vec(iscapitalof)vec(Italy) vec(Rome)+vec(is-capital-of) \approx vec(Italy)

    • 语义匹配模型(Semantic Matching Models)

      语义匹配模型更加注重挖掘向量化后的实体和关系的潜在语义,该方向上的模型主要是RESCAL以及它的延伸模型。

      在RESCAL模型中,知识库中的三元组(h,r,t)集合被表示为一个三阶张量,该张量可以分解为一个核心张量和一个因子矩阵,核心张量中的每个二维矩阵切片代表一个关系,因子矩阵中的每一行代表一个实体。三阶张量中的值表示对应三元组成立的概率,如果概率大于某个阈值,则三元组成立,否则不成立。其得分函数如下:
      fr(h,t)=hTMrt=i=0d1j=0d1[Mr]ij[h]i[r]j f_{r}(h,t)=h^{T}M_{r}t=\sum_{i=0}^{d-1}\sum_{j=0}^{d-1}[M_{r}]_{ij}\cdot[h]_{i}\cdot[r]_{j}

    • 考虑附加信息的模型

      除了仅仅依靠知识图谱中的三元组构造KG embedding的模型,还有一些模型考虑额外的附加信息进行提升。

      通常考虑的附加信息有:实体类型、关系路劲、文本描述、逻辑规则等。

3.3 知识融合

​ 知识图谱中的知识来源广泛,存在着数据质量良莠不齐、来源于不同数据源的知识重复、知识间的关联不够明确等问题。

​ 知识融合是高层次的知识组织,使来自不同知识源的知识在同一框架规范下进行异构数据整合、消歧、加工、推理验证、更新等步骤,形成高质量的知识库。

  1. 实体对齐

    实体对齐又称为实体匹配,主要目的在于消除异构数据中实体冲突、指向不明等不一致性问题。

    实体对齐主要面临以下几个挑战:

    • 计算复杂度:匹配算法的计算复杂度会随着知识库的规模呈二次增长。
    • 数据质量:不同知识库的数据质量良莠不齐。
    • 先验训练数据:难以获取先验数据,大部分情况下,只能手动构造。

    知识库实体对齐的主要流程如下:

    1. 将待对齐数据进行分区索引
    2. 利用相似度函数或者相似算法查找匹配实例
    3. 使用实体对齐算法进行实例融合
    4. 将步骤2和步骤3结合,形成最终的对齐结果

    知识融合主要分为:本体对齐、实体对齐。两者的基本流程大致相似,如下所示:

知识图谱概述

  • 数据预处理

    数据预处理阶段,原始数据的质量会直接影响到最终链接的结果,不同的数据集对同一实体的描述方式往往是不相同的,对这些数据进行归一化是提高后续链接精确度的重要步骤

    • 语法正规化
      • 语法匹配:如联系电话的表示方法
      • 综合属性:如家庭地址的表达方法
    • 数据正规化
      • 移除空格、{}等符号
      • 用正式名字替换昵称和缩写等
  • 分块

    分块是从给定的知识库中的所有实体对中,选出潜在匹配的记录对作为候选项,尽可能的缩小候选项,减少数据量、

    Hash函数的分块

    • 给定记录xxhash(x)=hihash(x)=h_{i} 则x映射到关键字hih_{i} 绑定的块CiC_{i} 上。

    • 近邻分块

      canopy聚类、排序邻居算法、Red-Blue Set Cover等

  • 负载均衡

    负载均衡 (Load Balance)来保证所有块中的实体数目相当,从而保证分块对性能的提升程度。最简单的方法是多次Map-Reduce操作。

  • 记录链接

    假定两个实体X={x0,x1,...,xn}Y={y0,y1,...,yn}X=\{x_{0}, x_{1},...,x_{n}\} ,Y=\{y_{0}, y_{1},...,y_{n}\}xix_{i}是实体X第ii个属性的值。

    • 属性相似度

      综合单个属性相似度得到属性相似度向量:
      [sim(x1,y1),sim(x2,y2),...,sim(xn,yn)] [sim(x_{1},y_{1}),sim(x_{2},y_{2}),...,sim(x_{n},y_{n})]
      属性相似度的计算方式通常有以下几类:

      • 编辑距离:最小编辑距离(Levenstein)、Wagner and Fisher Distance、Edit Distance with affine gaps
      • 集合相似度计算:Dice系数、Jaccard系数
      • 基于向量的相似度计算:TF-IDF
    • 实体相似度

      根据属性相似度向量得到一个实体的相似度。计算实体相似度方法主要有以下三大类。

      • 聚合

        • 加权平均

          对相似度向量各个分量加权求和,得到最终的实体相似度:
          S=w1sim(x1,y1)+...+wnsim(xn,yn) S = w_{1}\ast sim(x_{1}, y_{1}) +...+w_{n} \ast sim(x_{n}, y_{n})

        • 规则

          可以为每个相似度分量设置一个阈值,若果超过改阈值则将两实体融合。
          sim(x1,y1)>T1and(or)...sim(xn,yn)>Tn sim(x_{1}, y_{1}) >T_{1} and(or) ... sim(x_{n}, y_{n}) >T_{n}

        • 分类器

          常用的分类模型,但存在最大问题在于如何生成训练集合。

      • 聚类

        • 层次聚类
        • 相关性聚类
        • Canopy + Kmeans
      • 表示学习:知识嵌入

        将知识图谱中的实体和关系都隐射到低维向量空间,直接用距离公式来计算各个实体间的相似度。这种方法不依赖任何的问题信息,直接提取数据的深度特征。

  1. 质量评估

    ​ 对知识库的质量评估通常和实体对齐任务一起进行,其意义在于对知识的可信度量化,保留置信度较高的,舍弃置信度较低的,确保知识的质量。

  2. 知识更新

    随着知识储备和业务需求的不断递增,知识图谱的内容需要与时俱进,不断迭代更新,扩展现有的知识,增加新的知识。

    根据知识图谱的逻辑结构,更新主要包括:模式(本体)层的更新和数据层的更新

    • 模式层的更新

      本体元素的更新,包括:概念的增、删、改,概念属性的更新以及概念的上下位关系的更新等。

    • 数据层的更新

3.4 知识推理

​ 对于推理规则的挖掘,主要还是依赖于实体及实体关系间的丰富同现情况,知识推理的对象可以是实体、关系、属性、本体库中的概念的层次结构等。

  1. 基于逻辑的推理

    • 一阶谓词逻辑推理:以命题为基本进行推理,命题包含个体和谓词。逻辑中的个体对应实体,谓词对应关系或个体的属性。
    • 描述逻辑:在命题逻辑之上发展而来,追求表示能力与推理复杂度之间的平衡。
  2. 基于图的推理

    利用关系路劲中的蕴含信息,通过图中两个实体间的多步路劲来预测他们之间的语义关系。

  3. 时序预测推理

  4. 基于强化学习的知识图谱推理

  5. 开源的知识推理工具

    • jena:开源支持语义网络和数据链接应用的java框架。
    • drools:基于Charles Forgy 的RETE算法的规则引擎的java实现。

4. 典型应用

​ 知识图谱为互联网上海量、异构、动态的大数据表达、组织、管理以及利用提供了一种更为有效的方式,使得网络的智能化水平更高,更加接近人类的认知思维。

4.1 智能搜索

​ 基于知识图谱的智能搜索是一种基于长尾的搜索,并将结果以知识卡片的形式展示出来(参考google)。查询请求主要经过两个阶段:查询式语义理解和知识检索。

  1. 语义理解

    语义分析主要包含以下阶段。

    • 查询文本预处理:分词、词性标注、文本纠错
    • 描述归一化:与知识库中的相关知识匹配
    • 语境分析:不同语境(上下文),查询对象有所差别,因此知识图谱需要结合用户当时的情感,给出相应的反馈。
    • 查询扩展:明确查询意图及相关概念之后,需要加入当前语境下的相关概念进行扩展。
  2. 知识检索

    经过查询式分析后的标准查询语句进入知识库检索引擎,引擎会在知识库中检索相应的实体及其相关属性、关系,通过对知识库的深层挖掘和提炼后,引擎给出具有重要性排序的知识体系。

  3. 常见的基于知识图谱的搜索引擎

    • 国外: Google Search、微软的Bing Search。
    • 国内:搜狗的知立方、百度的知心。
4.2 智能问答

​ 问答系统是信息检索系统的一种高级形式,能 够以准确简洁的自然语言为用户提供问题的解答。之所以说问答是一种高级形式的检索,是因为在问答系统中同样有查询式理解与知识检索这两个重要的过程,并且与智能搜索中相应过程中的相关细节是完全一致的。多数问答系统更倾向于将给定的问 题分解为多个小的问题,然后逐一去知识库中抽取 匹配的答案,并自动检测其在时间与空间上的吻合 度等,最后将答案进行合并,以直观的方式展现给用户。

​ 目前,常见基于知识图谱的问答平台有

  • 国外:华盛顿大学的Paralex系统、苹果公司的Siri、亚马逊的Evi。
  • 国内:百度机器人小度、聚问网络的在线问答系统OASK。
4.3 垂直行业的应用
  • 金融: 识别反欺诈、定制化销售策略。
  • 医疗:疾病图谱、中医图谱。
  • 电商:商品展示