首页 > 代码库 > reading notes -- A Report from the Trenches
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 就是浅滩。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。