分享到微博 分享到人人 分享到LinkedIn 分享到Email
2016编程之美“凌云之智”分享系列干货第一波

2016编程之美挑战赛已进入复赛阶段,本次分享中,我们邀请到了微软学术搜索首席研发总监Albert及产品经理Summer,他们将为参加复赛的选手提点今年的复赛题目,并围绕微软学术搜索引擎原理数据库结构API进行介绍。

微软学术搜索基本功能介绍

我们先简单了解一下学术搜索这个产品,首先核心功能就是学术论文的搜索,除了基于必应大数据的资源和研究院的算法支持,我们还和全球主流出版社均有合作。学科已经覆盖了15个大类和200多个子类,能够同时支持中英文的内容。

除此之外,微软学术搜索还有哪些特别的功能呢?大家来看一下知识卡片,它不仅能够展示领域知识,聚合相关主题,主要是为了帮助入门的用户迅速的了解一些基本知识,比如会议、期刊、学者的概况或者详情等等,此外语义搜索是微软学术的一个重大创新,日常生活中我们可能都有试过搜索不到内容的时候吧,不知道同学们喜不喜欢用高级搜索,个人感觉不论是使用检索语法或者交互界面使用成本都还是蛮高的。所以在这里我们引入了两种更为简洁的方式同时可以获得高级搜索的精准效果。第一是在得到搜索结果之前,我们可以通过下拉列表获得一个自动建议,只要从中筛选相应的内容就可以获得精确搜索结果。第二是在搜索结果返回之后了,同样是通过左边的这个筛选条件进行过滤,而这些选项的内容也会随着查询的内容的变化而变化,包括作者、领域、期刊等多个维度,都可以进行筛选。

什么是搜索引擎

我们通常想到的搜索引擎是像必应这种传统的搜索引擎。但事实上搜索技术在我们的生活和工作中是无处不在的,比如我们吃饭、买东西甚至读书看电影玩游戏也都需要搜索,不同的使用场景有不同的技术和产品的需求。既然搜索无处不在,那么搜索是怎么工作的呢?

因为刚刚提到了搜索的应用广泛,使用到的技术也花样繁多,那接下来我就用最传统的搜索场景也就是我们所说的“10 Blue Links”探讨一下搜索引擎是怎样工作的。首先要先用爬虫在互联网上尽可能多的抓取相关网页,针对相关网页进行处理、提取分析,然后尝试根据这些网页和他们之间的联系来尝试还原整个WEB GRAPH,当完成对这些文档的处理后,建立相应的索引库。也就是我们平时常说倒排表。刚才说的是网页的抓取和索引的过程,在另外一边,当用户进行搜索的时候我们首先要对用户的搜索词进行改写,包括分词、拼写检查,包括同义词补全,还会对搜索词打上相应标签,比方说隶属于哪一个类型,当搜索词被改写之后,我们就会对索引库里进行匹配,根据匹配的结果我们再进行一个动态排序会用到丰富的特征值。最后针对排序的结果根据用户使用习惯和一些特殊规则进行重排后返回到用户这。刚才说的是传统的网页搜索结果流程。

关于必应搜索

我们知道在全球有5个比较知名的搜索引擎,比如以谷歌和必应为代表的全球搜索,中国的百度,俄罗斯的Yandex 韩国的Naver。这三个搜索引擎在本土占有率比较高,在5个里面必应是全球唯一到处都能使用的搜索引擎,它不仅索引了德国的一些文档和网页,并且所有人都可以访问到。

除了全球化之外,我们基于微软研究院强大的科研能力,打造了机器学习为基础的排序算法,目前为止,搜索引擎排序算法主要有两种,一种是以谷歌为代表的统计方法的流派一种是必应为主的机器学习流派。近些年来,两者在不断融合,取长补短。除了优秀的排序算法以外,必应还有丰富的功能和界面,下面分享的是一个预测的模型,它成功的预测了奥斯卡奖和世界杯。我也跟做预测的同事们交流过,希望他们可以做一些实用的预测,比如像双色球之类的能满足用户实际需求的预测。除了必应以外,其它搜索引擎也在试图跳出传统网页搜索的限制,打造一个基于互联网的知识图谱,在知识图谱之上扩展语义搜索。

微软是怎么样在全球服务与广大用户的呢?微软在全球部署了很多数据中心,大家印象中的数据中心就是维护人员抱着笔记本在拥挤嘈杂的机房里面走来走去维护,在现代,这种方式过时了。微软芝加哥数据中心占地6.5万平方公里,在现代数据中心里面,机器不是传统的机架和嘈杂的环境,而是一个个的集装箱,工人把集装箱拉到数据中心插上电,集装箱里的机器就可以运转,一个集装箱里面大概有2k多台服务器,芝加哥数据中心有上百个这样的集装箱,管理这么庞大的集装箱集群是一个具有挑战性的任务。微软有一个自动化管理工具,这个工具会在这些服务器加电之后,自动部署相应功能,遇到相关服务器或服务出问题的时候自动尝试修复重启,甚至遇到硬件问题的话会把服务器从集群里拿掉。当一个集装箱里40%以上的服务器处于硬件损坏的时候,系统会给相关部门告警,工人会把这个集装箱拉走换一个集装箱进来。管理这么多的服务器,整个芝加哥数据中心包括保安在内只有45名员工。

关于微软学术搜索

与通用搜索引擎的区别

微软学术搜索有自己的特点,它是一个相对小的有限集合,有相对规范的文档和相对准确的学术实体的描述,根据这些特点可以构建一个相对完整的学术图谱,且只能用相应的API来访问。有了这么一个比较完善的知识图谱之后,我们就可以从传统的关键词检索发展到一个比较完善的语义搜索,这是学术搜索区别于传统搜索最大的一个特点。

除此之外,微软打造的学术搜索平台还是一个开放的平台,这个开放首先体现在平台实现数据和算法的共享。其次,它还在打造一个开放的社区,为大家提供一个学术交流的平台。

什么是学术图谱

微软学术搜索是一个构架在学术图谱上的一个用户体验,那我们是怎么来建立这个模型的呢?从我们的定义来看的话,它是一个六大实体的异构模型,具体的内容的话请大家参考研究院的一篇论文《an overview of microsoft academic service mas and applications》。在这篇论文当中提到了六大类的实体,最基础的论文,相关的研究领域、作者、机构、期刊和会议。我们的数据来源除了必应全球网页索引之外还有相应的权威的出版发行商提供的数据以及合作伙伴提供的数据。当我们有了这些数据之后,我们首先要做的事情就是从这些文档里面去解析,包括文本和语义。其次,根据解析出来的结果进行聚类和分类,然后再和我们已有的Web graph和Domain graph进行合并,最后进行数据的整理和消歧,打造出一个相对比较完善的学术知识谱图。

学术搜索的整体架构

我们对于前面web搜索方式进行一个讲解,首先我们从互联网以及出版商那拿到相关的内容和文档,然后对语言数据进行抽取,接着再进行合并和消歧等整理,最后通过我们的数据发布平台发布到MAG(Microsoft Academic Graph)数据库里。目前这个数据库是存放在Azure的云平台里面的,大家都可以使用API访问。我们会对用户输入的关键搜索词进行语义上的分析,在打上相应的标签后放到这个图里面去查询。与之前的网页搜索不同的是,我们不是在一个网页的倒排表里查询,而是在一个图谱里面进行一个搜索和编立。如果搜索出来的结果是多个,会在相应的排序后根据图谱以及相应的结果进行可视化的展示。

学术图谱API使用方法

知识图谱是学术搜索系统最复杂的一部分,我们称作data conflation and data disambiguition。数据和图谱是微软学术搜索最基础的工作,占据了项目组大部分的时间。因为访问到的图谱较大,所以组合条件的遍历会提高效率,我们在后台是Bing定制的高速big table查询,所以可以支持复杂的组合条件。

首先会有一个Interpreter的接口是对搜索词进行语义上的结果并返回标注的结果,其次会根据搜索词相关的实际信息有一个evaluate的过程,它返回的结果是刚才这几类实体的索引的id,最后可以利用这些实体的id调用histogram接口返回相关实体的属性。通过这三组api的调用我们最后可以得到一个或多个实体,请大家注意我们可以拿到由多个实体进行限制的条件,大家以后进行知识图谱的遍历需要灵活运用这个技能。除此之外,大家还要注意其中有Query Expression Syntax的语法以及Entity Attribute各属性的说明文档,请大家仔细阅读。大家可以多通过编程来进行一些实验,深入的理解这些api的能力。大家可以看到,每一个实体都有各种各样的相应的属性,我们找到相关的属性,进行先一个实体的查询的时候又可以得到围绕下一个实体的更多属性,当这件事情重复进行下去时候就可以便利整个学术图谱。

温馨提示

比赛中大家可以通过API访问整个MAG,有大约100,000,000的论文,数据量非常大,因此在计算两个节点之间的路径时需要灵活的设计算法。我们为这次大赛申请了很高的QPS on Azure,在调用API的时候会比较稳定希望满足大家的使用。由于系统中已经有了对MAG的遍历API,我们需要做的是吃透API和搜索条件,然后合理利用API高效遍历MAG和格式化结果。至于对于测试时数据的格式以及返回的数据格式的定义,大家可以查看syntax文档。