万维网Web自动搜索引擎(技术报告)
邓雄(Johnny Deng) 2006.12
网络时代的信息量每8个月翻一番,如今的网页以100亿来计算;网络搜索已成为仅次于电子邮件的第二大网络应用。2005年中国互联网发展状况统计报告中也指出,用户在互联网上获取信息最常用的方法中,通过搜索引擎查找相关的网站占58.2%。对于有效的搜索引擎技术的研究将具有巨大的学术及商业价值。
搜索引擎技术源自于信息获取(Information Retrieval)这个学科。信息获取技术包含了信息的表述、存储、组织和对信息的访问方法。一般的信息获取系统(基于文本的)通常只提供信息的获取,而对于基于超文本的系统来说,它可以方便将信息获取与浏览结合起来,同时由于万维网信息的规模大、内容不稳定、高度的数字化和网络化,这给万维网的信息获取带来了巨大困难。目前的万维网Web搜索引擎可以分为三大类:
全文检索搜索引擎:全文搜索引擎是名副其实的搜索引擎,国外具代表性的有Google (http://www.google.com) 、yahoo(http://search.yahoo.com) 、AllTheWeb (http://www.alltheweb.com ) 等,国内著名的有百度(http://www.Baidu.com)、中搜(http://www.zhongsou.com)。它们都是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户,也是目前常规意义上的搜索引擎。
目录搜索引擎:目录索引虽然有搜索功能,但在严格意义上算不上是真正的搜索引擎,仅仅是按目录分类的网站链接列表而已。用户完全可以不用进行关键词查询,仅靠分类目录也可找到需要的信息。国外比较著名的目录索引搜索引擎有yahoo(http://www.yahoo.com)Open Directory Project(DMOZ)(http://www.dmoz.com/)、LookSmart(http://www.looksmart.com)等。国内的搜狐(http://www.sohu.com)、新浪(http://www.sina.com)、网易(http://www.163.com)搜索也都具有这一类功能。
元搜索引擎:元搜索引擎在接受用户查询请求时,同时在其它多个引擎上进行搜索,并将结果返回给用户。著名的元搜索引擎有Dogpile(http://www.dogpile.com)、Vivisimo(http://www.vivisimo.com)等,国内元搜索引擎中具代表性的有搜星搜索引擎(http://www.soseen.com/),优客搜索(http://www.yok.com)。在搜索结果排列方面,有的直接按来源引擎排列搜索结果,如Dogpile,有的则按自定的规则将结果重新排列组合,如Vivisimo。
其他的像新浪(http://search.sina.com.cn)、网易(http://search.163.com)、A9(http://www.A9.com)等搜索引擎都是调用其它全文检索搜索引擎,或者在其搜索结果的基础上做了二次开发。
Web搜索引擎,这里,是指一种在Web上应用的软件系统,它以一定的策略自动地,在Web上搜集和发现信息,在对信息进行处理和组织后,为用户提供Web信息的查询服务。在使用者的角度看,这种软件系统提供一个网页界面,让他通过一个浏览器提交一个查询关键词或短语,然后很快返回一个可能和用户输入内容相关的信息列表。这个列表的每个条目代表一篇网页,每个条目至少包含三个元素:1)标题:该网页内容的标题。2)URL:网页对应的全球统一定位地址。3)摘要:该网页内容的概述。即前述第一类搜索引擎。
一、 Web搜索引擎基本原理与技术
1. 搜索引擎的历史
搜索引擎技术部分源自于信息获取技术。这里我们仅阐述搜索引擎的发展历史。
1990年,为了搜集散布于网络上的FTP资源,加拿大McGill大学的计算机学院开发了名为Archie的FTP搜索引擎。此时,Web尚未出现,Archie被公认为现代搜索引擎的鼻祖。1993年,Matthew Gray开发了World Wide Web Wanderer,它是世界上第一个利用HTML网页之间的链接关系来监测Web发展规模的机器人(robot)程序。1994年7月,Michael Mauldin将John Leavitt的蜘蛛程序(spider, crawler, robot)接入到其索引程序中,创建了著名的Lycos,这是第一个现代意义的搜索引擎。1998年,Google正式诞生。Google起源于斯坦福大学的BackRub项目。1999年推出的AlltheWeb目前由Yahoo!运行。1998年左右的Ask Jeeves是一个自然搜索引擎,它能让用户输入问题来获取查询结果。此外,还有著名的HotBot,temoa,Overture,AltaVista,Metacrawler, SavvySearch等搜索引擎。
在中国,1997年,诞生了国内最早的搜索引擎天网,并于2004年推出了其更新版本,它是一个公益性质的搜索引擎。2000年,由华人学者创立的百度商业搜索引擎,至今仍然处于中国搜索引擎的领先地位。
2. Web搜索引擎工作原理与体系结构
如果将搜索引擎看作一个黑盒,那么,我们可以这样定义一个搜索引擎的功能:
在一个可以接受的时间内返回一个和用户查询(记作q)匹配的网页信息的列表(记作L)。如图1。
图1 搜索引擎示意图
现代大规模高质量搜索引擎一般采用如图2所示的工作流程:
图2 搜索引擎的三段式工作流程
网页搜集阶段:搜索引擎服务的基础是一大批预先搜集好的网页,获取这些网页就是在网页搜集阶段需要完成的工作。严格来讲,网页搜集阶段只考虑对海量网页数据的抓取和原始存储两个关键活动。对于网页的抓取可以利用先深/先宽以及其他组合策略(目的是搜集到尽量重要尽量多的网页);对于抓取网页的维护可以采取定期搜集,增量搜集等方式。
预处理阶段:预处理过程主要指从网页集合形成倒排文件的过程(倒排文件(inverted file)是目前公认最有效的搜索引擎索引数据结构,是用文档中所包含关键词作为索引,文档作为索引项的一种数据结构),主要包括四个方面:关键词提取(提取能够代表网页内容的一些特征,对中文而言主要采用“切词软件”切出关键词),网页消重(尽可能过滤“镜像网页”和“转载网页”),链接分析(通过对词频,文档频率,HTML标记,链接信息等分析来指示文档的相对重要性和内容的相关性等)和网页重要程度计算(预处理阶段的重要程度计算主要通过链接引用,网页自身的某些特点建立重要性指标)。
服务阶段:查询服务负责依据用户提交的查询词或短语生成一个满足一定排序要求的结果网页列表(我们假设用户是希望结果网页包含所输入查询文字的),主要实现三个方面的主要功能:查询词切分(查询词切分词表理论上必须包含在倒排文件词表中),结果排序(依据诸如查询词、用户背景、查询历史等建立查询过程中相关性指标,并与与处理阶段的文档重要性指标一起形成一个排序结果),文档摘要(包括了静态方式和动态方式,前者独立于查询,按照某种规则,实现预处理网页获取摘要;后者在响应查询时,依据查询词在文档中的位置,提起周围文字,并标亮查询词)。
基于上述流程,现代大规模高质量搜索引擎的体系结构示意如图 3a 及图3b:
图 3a :搜索引擎的体系结构
其中大部分模块和前面的原理有直接对应。所以仅着重讨论“控制器”模块。为了向大规模搜索引擎稳定地提供网页数据,通常需要每天搜集千万级网页(Sogo搜索目前已能到达亿级的更新量),而且是持续进行,核心是要综合解决效率、质量、“礼貌”等问题。这就是控制器的作用,即:利用控制器来综合控制抓取时利用的资源(计算机设备、网络带宽、时间等),控制与被抓取网站的关系(既不要过于密集抓取一个网站,又不会漏点重要的站点),控制在有限的时间搜集的网页的重要程度(相对更“重要”的网页),控制相同网页不被重复抓取等等细节问题。
图3b搜索引擎的体系结构
“网络蜘蛛”从互联网上抓取网页,把网页送入“网页数据库”,从网页中“提取URL”,把URL送入“URL数据库”,“蜘蛛控制”得到网页的URL,控制“网络蜘蛛”抓取其它网页,反复循环直到把所有的网页抓取完成。
系统从“网页数据库”中得到文本信息,送入“文本索引”模块建立索引,形成“索引数据库”。同时进行“链接信息提取”,把链接信息(包括锚文本、链接本身等信息)送入“链接数据库”,为“网页评级”提供依据。
“用户”通过提交查询请求给“查询服务器”,服务器在“索引数据库”中进行相关网页的查找,同时“网页评级”把查询请求和链接信息结合起来对搜索结果进行相关度的评价,通过“查询服务器”按照相关度进行排序,并提取关键词的内容摘要,组织最后的页面返回给“用户”。
上述体系结构可以进一步细化为如下所示的示意性系统结构,如图4: 以一个简化了的搜索引擎将上述体系结构进一步细化,目的是突出大规模高级搜索引擎的关键技术点:
图4 搜索引擎设计模块结构
图中A表示搜集部分,B表示整理(即预处理),C代表服务部分。
图 4C 网页搜集模块结构
l 其中A部分可以进一步细化为图 4C 所示的信息搜集模块。网页的搜集从URL库中获得输入,解析URL中标明得Web服务器地址、建立连接、发送请求和接受数据,将获得得网页数据存储在原始网页库,并从其中提取链接信息放入网页结构库,同时将待抓取的URL放入URL库,保证整个过程迭代进行,知道URL库为空。这里需要尤其提到如下4个问题:1)网页得原始网页存储库一般不能利用传统的大型关系数据库实现,这是因为,一般的大型关系数据库不能满足大规模搜索引擎的对原始网页信息处理要求,主要表现在:原始网页信息的存储格式应当适宜长期保存,并易于处理(利于索引,查询优化等),可以作为终端常品直接提供用户使用,同时由于数据的海量性,存储格式还应具备隔离错误的能力。因此,一般采用基于文件的存储格式,甚至直接跳过操作系统层,直接访问磁盘扇区和磁道。2)避免网页的重复搜集,可以采用记录未访问、已访问URL和网页内容摘要(MD5)和记录域名与IP对应表(域名与IP是多对多的关系)来尽可能的控制重复。3)首先搜集重要的网页;4)搜集信息的类型(MIME类型)。
l B部分(信息预处理):经过Web信息搜集,保存下来的网页信息已经按照特定的格式保存。因此这部分的第一步就是为原始网页建立索引,有了索引就可以为搜索引擎提供网页快照功能;接下来针对索引网页库进行网页切分,将每一篇网页转化为一组词的集合;最后将网页到索引词的映射转化为索引词到网页的映射,形成倒排文件,同时将网页中包含的不重复的索引词汇聚成索引词表;此外,基于网页之间的结构信息(链接,HTML标签等)分析网页的信息重要程度,构建网页的ranking等元信息。这一部分的关键技术点在于以下3方面:1)基于海量数据的索引算法;1)基于中文的自动分词处理;3)PageRank算法及策略。
l C部分(查询服务):传递到服务阶段的数据包括索引网页库、倒排文件及网页元信息。查询代理接受用户输入的查询短语,切分后,从索引词表和倒排文件中检索获得包含查询短语的文档并利用PageRank等元信息以及查询的历史日志等信息综合计算结果集的重要程度,排序返回给用户。
3. 性能及质量优化
l 搜集子系统:可扩展性
主要基于并行处理技术实现搜集子系统,可能的策略是,采用一个节点(可以认为是一台PC机)内部的多个抓取进程(线程)的并行和节点间的并行相结合。示意如图5:
图5:分布式Web搜集系统结构
图中,协调进程之间两两建立起连接,形成一个逻辑全互联关系,直接传递它们之间的交叉URL。调度模块维护系统内所有登记协调进程的信息,包括它们的IP地址和端口号。
l 搜集子系统:网页消重与净化
网页净化(noise reduction)就是识别和清除网页内的噪声内容(如广告、版权信息等),并提取网页的主题以及和主题内容重复的网页(基于启发式规则或者视觉相似性等方法提取网页元数据和主题);消重(replicas or near-replicas detection)是除去所搜集网页集合中主题内容重复的网页(通过每个文档的一组指纹(fingerprint)来唯一确定网页的内容)。
l 预处理子系统:性能优化
预处理系统的性能优化,主要体现在索引的创建(包括索引词的选择、中文分词、编码识别与转换(Unicode是一种兼容性字符集,可以使用不同的编码方案,对于搜索引擎的国际化是必要的,但是存在实现的困难,诸如编码识别,现有程序的遗址级编程系统等问题)、健壮的页面分析等)、索引压缩、倒排文件缓存机制等方面。
图6:检索系统的缓存结构
l 服务子系统:查询服务系统的用户特征挖掘及缓存的应用
对大量用户行为的统计分析(日志),可以发现搜索引擎用户输入的查询词和查询过程中所点击的网页均表现出明显的时间局部性,用户查询的分布符合幂函数特征并具有良好的自相似性。这些规律可以用来指导缓存设计(FIFO,LRU及待衰减的LFU是目前常用的缓存替换策略)。
l 服务子系统:结果排序
在信息检索领域将返回结果的排序称为“相关排序”(relevance ranking),隐含其中的各条目的顺序反映了结果和查询的相关程度。狭义的讲,它是某种反映多种因素的综合统计优先序。为了提高搜索引擎的检索质量,一般应从3个方面实现:建立网页中词项的基本权重;利用链接的结构特性(例如网页的入度);收集并挖掘用户的反馈信息(例如用户的查询及网页点击情况)。
4. 面向主题和个性化的Web搜索引擎
个性化搜索引擎:
一般的搜索引擎由于缺乏对关键词语义的理解,检索结果对用户而言往往不够理想,主要表现在:检索结果中无关的网页过多;没有考虑用户的个性差异(例如“windows”这个查询词对于软件工程师和建筑师可能具有不同的含义)。因此,提高搜索引擎检索结果的精度并提供个性化的服务成为搜索引擎的一个重要发展方向和研究热点。这主要涉及基于Web的挖掘技术的应用。
Web个性化的实质,就是一个以用户需求为中心的Web服务,如图7。不同用户通过各种途径访问Web资源;系统学习用户特性,创建用户模型;系统根据得到的知识调整服务内容,以适应用户的个性化要求。
图7:Web个性化实质
创建Web个性化服务的一般步骤,主要:
l 搜集用户各种信息:例如注册信息,访问历史
l 分析用户数据,创建相应得访问模式
l 结合用户特性,向用户提供符合其特性需求的个性化服务
其主要的问题在于:1)隐私问题;2)性能问题(系统响应时间等);3)质量评价问题(如和评价建模效果,系统的服务质量等)。
主要的实现技术是Web挖掘技术,Web挖掘的一般的过程可以认为:1)预处理:需要对收集的数据进行必要的预处理,如清除“脏”数据。2)模式发现:应用不同的Web挖掘算法发现用户访问模式。3)模式分析:从发现的模式集合中选择有意义的模式。Web挖掘的分类,如图8:
图8:Web挖掘的分类
相关的应用举例:
图9:北大天网Frame System
Web挖掘技术的应用主要有如下的趋势:
l 与人工智能技术的结合(涉及机器学习、知识发现、代理多代理技术)
l 与交互式多媒体Web技术的结合(支持海量多媒体数据流的内容挖掘等)
l 与数据库技术的结合
面向主题的搜索引擎:
面向主题的信息搜集系统主要是利用有限的网络带宽、存储容量和较少的时间,抓取尽可能多的主题网页。较之通用搜索引擎,主题搜索引擎获取局部专题化的信息更完备、更新速度更快、并能自动发现领域内的主要资源。由于主题信息只占整个Web的一小部分,并且具有分散性,因此传统的基于宽度或深度优先的搜索策略难于满足要求。
Web主题信息搜集的主要方法来源于S.Chakrabarti于1999年提出的Focused Crawling系统,其核心思想是样例网页代表了特定的主题,通过计算与样例网页的相似度来确定抓取的网页是否是特定的主题网页。其抓取网页的过程是:首先由用户从某一开放的分类目录体系如Yahoo!中选取若干自分类节点作为主题信息,这些节点所包含的一些页面作为训练集,构造一个分类器。当抓取到一个新的网页u时,首先提交到分类器进行相关度预测,如果页面u是一个正例,则由u指向的超链放入工作池作为代抓取的超链。否则u被减枝,其所指向的超链亦不进一步抓取。如此循环直到工作池为空。
其系统结构如图10所示:
图10 Focused Crawler体系结构
主要的三个部分是:(1)分类器(classifier),用于判定所抓取网页的相关性,进一步可确定是否对该网页所包含的超链进行扩展;(2)提取器(distiller):用于找到已抓取网页集的Hub,并确定待抓取URL的优先级;(3)抓取器(crawler):在分类器和提取器指导下,基于具有动态可配置的优先控制策略下抓取网页。
这里,我们可以特化分类器为:通过一个或几个关键词来定义主题信息。
二、 教育部职位搜索引擎
1、 垂直搜索引擎的产生
现今,通用搜索引擎诸如google、baidu等搜索引擎应用日趋广泛。通用搜索引擎的查询信息量大,但是查询的结果不够准确、结果不够深入,例如:用户可能通过通用搜索获取北京东城区的川菜馆,但是可能很难通过通用搜索引擎获取哪些川菜馆客可带宠物,它的菜谱,价格,交通信息等的满意答案。于是垂直搜索引擎提出了新的搜索引擎服务模式,通过针对某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息和相关服务。其特点就是“专、精、深”,且具有行业色彩,相比较通用搜索引擎的海量信息无序化,垂直搜索引擎则显得更加专注、具体和深入。
2、 垂直搜索引擎的定义与特点
定义:垂直搜索引擎是针对某一个行业或组织,满足行业专业需求、或者组织某项业务需求的专业搜索引擎,是搜索引擎的细分和延伸,是对某类网页资源和结构化资源的深度整合,并为用户提供符合专业用户操作行为的信息服务方式。
特点:
|
通用搜索 |
垂直搜索 |
信息采集 |
采集方式:被动方式为主 采集深度:要求不高 动态网页采集的优先级:低 结构化数据库信息采集:要求不高 |
采集方式:被动方式和主动方式相结合 采集深度:要求高 动态网页采集的优先级别:高 结构化数据库信息采集:要求高 |
信息加工 |
网页元数据提取:要求不高 结构化信息提取:要求不高 排重、分类:要求不高 |
网页元数据提取:要求高 结构化信息提取:要求高 排重、分类:要求高 |
信息服务 |
检索方式:非结构化信息为主 结果排序:PageRank算法 |
检索方式:结构化信息和非结构化信息相结合 结果排序:需求多样化 |
信息采集:从采集方式看,通用搜索以被动方式为主,搜索引擎和被采集的网页没有约定的、标准的格式;垂直搜索则采用被动和主动想结合的方式,主动方式,是指被采集的书籍于垂直搜索引擎有一定得采集接口和安全接口。通过主动方式,有效采集网页中标引的元数据,整合上下游网页资源或者商业数据库,提供更加准确的搜索服务。例如:中华人民共和国中央人民政府网站垂直搜索引擎(http://sousuo.gov.cn),它通过规范副省级政府门户网站网页的表达方式,达到有效采集网页元数据的目的,为企业和个人提供更精准的政务信息搜索服务。
从采集深度、动态网页采集的优先级、结构化数据库信息采集来看,通用搜索采用广度为先的策略,所以对采集深度要求不高,而垂直搜索需要挖掘出行业内所有相关的网页信息,所以往往采用深度为先的策略,同时由于行业内的一些有商业价值的信息采用动态发布的方式,如:企业数据库、供求信息等,所以垂直搜索对动态网页的采集优先级别较高。在实际应用中,垂直搜索需要集成和采集关系数据库中的结构化信息,如:找酒店、旅游信息的搜索引擎http://www.qunar.com/需要采集航班的起终点,价格等结构化的数据库信息。
信息加工:非结构化信息结构化是垂直搜索的特色
垂直搜索引擎和通用搜索的最大区别是对网页信息进行了结构化信息抽取加工,也就是将网页的非结构化数据抽取成特定的结构化信息数据。我们可以认为通用搜索是以网页为最小单位,而垂直搜索是以结构化数据为最小单位。
垂直搜索的结构化信息提取和加工主要包括两种:网页元数据的提取,包括标题、作者、发表时间、版权所有等等;内容中结构化实体信息的提取,包括行业相关的结构化数据,如找餐馆的搜索引擎 http://www.Gudumami.cn(咕嘟妈咪)中,包括了餐馆名、地点,价格信息等等。这些数据存储到数据库中,进行进一步的加工处理,如:去重、分类等,最后分词、索引再以搜索的方式满足用户的需求。
目前,从垂直搜索的应用情况看,大部分垂直搜索的结构化信息提取都是依靠手工、半手工的方式来完成的,面对互联网的海量信息,很难保证信息的实时性和有效性,对智能化的结构化信息提取技术的需求非常迫切。但因目前国内非结构化信息的智能提取技术取得了重大进展,在一些领域得到了有效应用,因此智能化成为了垂直搜索引擎的发展趋势。
信息检索:结构化和非结构化相结合的检索方式
从信息检索看, 垂直搜索引擎不但能够对网页信息中的结构化信息进行检索,而且能够提供结构化和非结构化信息相结合的检索方式。比如我们找工作关注的:职位信息:软件工程师;公司名称:软件公司;地点:北京海淀,等结构化信息,也包括对公司评论文章等检索。
从检索结果的排序方式看,通用搜索主要通过PageRank算法来实现;而垂直搜索的排序需求更加多样化,如:按时间排序、按相关度排序、按某个结构化字段排序(如:购物搜索(http://www.buysou.com)中的按价格排序)。
3、 垂直搜索引擎的技术难点
聚焦、实时和可管理的网页采集技术
一般互联网搜索面向全网信息,采集的范围广、数量大,但往往由于更新周期的要求,采集的深度或说层级比较浅,采集动态网页优先级比较低,因而被称为水平搜索。而垂直搜索带有专业性或行业性的需求和目标,所以只对局部来源的网页进行采集,采集的网页数量适中。但其要求采集的网页全面,必须达到更深的层级,采集动态网页的优先级也相对较高。在实际应用中,垂直搜索的网页采集技术能够按需控制采集目标和范围、按需支持深度采集及按需支持复杂的动态网页采集,即采集技术要能达到更加聚焦、纵深和可管控的需求,并且网页信息更新周期也更短,获取信息更及时。
从非结构化内容到结构化数据的网页解析技术
水平搜索引擎仅能对网页的标题和正文进行解析和提取,但不提供其时间、来源、作者及其他元数据的解析和提取。由于垂直搜索引擎服务的特殊性,往往要求按需提供时间、来源、作者及其他元数据解析,包括对网页中特定内容的提取。比如:在论坛搜索、生活服务、订票服务、求职服务、风险信用、竞争情报、行业供需、产品比较等特定垂直搜索服务中,要求对于作者、主题、地区、机构名称、产品名称以及特定行业用语进行提取,才能进一步提供更有价值的搜索服务。
全文索引和联合检索技术
水平搜索引擎并不能提供精确和完整的检索结果,只是给出预估的数量和排在前面部分的结果信息[(TOP N)],但响应速度是水平搜索引擎所追求的最重要因素;在文本索引方面,它也仅对部分网页中特定位置的文本而不是精确的网页正文全文进行索引,因而其最终检索结果是不完全的。
垂直搜索由于在信息的专业性和使用价值方面有更高的要求,因此能够支持全文检索和精确检索,并按需提供多种结果排序方式,比如按内容相关度排序(与水平检索的PageRank不同)或按时间、来源排序。另外,一些垂直搜索引擎还要求按需支持结构化和非结构化数据联合检索,比如结合作者、内容、分类进行组合检索等。
智能化的文本挖掘技术
垂直搜索与水平搜索的最大区别是它对网页信息进行了结构化信息抽取加工,也就是将网页的非结构化数据抽取成特定的结构化信息数据。垂直搜索还能够按需提供智能化处理功能,比如自动分类、 自动聚类、自动摘要、自动标引、信息过滤、自动排重、中文处理技术、相似性检索、短语检索、拼音检索等。这部分是垂直搜索乃至信息处理的前沿技术,虽然尚不够成熟,但有很大的发展潜力和空间,并且目前在一些海量信息处理的场合已经能够起到很好的应用效果。
海量信息处理与分布式技术
从采集来看,垂直搜索引擎可以多服务器协同工作,共同完成信息采集任务,实现信息的分布式采集。在网络带宽充沛的环境下,可以设置多个机器人同时工作,提高采集效率,缩短采集时间。
从存储和检索看,为了保证海量信息的存储,保证海量信息的检索效率、稳定性和可靠性。系统采用分布式集群结构作为系统的存储和检索支持。
通过“分布式、集群、多服务器的策略” 垂直搜索引擎在存储和检索方面实现了以下目标:解决海量数据的分布式存储问题,实现了海量数据的无限扩展;在多用户并发检索的条件下,保证海量信息的检索效率;通过实现信息资源的冗余存储,提供高可靠性的检索服务;通过实现不同的索引策略,满足更加个性化的检索需求。
从Web服务来看,垂直搜索引擎Web查询工具采用Java语言开发,并建立在标准的应用服务器上,因此具有很好的可扩展性。在Web请求不断增加的情况下,可以通过分离Web服务器和应用服务器,建立Web服务器集群和应用服务器集群等方式增强服务响应能力。
4、 教育部垂直搜索引擎的分析
系统需求
据发改委数据显示,2005年中国需要就业的人口为2500万人,而2005年可以安排的就业人口只有1100万人,全国就业岗位供给与岗位需求之间的缺口是1400万人。据教育部统计,2000年到2006年的毕业生人数分别为:107万、115万、145万、212万、280万、330万和413万。毕业生人数年年攀升的同时,就业率却在逐年下降。“未就业即失业”已成为目前亟待解决的问题之一,教育部等国家相关部委为此做了大量的工作。与此同时,严峻的就业形势也刺激了人力资源市场的火爆。
早在2002年5月,有关调查指出,当时的电子招聘方式就以28%排名第一,亲友介绍排名第二(27%),随后才是招聘会(24%),报纸和杂志广告(13%),猎头和中介机构(7%)。
据预测,今年网上招聘的市场份额将达到16.9亿元,占总招聘市场收入的33%。2005年使用网络招聘的企业有120万,2006 年将突破200万,2002年到2006年的平均增长率高达62.12%。
本系统就是为教育部建设一个面向高校毕业生求职者和招聘单位的公益性的专业人力资源服务平台,致力于为毕业生和招聘单位提供一站式的人才资源服务,加强求职者,尤其广大毕业生与用人单位之间交流和联系,为他们建立沟通的桥梁。这一目标主要通过提供一个面向广大求职者的垂直搜索引擎服务来实现。提供招聘信息的搜索和服务:提供丰富、实时的招聘信息;支持职位名称和职位所在地区的基本搜索;提供招聘发布日期、职能(行业)、薪酬、学历要求、工作经验等的分类和综合搜索能力。
系统总体设计方案
图11 教育部职位搜索体系架构图
图4是整个系统的体系架构图,重点给出了搜索服务的处理流程,从中可看出,整个搜索服务可分为两大部分:前端的查询请求处理和后端的数据更新。
(1)前端的查询请求处理
求职者提交职位搜索请求或招聘单位提交人才搜索请求后,查询请求和页面缓冲处理服务器组根据查询关键词查询缓存中是否存在对应的缓存页面,如果存在,则直接返回该页面;否则,访问查询处理和结果缓冲服务器组。如果必要,还需进一步查询MySQL查询服务器组,查询处理和结果缓冲服务器组把查询到的结果返回给查询请求和页面缓冲处理服务器组,根据页面生成逻辑,生成页面浏览和导航,然后返回给用户。
(2)后端的数据更新。收集各个不同的数据源(合作单位的数据、自动获取的数据、自愿提供的数据),提交到数据源处理服务器,然后批量更新到主MySQL服务器组中。为了保持系统的健壮性,主MySQL服务器组采用两台同样配置的机器,互作镜像。单台服务器发生故障时,系统仍可平稳运行。主MySQL服务器组的数据会自动同步到两台前端MySQL查询服务器上。采用两台MySQL查询服务器的目的在于:首先,可以分载系统的查询压力,达到一定的负载均衡;其次,可以避免频繁的数据源更新影响查询速度;最后,可以保证系统的健壮性,在一台服务器发生故障时,系统仍可稳定工作。
系统模块设计
Crawler + 数据导入 + 数据库 + 结果缓存 + 页面输出
图12 系统模块简图
比较与分析
|
功能 |
主要技术 (通用搜索引擎) |
主要技术 (教育部一期) |
数据搜集 |
搜集并保存Web数据 |
抓取:滤重、更新、普遍抓取(数据量更大,类型更多,先抓重要的网页) 存储:基于文件的存储格式 |
抓取:滤重、更新(实时性更强)、抓取特定网站特定信息 存储:基于数据库的存储格式 |
中间预处理 |
索引Web数据,计算页面重要程度 |
文件索引、分词、Pageranking、(实体识别、主题提取) |
分词、目录分类 |
查询服务 |
基于查询字串获取查询结果,并个性化查询过程及结果 |
分词、结果缓存(多级缓存)、结果排序、用户特征挖掘(Web挖掘)、主题提取、相关词提取、结果项提取、基于结果项的知识挖掘 |
分词、结果缓存、主题提取、结果排序、相关词提取、结果项提取 |
5、 垂直搜索引擎的发展方向
(1)目录再分类:针对某一特定行业或某一主题进行目录的细化分类,结合机器抓取行业相关站点的信息提供专业化的搜索服务。这种专业化的分类目录(或称主题指南、列表浏览),很容易让用户迅速知道自己要找的是什么,并且按目录点击就能找到。
(2)深度挖掘:通过对元数据信息进入深度加工,该类垂直搜索引擎为用户提供通用搜索引擎无法做到的专业性、功能性、关联性、有的加入了用户信息管理以及信息发布互动功能,能很好地满足了用户对专业性、准确性、功能性、个性化的需求。
例如:医疗垂直搜索平台Healthline(http://www.healthline.com/)使用组合语义查寻技术和全面消费健康分类学,分类数据由超过850,000项医疗相关元数据和50000条相互关联的医疗概念组成。这些独特资源使Healthline 翻译每天用户使用语言以便精确地匹配医疗术语,使得消费者能迅速从结果中判断确切的需要信息。
(3)本地搜索:基于一个特定地区地图,满足人们在本地购物、就餐、娱乐、健身、修车、喝咖啡、工作等需求。国内目前的本地搜索仍停留在地图+黄页+公交指路的地图搜索水平阶段。
(4)搜索交易平台:通过行业信息深度和广度的整合,来提供更加细致周到的服务。比如美容搜索、餐饮搜索、购物搜索、机票旅游搜索等交易平台针对的是小型商家开展电子商务来获得更多的顾客。
三、 DiMoor搜索引擎(曹勇刚)
文本挖掘技术
文本挖掘衍生于数据挖掘,强调处理的对象是文本,被用于发现文本中的模式、规则或趋势,目标是从非结构化或半结构化的文本信息中提取需要(感兴趣、非平凡的)的知识。
文本挖掘过程一般包括文本准备、特征标引、特征集缩减、知识模式的提取、知识模式的评价、知识模式的输出等过程,如图13。
图13 文本挖掘的一般过程
(1) 文本准备阶段是对文本选择、净化和预处理的过程,用来确定文本型信息源以及信息源中用于进一步分析的文本。具体任务包括词性的标注、句子和段落的划分、信息过滤等。
(2) 特征标引是指给出文本内容特征的过程,通常由计算机系统自动选择一组主题词或关键词可以作为文本的特征表示。
(3) 特征集缩减就是自动从原始特征集中提取出部分特征的过程,一般通过两种途径:一是根据对样本集的统计分析删除不包含任何信息或只包含少量信息的特征;二是将若干低级特征合成一个新特征。
(4) 知识模式的提取是发现文本中的不同实体、实体间概念关系以及文本中其他类型的隐含知识的过程。
(5) 知识模式评价阶段的任务是从提取出的知识模式集合中筛选出用户感兴趣的、有意义的知识模式。
(6) 知识模式输出的任务是将挖掘出来的知识模式以多种方式提交给用户。
基于上述通用过程模型,搜索引擎中的文本挖掘过程示意如下:
图14 文本挖掘的流程
文本提取器针对各种格式的文本文档(word, pdf, ppt, txt, html等)进行文本提取,提取后的结果为纯文本信息的形式,对应于文本准备阶段;这里的元信息提取器主要进行论文文档元信息提取(标题、论文作者等),对于一般的搜索引擎不是必须的;文本分析器包含分词、实体识别和主题提取三个子模块,可以认为,分词器对应了特征标引过程,实体识别对应了知识模式提取,主题提取对应了知识模式评价的过程。索引程序对各元信息进行分词和分字段索引;检索、分析程序用于分析索引结果。
以下主要讨论原论文中的主要贡献部分以及即使原文中笔墨不多,但是值得以后深入研究的部分,即分词、实体识别及组题识别、基于搜索的知识挖掘。
(1) 分词:现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。
1、基于字符串匹配的分词方法
这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下:
1)正向最大匹配法(由左到右的方向);
2)逆向最大匹配法(由右到左的方向);
3)最少切分(使每一句中切出的词数最小)。
还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。
一种方法是改进扫描方式,称为特征扫描或标志切分,优先在待分析字符串中识别和切分出一些带有明显特征的词,以这些词作为断点,可将原字符串分为较小的串再来进机械分词,从而减少匹配的错误率。另一种方法是将分词和词类标注结合起来,利用丰富的词类信息对分词决策提供帮助,并且在标注过程中又反过来对分词结果进行检验、调整,从而极大地提高切分的准确率。
对于机械分词方法,可以建立一个一般的模型,在这方面有专业的学术论文,这里不做详细论述。
2、基于理解的分词方法
这种分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统还处在试验阶段。
3、基于统计的分词方法
从形式上看,词是稳定的字的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映成 词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息。定义两个字的互现信息,计算两个汉字X、Y的相邻共现概率。互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的字组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,例如“这一”、“之 一”、“有的”、“我的”、“许多的”等,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典(常用词词典)进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。
到底哪种分词算法的准确度更高,目前并无定论。对于任何一个成熟的分词系统来说,不可能单独依靠某一种算法来实现,都需要综合不同的算法。
原论文中采用的分词算法就是上述基于基于一部基本词典的统计分词的技术上。改进之处在于,对于统计模型的定义上,引入了切分词的局部概率和全局概率相结合的方法来评估该切分词是否是一个新词,其原理如下。
统计模型:(ICTCLAS 计算所的n最短路径模型)
基于以上模型,引入局部概率和二元切分的概念:即,上述模型利用我们选用的词典中对切分词的固定的计算频率来代表了在当前切分过程中(当前切分文章)该切分词的概率,这样不能完全反映当前文章中该词出现的概率(频率),故引入了在当前文章中,该词出现的频率来,来综合反映该切分词的概率。二元切分就是指如下模型:
处理流程,如图15:
图15 原论文中分词流程
在流程上进一步作了优化。首先FSA处理有明显特征的项(如域名、日期等);然后ChineseDigitalFilter处理中英文数字(基数、序数、分数、小数);BigramFileter的跌代实现上述概率模型来;最后FMMFilter在已经分好的分词结果的基础上在做一次最大匹配查漏补缺(主要针对“停词”及人名)。其中,BigramFileter为核心部分,在实现是,借助于二元跌代切分的方法实现。
分词在搜索中的应用
图 16 分词在搜索引擎中的应用
优劣分析
复杂度:O(n):由于迭代的词是一般不会超过4次(二元迭代4次最大可以识别16个字的词)
特点在于:非督导的方法,不需要预先的训练,比较简单;稳定性及对于任意领域新词的识别能力,因此更适合与主题发现,倾向于长词切分(例如:并行计算机,可以直接识别,而不会识别为并行+计算机,北京航空航天大学,可以直接识别,不会别拆分为北京+航空航天+大学),即,对于词频不高的新词识别能力较强;
缺点在于:没有训练,识别的可能不大符合现实,可能识别出一些不符合词法的词;倾向于识别与长词,同时对于局部概率有一定依赖性,因此对于较短的短语(例如查询短语)的词识别会出现与该短语在长文中出现时不一致的识别结果,也使得在局部词频很高的词的识别可能会出错(在新闻稿中频繁出现了通告称这个短语,结果通过称被错误的识别为一个词)。
结论是:对于搜索引擎的分词索引策略一般采用的混合索引。
(2) 实体识别及主题提取:
实体识别是提取实体并明确实体类型的过程,实体类型例如人名、地名、数字。
原文中实体识别的流程,如图17:
图17 原文中实体识别的流程
问题在于:识别时按照姓氏、地名、组织名顺序就行的,基于前述分词的识别新词能力很强的特点,可能将地名或者组织名识别为姓氏,或者将组织名识别为地名。见图18。
图18 主题提取和实体识别
主题提取:就是提取反映一篇文章主题,具有一定代表性的关键词语。所谓代表性,就是文档因为他们的出现能和其他文档区分
一般可以通过判断一个词的权重和考虑其语义相关性来实现主题提取。
原文中,仅借助了如下权重计算公式来判断词的重要性,然后按大小顺序,取前n个词作为主题提取的结果。
其中,TF是词频,IDF是倒置文档频率,LEN是词的长度,transformTF()和transformLen(LEN)是两个分段函数,包含经验规则。
(3) 基于搜索的知识挖掘
由于搜索引擎预先对文本进行了索引,可以面向大量文档快速找到于查询词相关的文档,并根据相关程度和权威程度排序。这些经过搜索引擎按主题过滤后的文档可以作为围绕主题的知识挖掘的来源,作为问题解答式的挖掘应用。
例如:通过对NASAC2004的投稿文章索引后进行数据挖掘可以得到一些有趣的结果:可以知道投稿最多的城市,投稿最多的一些著名导师,投稿中的主要研究方向,会议中最热门的主题等等,如图19。
图19 对论文数据的结果挖掘
本体管理技术
结合文本挖掘和本体管理的搜索引擎应用
主要列举,原论文中,将文本挖掘和本体管理技术应用于搜索引擎之后的应用模式和实用价值。
(1) 基于内容的检索提示
目前有检索提示的搜索引擎主要是基于对用户输入的查询串进行统计而生成检索提示的。原文中,利用了索引文本内容进行检索提示,即基于内容的提示:
即,将索引文本作为文档,索引文本所包含的字作为索引项,建立倒排索引。检索时,通过对检索词按字分割之后,获取各个字对应的的索引文本,利用一定的相关度算法,获取与检索词最相关的若干词作为内容提示项。如图20
图20 基于内容的检索提示
(2) 检索结果项的主题词提取及导航
利用前述主题提取的算法,实现了对每一个检索项的主题提取,如图21。
图21 主题提取
其意义在于:传统的搜索引擎提供的检索结果包含针对检索词的加亮上下文摘要。这种上下文摘要可以帮助用户快速了解此结果相所对应得文档是在什么上下文中使用查询词的,从而有利于决定是否进一步查看此文。但这种摘要并不能揭示此文的主题,用户通过上下文摘要可能仍然不能知道此文要讲述的内容与什么相关。对于结果相的主题词提取对于用户深入了解结果项所对应的文档集中的主题,从而更加有助于判断是否进一步查看。
(3) 检索结果页的主题词提取及导航
除了对每个检索相做结果提取之外,进一步对这个结果集做主题提取。
其意义:这样计算出来的结果页主题词有助于总结出与查询词语义相关的其他词。例如,通过这一提示,可以知道“摆渡”除了其本意划船过河之外,还跟“头球摆渡”有关系。
(4) 基于DiMoor的其他应用
借助上述种种技术,可以实现基于搜索引擎的多方面应用。
a) 寻找词形相关的词汇
借助内容检索提示,可以实现对相关词的了解。例如图22对北京的搜索,可以知道北京市有众多的地区。
图22 词形相关提示
b) 寻找跨语言语义相关的词汇
基于对检索结果的主题提取,构建双语或多语本体,可以查询跨语言的语义相关词汇和事实,如图23。
图23 本体辅助下的多语或者双语扩展
c) 了解词的使用场景和语义范畴
利用前述页面主题提取技术,可以实现对于陌生词的使用场景和语义范畴发现。如图24。
图 24 了解词的使用场景和语义范畴
d) 发现、追踪主题
同样,也有助于发现主题相关的未知知识。如图25
图25 发现新颖主题和知识
e) 依据已有文档找寻主题相关的文档
寻找与一篇文章主题词,以及本体中和主题词语义相关的词汇。如图26
图26 在线文档分词和主题提取
四、 搜索引擎的发展方向
(1)宽带的应用
对互联网上的音频、视频信息的内容进行整理,有效地描述,并做到高效的存储和传输,这是搜索引擎未来发展的方向之一。
(2)互动体验
Google已经改变了用户在互联网上冲浪、漫游的浏览习惯,而是将用户所需信息线性排列出来。未来,导航将是互联网浏览的主要方式:搜索引擎充分理解用户所要表达的主题,将所需信息按类别依次排列,呈现给用户,并加入更多的纠错能力,列出纠错提示。
(3)垂直化及入口占领
未来,搜索引擎将从平行搜索转向垂直搜索,只对某一领域的信息进行精确搜索,这种细化是搜索引擎未来发展的一个方向。而所谓入口,就是指搜索将变成用户登入互联网的第一道关卡,搜索引擎的品牌和用户的习惯将直接引导市场走向。
(4)互联网的进程
基于搜索服务向其他互联网服务的过度和对其他服务的整合。Google不但在搜索领域占有领先地位,现在也加入了网站翻译的领域,并取得了很好的效果。之所以Google在翻译工作上能取得好的成绩,就是因为它占有着其他人所不能完备的海量信息优势。这也是搜索引擎发展的一个趋势,例如在输入法等领域,同样可以通过对于海量信息的评测,加入传统字典中所不具有的信息。同时在对电子商务等的支持和集成,甚至所谓“泛互联网”化,其走向其他非互联网的领域,例如:已经出现的电话搜索(搜索固定电话和手机)
搜索技术与软件工程的结合:
1) 构件信息检索
随着构件技术的发展,构件化开发的逐步推广,越来越多的构件被开发出来。面对越来越多的构件,到底应该选择哪一个构件,才能不仅在功能而且在接口上于现有系统集成是个问题。这样对于构件的元信息,使用历史,用户反馈等等信息的搜集、整理及相应的构件检索服务将是一个发展方向。
2) 软件工程领域知识信息检索
面向软件工程领域的垂直搜索引擎,对于软件工程的领域知识做一搜集和整理,对于软件工程的教学、实验、研究都不无裨益。
3) 需求分析信息检索
需求分析文档包含很多领域知识,结合信息提取技术,可以构建需求分析的多种视图,让用户和开发者从各个侧面了解需求分析中的要求。
五、 北航软件所Search组
工作目标:
n 实现教育部搜索引擎项目;
n 吸收并完善曹勇刚关于搜索引擎的毕设课题;
n 研究搜索相关方向课题,建立软件所搜索相关领域的研究团队和研究方向,为新的研究及工程课题做好充分准备;
成员及职责:
正式成员:研2:中锋(罗)(负责预处理模块)、杨曦(罗)(负责Crawler模块)
研1:赖冠辉(刘)(结果缓存子模块)、钟佳涛(张)(Crawler子模块)、杜小翔(钱)(入库程序、数据库)
大四(直博):原子(刘)(Crawler子模块)
高级顾问:孙甲慧(张)(技术支持及顾问)
工作计划:
1)2006.12.1~2006.12.31:研2同学开题;研1同学教育部熟悉各自子模块并与12.30日左右报告。
2)2007.1~2007.2:开始,每位同学提交一份个人学习及工作的计划;2个月内,在已有模块的基础上,基于2期建设建议,设计并实现各自相应功能。
3)2007.3~2007.6:初步转为子功能的测试及集成测试;并适时开展曹勇刚毕设课题的学习和研究。
4)2007.7:完成开发和测试任务,并基于曹勇刚课题展开适当拓展。
主要参考书目
曹勇刚,《结合本体和文本挖掘的搜索引擎关键技术研究》,2006
李晓明等,《搜索引擎:原理、技术与实现》,2004
徐宝文等,《搜索引擎与信息获取技术》,2002
许福等,《高校毕业生求职搜索系统建设建议(草案)》,2006
陆汝钤等,《人工智能,上下册》,1989
William J. Collins等,《Data structures and the standard template library》,2003