摘要:如何将分散在互联网各个角落中的数据汇聚到统一的海量知识库中,一些还不完善的思考。
1.理想态的知识库
我们要构建的一个理想态的知识库,是一个统一的,能够包含所有已知领域的大库,每个实体都有一个唯一的id,实体与实体之间通过id进行了关联。例如:
- 张学友,知识库中人物领域的一个实体
- 东成西就,电影领域的一个实体
- 雪狼湖,音乐剧领域的一个实体
- 一路上有你,音乐领域的一个实体
- 香港,城市库的一个实体
- 罗美薇/张瑶华/张瑶萱,人物库的另外几个实体
- 我只想唱歌(张学友2016演唱会),演唱会领域的一个实体
这些实体分属不同的领域,但可以通过某种形式建立起关联关系。直观的概念可以浏览该页面:
https://www.wikidata.org/wiki/Q16781
统一知识库的优势:
- 各种交叉领域实体的关联关系都会有所体现,而不是各个领域被割裂开来,不割裂就意味着数据可以共享,内容无需重复建设,无需为不同的应用维护不同的数据版本;
- 结合自然语言处理技术,针对长文本,基于词典的中文分词/词性标注标注等,完全可以把知识库中作为一个更高级的词典库,从普通文本中挖掘新实体,甚至是实体关系,为下一步大规模的机器语义挖掘做准备;
- 结合自然语言处理技术,可以理解用户在搜索时输入的关键词组或短句,哪个词是实体,哪个词是实体属性,这个query的准确含义是什么,这个query的其他表达方式是什么等;
- 可以实现更多维度的相关性推荐策略;
统一知识库的劣势,如果基础的存储框架没搭起来,要做的事情就会较多,建设周期较长,对于某些要快速响应的产品应用,可能无法快速支持;最好能圈定能支持的产品边界,例如Google在搜索结果中展示的知识图谱形式。
2.知识库的数据来源 – 站点数据
构建统一知识库所需要的数据散落在每一个站点的每一个网页中,搜索引擎需要通过一些特定的方式去获取到这些数据:
a. 利用爬虫下载网页/sitemap/rss/atom/,再通过对结构化网页的解析,获得该网站的结构化数据。
b. 和网站建立生态互惠关系,允许站点资源方直接向知识库提交数据;
某些网站已经包含了不同实体之间,例如豆瓣电影,电影-导演-演员的关系已经有了,但这个实体关系是基于豆瓣url的,要进入知识库,这种url就需要转换成知识库的实体id系统。
有些则没有包含这种实体关联关系,例如,豆瓣图书和作者,就没有通过url建立关系。在向知识库提交时就需要考虑创建这样的实体关系。
3.领域数据集
事实上,针对某一个领域的知识库建设,数据源往往不止一个站点。例如,
- 一本图书, 当当、亚马逊、京东、豆瓣都有, 每个电商网站是否有货,价格高低,针对书评,用户可能更新来豆瓣这样的社区站点等;
- 一个电视剧,优酷、土豆、爱奇艺、乐视等,有的能播放,有的不能播放;
- 一个艺人,豆瓣有详情页,百科有词条,艺人自己有微博账号、粉丝网站、社交群组等。
为了追求完整性,需要将不同站点的数据进行融合,融合的思路,可以是分批次的向统一知识库中融合,也可以先将该领域的数据源全部融合后再汇入到知识库中。
经过融合、消重后的知识库,信息全面又不冗余。对于用户体验来说,在一个展示页面中就能找到自己关心的内容,无需再额外打开多余的页面。想必是极好的~