reading notes -- A Report from the Trenches

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

 ABSTRACT算法

一个知识库(KB) 是一个集合,包含有概念,实例和关系。
论文中描述了一个工业级使用的知识库,从创建维护到使用的全过程。尤为是创建,更新和组织一个大型的知识库,以及其大量的应用。
 
1、INTRODUCTION
知识库及知识图谱的应用大概有:DBLP, Google Scholar, Internet Movie Database, YAGO, DBpedia, Wolfram Alpha, and Freebase.
 
2、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:
3、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)      加入其余数据。
添加外部数据涉及到实例和关系
首先添加关系,而后添加实例,(实例名,分类),先匹配名,再匹配分类,根据不一样的状况进行添加实例操做,添加元数据操做,或不作操做。
4、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动态改变,必需要将操做集成为命令,利于持续更新和回滚。这一点很是重要。
5、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 就是浅滩。