信息检索(InformatiON Retrieval)是指信息按一定的方式组织起来,并根据信息用户的需要找出有关的信息的过程和技术。狭义的信息检索就是信息检索过程的后半部分,即从信息集合中找出所需要的信息的过程,也就是我们常说的信息查寻(Information Search 或Information Seek)。
1 招聘信息网页搜索
信息检索有广义和狭义的之分。广义的信息检索全称为“信息存储与检索”,是指将信息按一定的方式组织和存储起来,并根据用户的需要找出有关信息的过程。狭义的信息检索为“信息存储与检索”的后半部分,通常称为“信息查找”或“信息搜索”,是指从信息集合中找出用户所需要的有关信息的过程。狭义的信息检索包括3个方面的含义:了解用户的信息需求、信息检索的技术或方法、满足信息用户的需求。
信息检索起源于图书馆的参考咨询和文摘索引工作,从19世纪下半叶首先开始发展,至20世纪40年代,索引和检索成已为图书馆独立的工具和用户服务项目。 随着1946年世界上台电子计算机问世,计算机技术逐步走进信息检索领域,并与信息检索理论紧密结合起来;脱机批量情报检索系统、联机实时情报检索系统相继研制成功并商业化,20世纪60年代到80年代,在信息处理技术、通讯技术、计算机和数据库技术的推动下,信息检索在教育、军事和商业等各领域高速发展,得到了广泛的应用。Dialog国际联机情报检索系统是这一时期的信息检索领域的代表,至今仍是世界上的系统之一。
招聘信息网页的搜索是从一个公司的开始,搜寻该站点内的所有招聘信息网页。下面将招聘信息网页简称为招聘网页。招聘信息是指具体的招聘职位、人数和要求等信息。本文假定存在一个入口页面,将其称之为公司招聘。该招聘主页可能不是招聘页面,因为它不包含具体的招聘信息,但是通过该页面可以链接到很多招聘页面,通过扩展这些招聘页面,可以到达公司的所有招聘页面。招聘页面的扩展是带有启发式的,即只扩展招聘页面,不扩展非招聘页面。
Spider又叫WebCrawler或者Robot,是一个沿着链接漫游Web 文档集合的程序。它一般驻留在服务器上,通过给定的一些URL,利用HTTP等标准协议读取相应文档,然后以文档中包括的所有未访问过的URL作为新的起点,继续进行漫游,直到没有满足条件的新URL为止。WebCrawler的主要功能是自动从Internet上的各Web 站点抓取Web文档并从该Web文档中提取一些信息来描述该Web文档,为搜索引擎站点的数据库服务器追加和更新数据提供原始数据,这些数据包括标题、长度、文件建立时间、HTML文件中的各种链接数目等
2 系统介绍
招聘网页搜索系统由4个模块组成:入口定位模块、招聘链接识别模块、招聘页面识别模块和页面搜索模块。Web招聘信息自动搜索平台总体结构。
首先,由入口定位模块找到公司的招聘入口页面。然后页面搜索模块由入口页面出发,通过不断扩展招聘页面来获得所有的招聘页面。在扩展过程中,使用招聘页面识别模块来判别一个页面是否是招聘页面。招聘页面识别模块通过统计页面关键词词频来识别网页。下面将详细描述各个模块的具体算法。
2.1 入口定位模块
入口定位模块采用的是自主搜索算法。其原理是基于分步的思想。假设要查找美国高校计算机方面的论文,首先可以在一个大学网址中查找计算机系主页,找到后可以查找相应的教员目录,然后通过每个教员找到论文所在的页面。
在一步搜索词表中由样本得到的有“招聘信息”、“工作机会”、“加入我们”、“招贤纳士”等关键词。在二步搜索中,步得到的有“关于我们”、“人力资源”、“人才中心”等关键词,第二步得到的有“工作机会”、“校园招聘”、“社会招聘”、“招聘信息”等关键词。下面是具体的处理步骤:
SearchOneSite(TermSet,SearchArea,SearchKB,EventLog,WebPageSet){
//根据搜索知识、各网链特征集以及当前搜索路径,计算各网
//链搜索优先值
1.URLSet=ComputeURLPriority(TermSet,SearchArea,
SearchKB);
//按照各网链搜索优先值将其顺序压入栈中,以便进行回溯搜索
2.PushURLSetToSearchSTack(URLSet,SearchStack,SearchArea);
//从当前网链集中,弹取出一个候选URL(当前搜索优先权值
//)
3.OneURL=GetNextOneURL(SearchArea,SearchStack);
//若当前网链集地址已经被搜索完,则进行搜索回溯
4.If(OneURl==NULL){
if(UpdateSearchArea(SearchArea,NULL)==NOBACK)
return FALSE;
goto 3;
}
//从互联网上读取指定URL的网页判断读取是否成功
//若成功
5.If(OneWebPage==FetchOnePage(OneURL,SearchArea);
//记录当前搜索参数与结果
6.RecordEvent(OneURL,SearchArea,EventLog);
//若读取失败,则准备读取下一个网页
7.If(OneWebPage==NULL) goto 3;
//分析所获网页并取得其内容特征
8.TermSet=ParseWebPage(OneWebPage,SearchArea);
//根据当前搜索知识、网页特征与搜索路径,确定网页是否为
//下一基本网页
9.Result=CheckWebPage(TermSet,SearchArea,SearchKB);
//若是下一个网链所在网页,则更新当前搜索状态
10.If(Result==NEXTLINK)
UpdateSearchArea(SearchArea,Result);
//若是下一个基本网页,则更新当前搜索状态
11.If(Result==NEXTPAGE){
//将已搜索到的基本网页收集在一起,作为搜索结果
WebPageSet=WebPageSet+{OneWebPage};
//若已获一个基本网页,则返回搜索成功信息
if(UpdateSearchArea(SearchArea,Result)==LASTONE)return TRUE;
}
//准备回溯搜索
else goto 3;
//继续搜索
goto 1;
}
对于在搜索知识库中不存在的路径,即坏情况,也可以达到采用广度优先算法的搜索效率。找到入口页面后,将交由页面搜索模块进行招聘页面的搜索。
2.2 页面搜索程序
页面搜索程序从招聘入口页面链接开始,搜寻该页面下的所有页面链接,并通过招聘链接识别器过滤出候选的招聘网页链接。
在页面搜索程序的设计策略中,主要有2方面的工作:对页面的解析和高效的搜索策略。虽然已经有基于XML和Web Server的标准,但要将现存的大量页面过渡到这些标准还需要相当长的时间。所以对页面的解析仍需处理大量的不规则格式。例如在链接中就存在着“href= ”、“href =”、“href=" "”以及“href=′ ′”等多种合法的格式,在解析时应该充分考虑各种情况。优良的搜索策略也是必不可少的,存在着像changhong这样巨大的站点,本身有着大量的链接,采用传统的广度优先算法也可以完成搜索任务,但耗时多。具体的算法如下:
//EntranceURL是由入口定位模块给定的入口页面链接
//从EntranceURL开始有限深度遍历站点内的所有网页。返回
//遍历到的网页链接
searchAllLinksBeginWith(EntranceURL)
List open=new LinkedList( );//open表,存放待扩展的节点
List close=new LinkedList( );//close表,存放已遍历的节点
startLink=new Link(startURL,″ ″,0);//初始链接深度为零
open.add(startLink);
while open不为空
first=open.removeFirst( );
addToClose(first);
expandedLinks=expand(first);
removeVisitedLinks(expandedLinks);
addToOpenAtEnd(expandedLinks);
return close;
2.3 招聘链接识别器
招聘链接识别器对链接进行识别,以过滤出候选的招聘网页链接。
此处需要分析的链接包含2个部分:URL和URL对应的文字。例如,对于下面的一段HTML代码片段:
有2个链接:
url1=http://www.kingsoft.net/business/
url2=http://www.kingsoft.net/c/2003/04/22/71090.shtml
这2个链接对应的文字分别为“商业合作”和“诚聘英才”。
很显然,实际需要的是“诚聘英才”所对应的链接,因为“诚聘英才”这4个字往往意味着招聘信息页面。很自然,可以预设一组关键词,如果链接文字中包含其中的某个关键词,便认为该链接对应于招聘信息网页。
但是,仅仅这样还不够。因为有些网页使用图片来导航,通过图片来链接到招聘信息网页。对于图片通常无法识别其具体的含义,也许只能获得URL,而没有对应的文字。而且,关键词词典可能不全面,会遗漏正确的链接。因此,需要引入URL关键词模式。如果URL包含其中的某个关键词,则认为该链接对应于招聘信息网页。
链接识别详细算法如下。
isJobLink(text,url)
//判断一个链接是否为招聘网页链接,text为链接文字,url为
//链接URL
//令textKeywords为包含文字关键词的集合,urlKeywords为包
//含URL关键词的集合
for each word in textKeywords
if (text contain word) return true;
for each word in urlKeywords
if (url contain word) return true;
return false;
2.4 招聘网页识别器
招聘网页识别器根据网页的内容判断其是否属于招聘信息网页。为了避免遗漏,在网页链接识别器中将判断准则放得较宽,所以根据网页链接识别器过滤出来的链接所对应的网页有可能不是招聘信息网页。为此,需要再加入一层限制,即对网页内容进行分析,进一步过滤。招聘网页识别器应用由样本分析模块得到的页面判断知识,从而终找到招聘页面。
考虑招聘信息的特点,在判断中并非以某个词出现多少为依据,而应该考虑多个词同时出现的机会,这也是很直观的方法。如一条招聘信息中可能同时出现“xx人员”、“要求”、“工作经验”,但几乎不会同时出现多个“招聘”关键字。
考虑到上述特点,在本模块的实现中,仍然基于关键词,统计所有关键词词典中的词出现的频率的和,如果这个和超过阈值,则认为该网页属于招聘信息网页,否则不是。
3 实验结果及结论
采用上述方法对给定的一定数量的站点进行了搜索的实验,得到了比较理想的效果。由于存在一些不能直接由页面得到链接的站点,或者本身链接的URL不能提供识别而且对应的是图片信息,而开发的程序并没有设计用于识别这类图片的模块,所以在实验统计中只考虑能得到候选链接的情况。终正确率达到了95%,很好地完成了预定任务。
本文对于工作页面的搜索还只是一个初步的尝试,虽然达到了比较好的效果,但仍然存在着许多可以改进的地方。如在一些特殊的情况下,如何获得页面链接,如何改进链接的搜索策略,如何使页面识别器的参数选定。接下来的工作将关注搜索策略的改进和更全面的链接解析,以实现低的遗漏率和高正确率。当然对于招聘页面识别只是特定搜索的一个方面,将来的工作是将它做成通用性平台,以满足用户更广泛的要求。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。