本文转载自公众号知识工场。
本文整理自复旦大学知识工场梁家卿博士在IJCAI 2017 会议上的论文报告,题目为《How to Keep a Knowledge Base Synchronized with Its Encyclopedia Source》,作者包括:梁家卿博士(复旦大学,上海数眼科技发展有限公司),张圣硕士(复旦大学),肖仰华教授(复旦大学,上海互联网大数据工程技术研究中心,小i机器人)
IJCAI(International Joint Conference on Artificial Intelligence,国际人工智能联合会议)是人工智能领域最顶级的学术会议之一,被中国计算机学会推荐国际学术会议列表认定为 A 类会议。该会议聚集了人工智能领域最顶尖的研究者和优秀从业者,关注研讨领域涵盖机器学习、计算可持续性、图像识别、语音技术、视频技术等,对全球人工智能行业具有巨大影响力。8月19日-8月25日,IJCAI 2017在澳大利亚墨尔本正式开启。
梁家卿:大家下午好,我的这篇文章主要讲的是如何让百科知识库和它对应的百科数据源保持同步更新。
大家都知道,知识库在很多应用中都担任着非常重要的角色。有些知识库使用百科类网站(如:维基百科)作为数据源,像DBpedia、Freebase,CN-DBpedia等。由于百科类网站的质量都很高,所以在此基础上构建的百科知识图谱质量也很高。
知识库中的知识并不是一成不变的,很多事实都会发生变化。例如,美国总统从奥巴马变成了特朗普;特朗普的职业从商人变成了总统。这样一来,知识图谱的更新就显得非常重要。如果不知道特朗普是总统,机器在阅读最新文章时,可能只会把他认为是一个普通商人发表的政治意见。还有很多新词,比如说iPhone8,你将永远不知道它是什么。
我们都知道,很多数据源(维基百科)一直是志愿者在更新的,那么我们只需要将知识库与维基百科进行同步即可。这里的关键问题在于,如何保持知识库与在线百科网站的同步更新呢?
目前传统有两种方法来进行知识库与在线百科的同步,第一种方法是下载最新的网站Dump数据,但是这个方法要求我们下载GB级的数据,然后每个周期都会生成新的Dump数据,不仅如此,还有许多的百科类网站是不会提供Dump数据的。第二个方法是爬网站,但是这个方法的工作量太大了,有太多的网页需要爬,而且还会有很多网站会封锁我们的爬虫。
知识库的更新固然重要,但也不是说库中的每个实体都需要更新,因为大多数实体都具有稳定的性质,它的关系很少会发生变化,例如,“橙子”,这是一个基本概念;“牛顿”,这是一个不会改变的历史人物。
我们真正需要更新的是一些会发生改变的实体,像一些非常热门的实体就很有可能发生改变,比如特朗普。所以一个更好的策略就是先将实体区分为稳定实体和易变实体(比如:热门实体),然后把易变实体更新即可。现在有一个关键的问题,就是如何去估算百科网站中实体的更新频率?
我们将这套策略用在了CN-DBpedia知识库中。CN-DBpedia是一个以百度百科作为数据源构建的中文百科知识库。为了解决上述的这个问题,我们在CN-DBpedia上建立了一个系统,这个系统每天只需要更新很少的热门实体即可。
接下来是具体实现细节。我们首先将这个问题定义为一个最大化问题,选择最需要更新的K个实体。一个实体是否需要更新就看在线百科网站上实体的最近更新时间是否晚于我们知识库中的上一次同步时间。
为什么要设置K值呢?这主要是由于获取资源的能力是有限的,并且很多网站也有访问次数限制。所以我们设置了每天能访问的实体次数上限K。
现在,假设我们可以预测每个实体的更新频率,那么将如何找到这些待更新的K个实体呢?
一个基本方法是对每个数据库中的实体都预测它的更新频率,然后取最大的K个。但这种做法太耗时了,并且只能对已有的数据进行更新,无法更新新词。
一个改进的方法是对互联网上的热词进行监控。因为我们认为,一个实体之所以变成热词,会有两个原因。一个是新词,比如即将发布的iPhone8。另一个是旧词,但知识发生了变化,比如说特朗普变成美国总统了。
整体框架如下:首先监控热词获得种子实体,然后同步这些种子实体。接下来通过实体的相关实体来扩展得到更多的待更新实体,最后根据这些待更新实体的优先级来进行更新。
先来看种子发现和种子同步。
我们发现一个现象,如果一个实体突然频繁地出现在互联网上,关于它的知识很可能就会发生变化。因此,我们从互联网上搜集热门新闻,热门搜索关键字和热点话题,通过分词等方法,提取出其中的热门实体,然后加以同步。
但是,每天的热门话题数量太少,所以我们需要通过扩展的方式得到更多的待更新实体。
我们遵循的一个原则是:与最近更新的实体相关的实体更可能更新。例如,特朗普成为总统后,特朗普的妻子成为第一夫人。
我们做了一个实验来验证这一原则。
优先级设置的原则是这样的,如果是一个新词,那么优先级设置为最高,如果是一个旧词,估计其上一次更新结束到当前时间内可能更新的次数,将这个次数作为优先级的指标。指标为更新频率乘以更新间隔。
接下来,就是要估计每个实体的更新频率了。最开始,我们基于这样一个基本假设:实体更新频率遵循泊松分布。但后来实验发现,这个分布并不成立。
我们把这个问题看作是一个回归问题。选择了表中的8个特征,分别使用了线性回归和随机森林回归两种来估计更新频率。
最后,实验结果表明,我们提出的随机森林回归模型取得了最好的效果。
我们将系统部署到CN-DBpedia上,设置K值为1000。结果发现,68.7%的实体中的知识都发生了改变。
最后,我们再对本文进行一下简单的总结。
首先, 许多知识库都是使用百科网站作为数据源,但是这些知识库往往不能及时更新。每个都重新构建一遍代价巨大。
第二,我们提出了一个知识库更新系统,包含了一组有效的更新策略。
第三,我们将这套策略部署到了中文知识库CN-DBpedia中,提高了知识库的时效性。
最后,这个系统每天更新一千个实体,统计发现,其中70%的实体的知识确实发生了变化。
获取完整PPT
关注“知识工场”微信公众号,回复“20170819”获取下载链接。
以上就是梁家卿博士在IJCAI为大家带来的全部内容。知识工场实验室后续将为大家带来更精彩的文章,请大家关注。
OpenKG.CN
中文开放知识图谱(简称OpenKG.CN)旨在促进中文知识图谱数据的开放与互联,促进知识图谱和语义技术的普及和广泛应用。
点击阅读原文,进入 OpenKG 博客。