一、智慧搜索
搜索引擎如谷歌、百度等成了人们访问互联网离不开的助手。遗憾的是,尽管用户每天在使用搜索引擎,但是对搜索的抱怨也总是不断。因为每次搜索的结果,有“精华”也有“糟粕”,有自己所要的信息也有和自己目标完全无关的东西。
例如,我们查询“长城”,本意是查询着名的万里长城,结果如图1所示。
这里,出现了诸如“长城集团”“长城电脑”和“长城中文学校”等信息,其实,这都不是用户想要的。而用户真正想要的是关于万里长城以及更丰富的相关信息,诸如:长城是何时建的,是否列入世界七大奇迹,其他名列世界七大奇迹的是哪些?等等。这些,搜索结果里却看不到。如何解决这个问题,是一个大挑战。
问题的核心是,目前的搜索系统忽视了用户请求的语义,也忽视了搜索对象-网络文档的语义。搜索系统只是按照文档中是否有要查询的词汇(如“长城”)去搜索互联网,而不管这个词汇的语义。其实,“长城”一词可以表示我国伟大的古代建筑“万里长城”,可以是一个汽车厂商的名字,一所学校的名字,一个IT企业(长城计算机公司)的名字,也可以是一个商标。
简言之,它可以描述一个建筑物,属于概念“建筑”;可以是某个企业的名字,属于概念“企业”;也可以是一个商标,属于概念“商标”.
一个智慧搜索系统要能够理解用户请求所代表的含义,进一步,能自动区分其语义并按此语义以及用户需求的语义实施搜索。这就是智慧搜索的任务。
更进一步,不同于传统的数据库查询,网络搜索的一个特点是,用户往往一下子不能完全表达自己的需求,而是通过和搜索引擎的多次交互、逐步逼近(通过询问,用户察看返回结果,然后重新构造询问,搜索引擎返回搜索结果……这样,多次交互),才能基本达到用户请求的目标。结果,效率很低。假如,搜索系统能够在用户第一次提出查询请求时,就通过大数据分析洞察其含义,对查询表达式自动做语义扩展,一次中的,就可大大提高效率,减轻用户负担。
同时,在缺乏语义支持的情况下,大家公认的关于搜索性能的2个核心考核指标,查准率和查全率,目前的搜索系统也并不令人满意。
以查全率为例,举例来说,用户查询“政治局”,目前的搜索引擎返回的是含有这个词的网页的URI.那么,一个网页中没有这个词,但却有具体的政治局委员、常委成员的信息,这类的网页都会被目前搜索引擎所忽略。例如,如果一个网页中没出现“政治局”这个词,但它报道的内容却是上海市委书记韩正的活动。按用户的本义,搜索引擎也应当返回其对应的URI,因为上海市委书记韩正是政治局委员,这类网页的信息也是用户需要的。一个支持语义查询的智慧搜索应当有这个功能。为了解决这个问题,需要大数据分析的支持。
为了便于分析,将一个搜索引擎的基本结构图示如图2.
如图2,用户的搜索请求以查询表达式(QueryExpression)形式出现。从现有使用规律的统计数据看,搜索请求表达式里包含的词汇一般在2、3个词之内,大多数用户使用的是一个词(如“长城”)。词汇之间可用逻辑算子(如“与”“或”)关联,如“长城∧中国”.
搜索引擎的用户接口系统(Query Interface)接收到用户的查询表达式后会转交给搜索引擎内核(SearchEngine Kernel),搜索引擎内核先查阅本地文档索引,发现后将和该词汇的索引关联的文档交给排序模块,排序后返回给用户接口系统。其中,爬虫系统(Spider)不停地从网上抓取网页,存入本地文档库(Corpus),同时自动提取索引(Index),写入索引系统。
2011年起,在上海市科委的支持下,华东师范大学计算机应用研究所着手研制开发一个基于大数据分析的智慧搜索引擎,名为SmartSearch.其第一个用户是上海电信旗下的门户网-上海热线(图3是其用户界面)。
如图3,SmartSeach的搜索输入框下,有可选的三个搜索元:Google、Bing和Nutch.它们可区分为元搜索与直接搜索两种。利用现有搜索引擎(如Google、Bing)做初始搜索,然后进行加工处理的搜索方式,学术上称为元搜索(meta search)。这里,搜索元Google和Bing表示相应的元搜索-谷歌搜索与微软搜索;而Nutch指的是SmartSeach自身的直接搜索,如此取名是因为SmartSeach采用开源软件Nutch实现网络数据抓取。
SmartSearch允许用户单独使用元搜索、直接搜索或两者结合的混合搜索来获取数据。
为了解决语义缺失问题,SmartSearch首先要分析用户请求的词属于哪个概念,如“长城”属于建筑、企业名称还是商标;再如,“病毒(Virus)”是属于医学概念还是信息概念,要达到这个目标就需要大数据的支持。
简言之,通过大数据分析,系统自动将用户请求的词汇,绑定到相应概念上去。我们用映射1和2来表示:
这里涉及的大数据包括历来的用户请求与返回结果的满意度、用户使用的历史数据(即Cookie数据)和用户的行为特征等。
SmartSearch的用户接口提供的智能功能包括:
1.将一个查询词汇绑定到一个特定概念或对象,例如,提供一个查询接口:
Great Wall & <Concept>
Great Wall & <Object>
<Concept>表示一个特定的概念,例如“建筑”;<Object>指的是一个特定对象。基于大数据分析与知识推理,这种绑定可以自动实现。即用户提交查询“长城”,搜索系统通过大数据分析,自动将之扩展为“长城& 建筑物”.这样实施查询,就可以获得满意的结果。