导航菜单

基于大数据分析的智能搜索引擎

顾君忠1 陈民2

(1 华东师范大学计算机应用研究所上海 200062)

(2 上海市浦东新区国民经济和社会信息化推进中心 上海 201206)

摘 要:目前的网络搜索系统由于缺乏语义支持而饱受诟病。要解决这个问题,需要大数据分析的支持。本文讨论了基于大数据分析的搜索引擎问题。以笔者设计开发的智慧搜索引擎SmartSearch 为例,阐述了如何借助于大数据分析、借助于语义扩展和本体支持,有效实现智慧搜索的设计思想。对满足用户智慧搜索的搜索系统的总体架构、模块设计和接口设计进行深入分析与讨论。实践表明,借助于大数据分析,可以有效实现智慧搜索。教育期刊网 http://www.jyqkw.com
关键词 :搜索引擎,大数据,大数据分析,智慧搜索,本体

一、智慧搜索

搜索引擎如谷歌、百度等成了人们访问互联网离不开的助手。遗憾的是,尽管用户每天在使用搜索引擎,但是对搜索的抱怨也总是不断。因为每次搜索的结果,有“精华”也有“糟粕”,有自己所要的信息也有和自己目标完全无关的东西。

例如,我们查询“长城”,本意是查询著名的万里长城,结果如图1所示。

这里,出现了诸如“长城集团”“长城电脑”和“长城中文学校”等信息,其实,这都不是用户想要的。而用户真正想要的是关于万里长城以及更丰富的相关信息,诸如:长城是何时建的,是否列入世界七大奇迹,其他名列世界七大奇迹的是哪些?等等。这些,搜索结果里却看不到。

如何解决这个问题,是一个大挑战。

问题的核心是,目前的搜索系统忽视了用户请求的语义,也忽视了搜索对象—网络文档的语义。搜索系统只是按照文档中是否有要查询的词汇(如“长城”)去搜索互联网,而不管这个词汇的语义。其实,“长城”一词可以表示我国伟大的古代建筑“万里长城”,可以是一个汽车厂商的名字,一所学校的名字,一个IT企业(长城计算机公司)的名字,也可以是一个商标。简言之,它可以描述一个建筑物,属于概念“建筑”;可以是某个企业的名字,属于概念“企业”;也可以是一个商标,属于概念“商标”。

一个智慧搜索系统要能够理解用户请求所代表的含义,进一步,能自动区分其语义并按此语义以及用户需求的语义实施搜索。这就是智慧搜索的任务。

更进一步,不同于传统的数据库查询,网络搜索的一个特点是,用户往往一下子不能完全表达自己的需求,而是通过和搜索引擎的多次交互、逐步逼近(通过询问,用户察看返回结果,然后重新构造询问,搜索引擎返回搜索结果……这样,多次交互),才能基本达到用户请求的目标。结果,效率很低。假如,搜索系统能够在用户第一次提出查询请求时,就通过大数据分析洞察其含义,对查询表达式自动做语义扩展,一次中的,就可大大提高效率,减轻用户负担。

同时,在缺乏语义支持的情况下,大家公认的关于搜索性能的2个核心考核指标,查准率和查全率,目前的搜索系统也并不令人满意。

以查全率为例,举例来说,用户查询“政治局”,目前的搜索引擎返回的是含有这个词的网页的URI。那么,一个网页中没有这个词,但却有具体的政治局委员、常委成员的信息,这类的网页都会被目前搜索引擎所忽略。例如,如果一个网页中没出现“政治局”这个词,但它报道的内容却是上海市委书记韩正的活动。按用户的本义,搜索引擎也应当返回其对应的URI,因为上海市委书记韩正是政治局委员,这类网页的信息也是用户需要的。一个支持语义查询的智慧搜索应当有这个功能。为了解决这个问题,需要大数据分析的支持。

为了便于分析,将一个搜索引擎的基本结构图示如图2。

如图2,用户的搜索请求以查询表达式(Quer yExpression)形式出现。从现有使用规律的统计数据看,搜索请求表达式里包含的词汇一般在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来表示:

1(query term) = concept

一个概念中,有时会有多个对象和该词汇关联,因此,更进一步,可以绑定到相关对象上去。

2(concept) = object

这里涉及的大数据包括历来的用户请求与返回结果的满意度、用户使用的历史数据(即Cookie数据)和用户的行为特征等。

SmartSearch的用户接口提供的智能功能包括:

1.将一个查询词汇绑定到一个特定概念或对象,例如,提供一个查询接口:

Great Wall & <Concept>

Great Wall & <Object>

<Concept>表示一个特定的概念,例如“建筑”;<Object>指的是一个特定对象。基于大数据分析与知识推理,这种绑定可以自动实现。即用户提交查询“长城”,搜索系统通过大数据分析,自动将之扩展为“长城& 建筑物”。这样实施查询,就可以获得满意的结果。

2.相关性和关系搜索

上面查询“长城”的结果是关于万里长城的信息,但是用户往往觉得仍未解渴。他们希望还知道:万里长城属于世界7大奇迹,类似的其他6个奇迹的信息是哪些?具体说,相比于获得简单的个体信息,用户往往更青睐于相关性搜索和关系搜索结果。

例如,用户会试图查询两个对象间的关系信息,如:

找出与一个对象相关的某个对象:

<YAO Ming, father-of, ?>

这个查询意味,搜索与姚明(YAO Ming)有父子/女关系的对象的信息。再如,<YAO Ming, YE Li, ?REL>

这个查询是查询有关姚明与叶莉(YE Li)关系的信息。

3.样例查询,即Query by Example

样例查询是用户十分乐见的一个接口。习惯上,用户往往便于用一个样例来说明自己的需求。例如,用户希望获悉和奥巴马在美国的地位相仿的俄罗斯籍人士的信息,可使用查询:

<Obama, USA>, <?, Russia>

在SmartSearch中类似查询的结果如图4所示。

俄罗斯总统的信息以关系图的形式返回给用户,如图4右部所示。

二、大数据分析与智慧搜索

显然,智慧搜索大大优于目前的搜索。要实现智慧搜索,需要大量的知识,如:

● 用户究竟需要知道什么?

● 网络上查到的文章告诉我们什么?

● 文章对某个对象的观点是褒义的还是贬义的?

● 能否用几行字把文章的摘要告诉我?

● 除了文章所告知的内容,相关的信息还有哪些?

……

这些知识的获得就涉及大数据和大数据分析问题。其实,这里涉及几方面的问题,一是如何通过大数据分析获悉用户的真实需求;二是通过大数据分析获悉网络上文档的语义和内涵;还有,通过查询的语义扩展自动将用户希望得到的信息延伸扩展和知识化处理。

要知道用户输入的请求,如这里的“长城”,究竟是意味着一个著名建筑物“万里长城”,还是长城汽车、长城计算机公司或长城马拉松,搜索系统需要分析:

1) 绝大多数用户以往查询的历史数据

2) 该用户查询历史

3) 该用户的使用习惯

4) 该用户请求的上下文(即用户刚才问了什么?)

等等。

这种分析,涉及到分析海量日志(Log)数据、用户上网Cookie数据、用户的行为特征,等等,其分析问题是典型的大数据分析问题。同时,要实现如图4所示的关联查询,从互联网自动分析出和奥巴马在美国的关系相仿的俄罗斯人士及其信息,需要关联分析,需要大数据分析技术。

图5是基于SmartSearch搜索“王菲”,通过大数据分析而得到的结果。

在SmartSearch的搜索中,会自动将用户输入的查询词“王菲”绑定为概念“人”,接着绑定为“演艺人士”、“歌手”。如图所示,网上同样还有一位“王菲”,其身份为广元市代市长。借助于日志和行为分析,系统判定用户关心的是歌手王菲,因此返回关于歌手王菲的相关信息。有了大数据支持,返回的还有分析而得的和王菲关联的人士情况,如页面右部所示(点击放大后如图6所示)。

通过大数据分析还可以对文档自动摘要,甚至可以将搜索到的所有文档内容做个总结。图7展示点击第一条信息的Summary后系统自动给出该文档的摘要。如需所有文档的总结,只需点击页面中的WholeSummary即可。

可见,在大数据分析支持下,智慧搜索可以展现强大的功能。

在SmartSearch中在几个方面使用了大数据分析技术:

1) 大数据分析确认用户请求表达的真实意愿

2) 大数据分析获取网络文档的语义信息

3) 将用户请求的语义信息和网络文档的语义信息准确比对

4) 将比对后选出的候选文档实现语义扩展和延伸搜索

5) 将结果文档合理排序

要从一位用户输入的查询词上获悉其确切的语义需求,需要对海量的用户历史查询请求进行挖掘和分析,弄清用户输入请求,获得结果,然后重新构建查询,获得结果……一直到用户停止重新构建查询为止。停止重新构建查询表示,用户对结果满意了。初始查询的真实含义就是最后查询表示含义,搜索系统通过分析就可以把最后查询认可为用户的需求。这样,借助于历史数据分析,智慧搜索系统可以获知用户的行为特征,其对词汇感兴趣的的对应概念,从而用户只要一次输入查询,就由系统自动按对应概念去搜索,效率提高,用户方便。

举例来说,第一次用户输入“长城”,搜索系统返回的结果如图1,用户不满意。从而用户重新构建查询:“长城∧建筑物”。搜索结果,用户满意,从而停止重构查询。这样,系统可以根据用户搜索的历史行为大数据(如Cookie数据),在用户第一次给出查询请求“长城”时,直接通过分析知道,用户的要求是查询作为建筑物的长城,从而返回建筑物长城的信息。无需用户不断重构查询,大数据分析的优势就展示出来了。限于篇幅,细节另文介绍。

三、智慧搜索的实现

为了基于大数据分析实现前面要求的功能,必须扩展传统的搜索引擎。要扩展用户接口系统,必须增加分析推理机制。图8是智能扩展的示意。

1) 大数据分析确认用户请求表达的真实意愿

2) 大数据分析获取网络文档的语义信息

3) 将用户请求的语义信息和网络文档的语义信息准确比对

4) 将比对后选出的候选文档实现语义扩展和延伸搜索

5) 将结果文档合理排序

要从一位用户输入的查询词上获悉其确切的语义需求,需要对海量的用户历史查询请求进行挖掘和分析,弄清用户输入请求,获得结果,然后重新构建查询,获得结果……一直到用户停止重新构建查询为止。停止重新构建查询表示,用户对结果满意了。初始查询的真实含义就是最后查询表示含义,搜索系统通过分析就可以把最后查询认可为用户的需求。这样,借助于历史数据分析,智慧搜索系统可以获知用户的行为特征,其对词汇感兴趣的的对应概念,从而用户只要一次输入查询,就由系统自动按对应概念去搜索,效率提高,用户方便。

举例来说,第一次用户输入“长城”,搜索系统返回的结果如图1,用户不满意。从而用户重新构建查询:“长城∧建筑物”。搜索结果,用户满意,从而停止重构查询。这样,系统可以根据用户搜索的历史行为大数据(如Cookie数据),在用户第一次给出查询请求“长城”时,直接通过分析知道,用户的要求是查询作为建筑物的长城,从而返回建筑物长城的信息。无需用户不断重构查询,大数据分析的优势就展示出来了。

限于篇幅,细节另文介绍。

三、智慧搜索的实现

为了基于大数据分析实现前面要求的功能,必须扩展传统的搜索引擎。要扩展用户接口系统,必须增加分析推理机制。图8是智能扩展的示意。

这里,在搜索引擎上扩展了几个核心成分:语义扩展的查询接口(Semantics extended QueryInterface),语义支持系统(Semantics SupportSystem),推理系统(Inference System)和本体系统(Ontology System)。

● 语义扩展的查询接口用于分析用户请求,确定用户请求的语义,绑定到确定的概念或对象。

● 语义支持系统是一个基础语义处理模块,为语义分析做支持。

● 推理系统是一个推理引擎,为语义分析和知识处理服务。

● 本体系统用于知识表示和处理。知识可以用本体来描述,本体由本体系统来管理。本体可以用一个有向图(DAG)来描述。节点表示概念,有向弧表示概念间的关系,如男人和女人可以描述为两个概念,他们间的关系-夫妻,可以用这两个节点间的(双向)有向弧描述。知识库(KB)存储用户可能感兴趣的概念和概念/对象间的关系。这里,知识被分为静态知识和动态知识。静态知识指的是直接存放在知识库里的知识,动态知识指的是从互联网上直接挖掘的知识,挖掘来的知识接下去就保存在知识库里,变成静态知识。

SmartSearch在开源系统Hadoop上实现。为了实现有效的数据管理,使用了分布文件系统(HDFS)和SQL/NoSQL数据库技术,管理搜索来的文档索引、文档库、知识库和其他数据。为了应付海量计算的需求,这里采用了MapReduce技术,即计算需求会自动分解成一系列子计算,让许多计算节点一起计算,这就是Map过程。然后,每个计算节点的计算子结果搜集起来归约成总的结果,这就是Reduce过程。这种计算方式并行度高、可伸缩性强、对计算节点要求低,可解决大数据数量大、分析计算量大,传统计算基础难以支撑的困局。

几个基本构件说明如下:

● 基于Apache Nutch1 and Solr2,我们构建了一个搜索引擎内核(Search Engine Kernel)。Nutch是一个开源搜索软件,用Java实现,Solr也是一个开源搜索软件。前者用于实现爬虫抓取,后者用于索引管理和基础管理。基于Nutch和Solr实现的搜索引擎内核负责去互联网抓取数据、取来后自动构建索引存入本地索引库和文档库。在用户查询时,提供索引服务,借助于索引直接在本地文档库里找到相关文档。在SmartSearch中,搜索功能得到了扩展,不再像传统的搜索引擎那样,从索引去找文档,而是从用户查询中意味的概念去找文档,把语义充分地反映出来。这是借助于图中的QuerySemantic Extension模块实现的。

● 语义扩展查询接口(Semantically ExtendedQuery Interface-SEQE)和知识支持系统(KnowledgeSupport System)用于对用户查询的语义分析和语义扩展,处理后的查询交付给内核。系统还设计了第三方接口,如基于本体大数据的分析接口。

● 查询语义扩展模块(Query Semantics Extension(QSE)Module)和知识支持系统(KnowledgeSupport System(KSS))用于语义扩展,QSE利用大数据技术借助于上下文、用户特点、用户行为和查询历史(e.g. Cookies)分析用户查询,将用户请求的词汇绑定到具体概念或对象。这里的知识库是一个自扩展系统。

● 本体系统是知识表示的基础,具有可伸缩、自反、自生长和可管理的特点。推理引擎则是一个基于规则的知识推理系统。为了大数据分析和知识获取,如何表达知识十分重要。本体是近来十分热门的话题,可以用来描述概念的语义和知识,因此SmartSearch是在一个高效的本体系统上实现的。

四、结语

SmartSearch在技术上有很大突破。首先实现了海量文本数据挖掘与分析。借助于文本数据的分析结果,可以获得网络上的海量文本数据的语义信息。借助于深入的关联分析,对网络文本信息里涉及的用户关心的对象,可以进一步深入挖掘,从而获得对象的关联对象信息和关联特征。其次,实现了用户请求的语义分析,借助于大数据分析技术,自动洞悉用户输入词汇的目的、语义和蕴含信息,使得搜索结果符合用户意愿,提高了搜索的查准率与查全率。同时,借助于大数据分析,可以对返回的结果自动摘要,也可以对所有返回的文档做归纳摘要,方便了用户,也为后续的进一步智能加工奠定了基础。

教育期刊网 http://www.jyqkw.com
参考文献

[1]Junzhong Gu. Semantics Oriented Web Searching,International Journal of Database Theory and Application[J].Vol. 6, No. 4, August, 2013.

[2]Shen, Yitao. Gu, Junzhong. Diao, Lijuan. Using Seme BasedGraph to Estimate Chinese Lexical Semantic Relatedness[C].Proc. 5th International Conference on Information scienceand Applications, May 6, 2014 - May 9, 2014, Seoul, Korea.

下载文本