Building Your Own Knowledge Graph from Scratch: A Two-Step Approach

从0开始构建你自己的知识图谱:一种两步式构造法

自动构建知识图谱的难点在于

  • 实体关系长尾分布导致传统方法构造的图谱包含知识不够完整也不够准确。
  • 训练数据的匮乏使得在构造知识图谱时尽可能多地包含实体/关系(尤其是那些尾部实体/关系)非常具有挑战性。

知识图谱

  • 知识图谱是一张图,实体作为图的节点,实体间的关系作为图的边。

本文创新点

  • 两步构造法——缓解了长尾分布的影响
    1. 先从不同的数据源(data sources)使用远程监督(distant supervised)提取器构造一个初始的知识图谱雏形。大概包含了一个知识图谱中40%的内容,大部分为头部实体/关系。
    2. 通过尾部实体/关系与头部实体/关系共享的上下文信息,使用单样本学习(one-example learning)策略来解决尾部实体/关系数据的离散性。这一步可以用来扩充第一步构造的初始知识图谱,使其规模更大,精确度更高。
      • 这一步有两个目标:
        • 对首部实体和尾部实体之间的语法和词法模式进行建模。
        • 对位于两个分离向量空间中的首部关系和尾部关系之间的语法和词法模式进行建模。
      • 通过实体与关系间的交互,将两个目标结合起来。

详细介绍

构造初始知识图谱雏形由两部分组成

  1. 提取器:负责从非结构化的数据集中提取实体、关系、事实等。
  2. 验证器:负责对提取器的结果进行知识质量评估、对不同来源获取的知识进行一致性检查。

基于种子的提取器

  • 首先预定义几种不同类型的实体/关系。
  • 然后对所选定的领域内的实体/关系类型确定一些具体实例(instances, or say seeds, 种子)。可以用多种方法来获得种子,如人工枚举、网络爬虫、参考领域字典等。选取种子时最好选择那些出现频率高的、明确性的实例。
  • 这种方法的最大的好处是:
    • 种子实体/关系可以用来从外部数据库、网络页面以及领域语料等数据源中产生候选的带标签的训练数据。需要注意的是每一特定种类的实例数量不能过多/过少。本文中,每类10个左右。(实例数越多,产生的训练数据也就越多)

由于选择的是流行、典型的实例,因此产生的训练数据包含的大多数都是领域中的首部关系/实体。

  • 得到训练数据之后,可以用标准的实体/关系抽取方法来构造初始的知识图谱雏形。

Stanford NLP工具 Stanford CoreNLP – Natural language software

  • 基于翻译的相似知识聚类

    • 对于特定的关系r,训练数据中所有的实体对(h,t)被聚类为多个组,可以认为每个组中的实体对都表达相似的关系。
    • 在进行聚类时,每个实体对(h,t)用它们的向量偏移(h - t)来表示,h, t可以用TransE方法获得。

验证器

  • 验证两个实体间的事实知识是否冲突。例如三元组(h, FatherOf, t)和三元组(t, FatherOf, h)所表达的事实知识就是冲突的。
  • 基于单真值(Single-truth Based)的验证方法
    • 适用于只有一个真值的情况,如上例。
    • 对于从一个数据源抽取的知识,我们为每个知识分配相应的置信度来衡量它的真实性。并使用一个预定义的阈值来过滤那些具有低置信度的知识。置信度记作θ(h, r , t ),三元组(h, r, t)表示一个知识(真实性由置信度来衡量)。
    • θ有两种计算方法:
      • 用共现度来定义,PMI主要可以用来衡量两个词之间的关联度(word association)。
      • 尚未确定。
  • 基于多真值(Multi-truth Based)的验证方法
    • 适用于有多个真值的情况,即一个事实的不同粒度表示。如(A, Birth_place, China)和(A, Birth_place, Beijing)(理解方式不对, 应理解为保持两个实体不变,颠倒主体(Subject)和客体(Object)的顺序)
    • 两个实体间可以存在多个三元组,且表示同一事实。例如,三元组(h, FriendOf, t)和三元组(t, FriendOf, h)表示的是同一事实。

使用迁移学习(one-shot learning)来扩充初始知识图谱

利用首部小样本数据联合学习尾部实体和关系

  • 尾部实体/关系的实例非常少。
  • 利用尾部实体/关系与首部实体/关系间的上下文相似性,提出一个多分类逻辑回归模型来学习更多的尾部实体/关系实例。
  • 不同的实体/关系实例之间共享一些词法和语法结构,因此可以认为一些首部实体/关系可以转换为尾部实体/关系。(How?)
  • 可以用首部实体/关系的实例作为训练数据来学习尾部实体/关系。解决了尾部实体/关系实例较少的问题。

尾部实体学习

  • 实体抽取可看作是一个分类问题。
  • Te是具有少量实例的尾部实体集合,He是头部实体集合。
  • 要训练一个Te的实体抽取器,语法模式(Syntatic Pattern)被表示为为权重向量。权重向量可用来分离首部/尾部实体中的正负实例。

尾部关系学习

  • 关系抽取可看作是一个分类问题。
  • 不同的关系之间共享一些共同的语法和词法结构。
  • 因此,不同关系的分类问题视为相关联的任务, 故可以使用多任务迁移学习(Multi-task Transfer Learning)技术来进行关系抽取

联合优化

  • 由于实体和关系是高度相关联的,所以将上述分离的实体抽取模型和关系抽取模型融合起来,会使得整体效果各到进一步的提升。

实验部分(build a KG in a coarse-to-fine manner)

用两个不同领域的数据集来进行实验

  • 先只进行第一步操作,得到一个粗糙的(coarse)知识图谱,并对其性能进行评估。
  • 再施加第二部操作,精化(refine)知识图谱并重新评估性能与第一步的结果进行比较。

你可能感兴趣的:(Building Your Own Knowledge Graph from Scratch: A Two-Step Approach)