• reading notes -- A Report from the Trenches


    Building, Maintaining, and Using Knowledge Bases: A Report from the Trenches

     ABSTRACT

    一个知识库(KB) 是一个集合,包含有概念,实例和关系。
    论文中描述了一个工业级使用的知识库,从建立维护到使用的全过程。尤其是建立,更新和组织一个大型的知识库,以及其大量的应用。
     
    一、INTRODUCTION
    知识库及知识图谱的应用大概有:DBLP, Google Scholar, Internet Movie Database, YAGO, DBpedia, Wolfram Alpha, and Freebase.
     
    二、PRELIMINARIES
        典型的知识库包括一个概念的集合,C1,C2,C3,一个实例集合Ii for 每个Ci,和一个关系集合,Ri表达概念之间的关系。
    这里构建了一个树状的结构的分类法来表达概念之间的关系,而且这里尤其要强调一种抽取出来的关系,“是一个”,这是一种属于关系,孩子节点属于其父节点。非父子几点之间也许还有其他关系。如图1 。有些知识库父节点包含的实例全都属于子节点,但是这这里没有这个要求,而且更特别的是
     
    Domain-Specific KBs vs. Global KBs:
    domain-specific KB:特定领域 DBLP, Google Scholar, DBLife, echonest
    global KB:涵盖全世界 Freebase, Google’s knowledge graph, YAGO, DBpedia, and the collection of Wikipedia infoboxes.
    虽然global KB 很重要,但是Domain-specific KB 同样很重要,在某些特定领域尤其重要。
     
    Ontology-like KBs vs. Source-Specific KBs:
    Ontology-like KB:举例来说,他可以指向特定领域,但是不是这个领域的全域,而是重要区域内的全部。问题在于如何获得某一实体的全部信息。
    Source-Specific KB:包含某一区域的全部。重要是组织各种信息的问题。
    由以上两点可以看出,结合两种情况的缺点可以互补,如果基于olkb构建sskb那情况就容易了。
     
    这里将构建global,ontology-like KB:
    三、BUILDING THE KNOWLEDGE BASE
    converting Wikipedia into a KB:
    (1)      基于wikipedia构造分类树。
    • 爬取wiki,建立本地镜像很有必要
    • 构建wiki图
    这里有两种主要的wiki页面:文章页面(代表instance)和分类页面(代表concept)
     
     
    由此,这里构造的图,节点代表一个分类或实例,节点之间的边代表了一个wiki的连接,可以是父类到子类,也可以是concept到instance。
     
    理想情况下,文章和分类最好来自一个分类法 ,但是实际情况恰恰相反。产生的图是一个环,如下图:
     
     
    另外一个问题如上图,wiki天然的分类不是非常的如我们所需,杂质多,相对有用的分类深度就打了,这里将root下的高层次分类手动定义,这样不仅清晰了分类,而且压缩了有意义的分类到跟节点的距离。
    • 构造分类树
    由上面的第一个问题,现在要解决的就是如何从wiki的有向的环图中构造出分类树了。利用现有算法Edmonds’ algorithm(Tarjan,利用权重裁剪边)。具体步骤见论文。
    (2)      在分类之上构造DAG。
    这里是图 而不是树,因为从根节点到子节点可能有不止一条路径,所以这里处理就会比较复杂,首先要提取出一颗主分类树,同时保留子路径(利用权重区分)。具体就是对原wiki图进行dfs,一遍一遍遍历,直到结束这样可以破除环,但是保留了不同路径。
    (3)      由wikipedia抽取关系。
    示例,<name of concept instance 1, name of concept instance 2, some text indicating a relationship between them>.
    (4)      加入元数据。
    主要定义模糊概念节点的定义,和met元数据的定义
    (5)      加入其他数据。
    添加外部数据涉及到实例和关系
    首先添加关系,然后添加实例,(实例名,分类),先匹配名,再匹配分类,根据不同的情况进行添加实例操作,添加元数据操作,或不做操作。
    四、MAINTAINING THE KNOWLEDGE BASE
    1) Updating the Knowledge Base
    1.重新抓取,因为之前定义的破环操作,所以之后重新抓取,就应该继续围绕这个规则
    2.只更新update file
    2)Curating the Knowledge Base
    1.Evaluating the Quality: 人工抽样     随机路径,和随机节点
    2.Curating by Writing Commands: 人工干预对KB的操作     
    *Adding/deleting nodes and edges:
    *Changing edge weights:
    *Changing the assignment of an instance-of or an is-a relationship:
    *Recommending an ancestor to a node:
    *Assigning preference to a subtree in the graph:
    3.Managing Commands:
    因为有更新问题,抓取之后,会有人力的编辑行为,但是当更新时,新加的内容和编辑内容冲突时,要做回滚策略。如果把kb动态改变,必须要将操作集成为命令,利于持续更新和回滚。这一点非常重要。
    五、USING THE KNOWLEDGE BASE
    query understanding, Deep Web search, in-context advertising, event monitoring in social media, product search, social gifting, and social mining.
     
    个人总结:
    对于domain-specific KB,从构建来说,数据源会有很多但是会比较固定,数据结构化明显,抽象关系不多,多数会为具体关系。首先从一个数据源入手,加入自己数据的独立id,其他信息以meta形式加入数据库字段。然后再爬取不同的数据源,进行实例的扩充和字段的扩充。
    从维持来说,数据源的更新分手动和自动,但是其中最需要注意到问题就是手动管理的地方要封装成任务,定义编辑策略,这样应对程序性的更新和人力更新发生冲突,支持回滚和批量任务。
    domain-specific KB对于个性化推荐和学习型算法非常重要。
    global KB是个海洋,而真正能滋养的应该是浅滩,domain-specific KB 就是浅滩。
  • 相关阅读:
    结合自己造的轮子实践按需加载
    清风不知道--项目需求分析
    2020软件工程作业——团队03
    2020软件工程作业——团队02
    清风不知道——团队展示
    Java注解
    Java反射机制
    浅谈Vector
    浅谈LinkedList
    在IDEA中搭建Java源码学习环境并上传到GitHub上
  • 原文地址:https://www.cnblogs.com/lance-/p/3915099.html
Copyright © 2020-2023  润新知