垂直搜索引擎应用研究

2024-10-24

垂直搜索引擎应用研究(精选7篇)

垂直搜索引擎应用研究 篇1

1 通用搜索引擎

网络的发展极大地影响了我们的生活, 它让我们更容易获取信息的同时, 也彻头彻尾地将我们陷入了无边无际的信息海洋之中。每时每刻我们都要自觉或不自觉, 被动或主动地面对数十亿页面的网络信息, 想找到自己需要的信息简直就是“大海捞针”。搜索引擎的横空出世让我们有了探索信息海洋的指南针。随着技术的进步, 这个指南针的功能也越来越强大, 使用并接受它的人也越来越多。

需要注意的是, 虽然现代搜索引擎已经取得了很大的成功, 但是它仍然存在很多不足之处, 主要表现如下:

首先, 覆盖率低。基于Web自身的特点, 大量的数据分布在数以亿计页面的互联网上, 检索起来十分困难, 而单个搜索引擎的覆盖率一般都低于30%, 很难索引到所有的Web资源。

其次, 时效性差。网络信息呈指数增长, 大量信息的存活期却在缩短, 这导致搜索引擎的时效性难以保证, 返回结果中存在大量“错”链接和“死” 链接。

再者, 查准率低。一次搜索的结果可能有成千上万条, 而在这庞大的信息中, 有用信息只是其中的一小部分, 可谓“冰山一角”, 并且常常有收到和下载的信息难以消化的情况。

最后, 过于死板。现有的搜索引擎多采用关键词的机械式匹配。没有考虑到用户的个体差异, 不能满足用户的个性化需求。这种方式的缺点是参与匹配的只有字符的外在表现形式, 而非它们所表达的概念。因此, 经常出现答非所问、检索不全的结果。

2 垂直搜索引擎

2.1 垂直搜索引擎的优势

由于Web上的信息更加细化和专业, 人们有时只关心特定领域、特定范围内的信息, 而Google、Baidu等通用搜索引擎却只能提供范围很大但信息却不完整的检索服务, 比如求职者在百度中搜索“招聘英语教师”, 会有部分的英语教师职位, 但是结果中很多职位都已经过期, 有的甚至是一年前甚至更久的职位信息, 对于招聘这样的时效性非常高的信息, 百度这样的搜索引擎明显不能满足用户需求。因此, 用户需求和市场服务间的巨大反差产生了强大的“搜索噪音, 人们呼唤更有针对性的搜索引擎, 垂直搜索引擎应运而生。

垂直搜索是针对某一行业的专业搜索引擎, 是搜索引擎的细化和延伸, 是对网页库内的某类专门的信息进行一次整合, 定向分字段抽取出需要的数据进行处理后再以某种形式返回给用户。相对于通用搜索引擎的信息量大、查询不准确、深度不够等局限性, 它是针对某一特定人群、某一特定领域或某一特定需求提供的有一定价值的信息和相关服务。其特点就是“专、精、深”, 且具有行业色彩。因此, 近几年垂直搜索引擎迅速发展, 如面向医药行业的中国用药安全网、房产行业的搜房网、IT行业的赛迪网等垂直搜索引擎层出不穷, 有权威人士认为, 垂直搜索引擎将是未来主流的搜索引擎系统。

2.2 垂直搜索引擎的关键技术

2.2.1 网络爬虫技术

网络爬虫即Web Spider, 它是一个自动抓取网页的程序, 为搜索引擎从互联网上爬取网页, 是搜索引擎的重要组成部分。

传统爬虫从一个或若干初始网页的URL开始, 获得初始网页上的URL, 在抓取网页的过程中, 不断从当前页面上抽取新的URL放入队列, 直到满足系统的一定条件才停止。垂直搜索爬虫的工作流程就比较复杂, 需要根据一定的网页分析算法过滤掉与主题无关的链接, 保留有用的链接并将其放入等待抓取的URL队列。然后, 根据一定的搜索策略从队列中选择下一步要抓取的网页URL, 并重复上述过程, 直到达到系统的某一条件时停止。在抓取网页时, 网络爬虫一般有两种策略:广度优先和深度优先。广度优先是指网络爬虫会先抓取起始网页中所有的链接网页, 然后再选择其中的一个链接网页, 继续抓取在此网页中链接的所有网页。这是最常用的方式, 因为这个方法可以让网络爬虫并行处理, 提高其抓取速度。深度优先是指网络爬虫从起始页开始, 一个链接一个链接地跟踪下去, 处理完这条线路之后再转入下一起始页, 继续跟踪链接。这一方法的优点是网络爬虫在设计时比较容易。

另外, 所有被爬虫抓取的网页将会被系统存储, 进行一定的分析、过滤, 并建立索引。搜索引擎建立网页索引时, 处理的对象是文本文件。而对于网络爬虫来说, 其抓取的对象有多种格式, 如html、图片、doc、pdf、多媒体等。这些文件被抓取后, 需要把其中的文本信息提取出来。准确的提取这些文档信息, 一是对搜索的准确性有重要作用, 二是对网络爬虫正确跟踪其它链接也有一定的影响。网络爬虫在搜索引擎中占有重要的位置, 对搜索引擎的查准、查全都有影响, 决定了搜索引擎数据容量的大小。同时, 它的好坏还直接影响到搜索结果页中死链接的个数。

2.2.2 网页信息抽取技术

Web信息抽取是将Web作为信息源的一类, 从Web页面中所包含的无结构或半结构的信息中识别用户感兴趣的信息, 并将其转化为更为结构化, 语义更为清晰的格式。输

入信息抽取系统的是原始文本, 输出的是固定格式的信息点, 这样就为用户在Web中查询数据、应用程序直接利用Web中的数据提供便利。

现有的Web信息抽取方法有: (1) 基于自然语言处理的方式:具体说来就是把文本分割成多个句子, 对每个句子的句子成分进行标记, 然后将分析好的句子语法结构和事先定制的语言规则匹配, 获得句子的内容即抽取信息, 规则可由人工编制, 也可自动学习获取。 (2) 基于包装器归纳的方式:主要是用归纳式学习方法生成抽取规则。用户在一系列网页中标记出需要抽取的数据, 系统在这些例子的基础上归纳出规则。这些规则精确度的高低取决于例子的质量如何。如果能代表那些需要处理的网页, 这些例子就是高质量的。 (3) 基于HTML结构的信息抽取:它的特点是, 根据Web页面的结构定位信息。在信息抽取前通过解析器将Web文档解析成语法树, 通过自动或半自动的方式产生抽取规则, 把信息抽取转化为对语法树的操作来实现信息抽取。

随着电子技术与电子商务的发展和应用, Web半结构化数据的抽取技术具有越来越重要的理论和现实意义。

2.2.3 中文分词技术

在Web应用中, 文本处理的速度往往是性能的关键, 快速分词具有很大的现实意义。Web文本分词是Web信息处理的基础, 如信息检索、摘要形成、网页过滤等都需要对Web文本进行分词处理。Web文本的正文主要是由英文和中文构成, 由于英文的单词与单词之间有空格, 所以不存在分词问题。而中文的每一句中词与词之间是没有空格的, 因而必须采用某种技术将其分开。

对于中文网页, 首要的就是进行中文分词, 这样才能便于索引文件的建立。分词的准确性对搜索引擎来说十分重要, 但如果分词速度太慢, 即使准确性再高, 对于搜索引擎来说也是不可用的。因为搜索引擎需要处理数以亿计的网页, 如果分词粍时过长, 便会严重影响搜索引擎内容更新的速度。这就需要在分词速度与准确度之间找到一个折中。另外在现实网络世界中新词层出不穷, 有的又是昙花一现, 有效地识别网络新词汇也是一个难题。而垂直搜索引擎的词典也需要行业特色, 比如医学搜索就需要包括医学专用词汇。

分词的方法很多, 基本上分为两类:第一类是基于字符串的匹配:将汉字串与一个机器词典中的词条进行匹配, 若在词典中找到某个字符串, 则匹配成功。主要有正向最大匹配法、逆向最大匹配法、最少切分等方法。第二类是基于统计的方法:从概率角度出发, 单字出现在词汇中联合概率是比较大的, 因此当相邻的字越常出现, 则越有可能是一个词。基于上述引, 对处理的材料进行分析, 得到相应的单字出现的概率, 然后对相邻的字出现概率进行统计, 若远大于单字出现的概率之和, 则可能成为一个词。实际应用中, 统计分词方法都是与字典结合着来使用的, 这样既发挥匹配分词的切分速度快、效率高的特点, 对利用了无词典结合上下文识别生词, 并能消除歧义等优点。

3 结语

垂直搜索引擎因针对性强、目标明确和查准率高而成为获取专业信息的重要工具, 也是目前信息市场和用户需求的共同呼唤, 其作用和功能是通用搜索引擎不可替代的。可以预见, 垂直搜索引擎将会更加流行, 同时对人们网络生活的方方面面也将产生更为深刻的影响。

摘要:垂直搜索引擎是面向某一特定领域的专业搜索引擎。简要分析了通用搜索引擎的局限、垂直搜索引擎的优势及其关键技术。

关键词:搜索引擎,垂直搜索,信息检索

参考文献

[1]肖冬梅.垂直搜索引擎研究[J].图书馆学研究, 2003, (2) .

[2]李副铭.垂直搜索引擎的研究与设计[D].电子科技大学, 2009.

[3]刘世涛.简析搜索引擎中网络爬虫的搜索策略[J].阜阳师范学院学报, 2006, (9) :60-61.

[4]翟永, 罗钊.垂直搜索引擎浅析[J].广西警官高等专科学校学报, 2009, (4) .

[5]欧振猛, 余纯争.中文分词算法在搜索引擎应用中的研究[J].计算机工程与应用, 2000, 36 (8) :80-86.

垂直搜索引擎应用研究 篇2

互联网是一个宝库,搜索引擎是打开宝库的一把钥匙。使用搜索引擎,使我们检索信息的能力获得了空前的提高,成本有效地降低,可以说,搜索引擎是现代的计算机技术、因特网技术与传统的索引理论相结合的成功典范。垂直搜索引擎为用户有特定目的的查找提供了一个准确、快捷、便利的手段。Lucene和Heritrix是开发垂直搜索引擎的强有力工具。

1 垂直搜索引擎的基本介绍

搜索引擎主要指利用网络自动搜索技术软件或人工方式,对Internet网络资源进行收集、整理与组织,并提供检索服务的一类信息服务系统。

垂直搜索引擎也被称为专业或专用搜索引擎,就是专门为查询某一个学科或主题的信息而产生的查询工具,专门收录某一方面、某一行业或某一主题的信息,在解决某些实际查询问题的时候比综合搜索引擎更有效。垂直搜索引擎和普通的网页搜索引擎的最大区别是对网页信息进行了结构化信息抽取,也就是将网页的非结构化数据抽取成特定的结构化信息数据。如果说网页搜索是以网页为最小单位,则垂直搜索是以结构化数据为最小单位。将这些数据存储到数据库,进行进一步的加工处理,如:去重、分类等,后分词、索引,最终以对结构化数据的搜索方式满足用户的信息需求。垂直搜索引擎的应用领域很多,比如购物搜索、旅游搜索、医药搜索、图书搜索等,几乎各行各业各类信息都可以进一步细化成各类的垂直搜索引擎。

2基于Java的全文检索引擎—Jakarta Lucene

2.1 Lucene简介

最初Lucene是Apache软件基金会Jakarta项目组的一个子项目,是一个完全开放源代码的全文检索工具包。Lucene在最初阶段是使用Java开发的。由于它的强大功能,Lucene逐渐被翻译成了多种语言,诸如C++、C#、Perl等。

Lucene不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,它为数据访问和管理提供了简单的函数调用接口,可以方便地嵌入到各种应用中实现针对应用的全文索引/检索功能。

2.2 Lucene系统结构和功能分析

Lucene系统结构如图1所示。

Lucene作为一个优秀的全文检索引擎,其系统结构运用了大量的面向对象的设计思想。首先是定义了一个与平台无关的索引文件格式,其次通过抽象将系统的核心组成部分设计为抽象类,具体的平台部分设计为抽象类,此外与具体平台相关的部分比如文件存储也封装为类,经过层层的面向对象编程的处理,最终达到了一个低耦合、高效率、容易二次开发等的检索引擎系统。

从图1可以清楚地看到,Lucene系统是由基础结构封装、索引核心、对外接口3大部分组成。其中直接操作索引文件的索引核心又是系统的重点,索引的最后结果就是产生许多的索引文件,这些索引文件构成索引库。

Lucene系统将所有源码分为了7个模块(在Java语言中以包即package来表示),各个模块(包)完成特定的功能:

(1) org.apache.lucene.analysis:该模块主要用于切分词。切分词的工作有Analyzer的扩展类来实现,Lucene自带了StandardAnalyzer类,我们可以参照该类的实现写出自己的切分词分析器类,如中文分析器等。

(2) org.apache.lucene.index:该模块主要提供库的读写接口。通过该包可以创建、添加删除记录及读取记录等。

(3) org.apache.lucene.search:该模块主要提供了检索接口。通过该包,我们可以输入条件,得到查询结果集,与org.apache.lucene.queryParser包配合还可以自定义查询规则,像google一样支持查询条件间与、或、非、属于等符合查询。

(4) org.apache.lucene.queryParser:该模块是查询分析器,用户可以根据需求定制。

(5) org.apache.lucene.document:该模块主要提供了存储结构,即文档(document)的抽象描述。

(6) org.apache.lucene.store:该模块主要提供了底层I/O的存储结构。

(7) org.apache.lucene.util:该模块主要提供了一些公用的数据结构。

2.3 Lucene全文检索的实现机制及步骤

Lucene的API接口设计得比较通用,输入输出结构都很像数据库的表、记录和字段,所以很多传统的应用的文件、数据库都可以比较方便地映射到Lucene的存储结构或接口中。总体上看,可以先把Lucene当成一个支持全文索引的数据库系统。其索引/检索过程如图2所示。

在Lucene中,待索引的文件对应一个文档(Document)数据结构,每个Document包含多个字段(Field)。Lucene根据Document对象中的字段属性和数据输出的要求,为字段选择不同的索引/存储字段规则。总的来说,Lucene实现全文检索功能有以下3个步骤:

(1) 建立索引 建立索引是全文检索的基础。检索时通常采用倒排文档(invert document)的方式来进行。也就是说,可以将一本书中的文字分成一个个词条,将每个词条所出现在书中的页码记录在词条后面。这样,用户需要查找该词条时,只要找到词条就可以根据词条后的页码找到所有该词条出现的位置。

(2) 查找索引 当索引建立好后,就可以对其进行查找了。Lucene所建立的索引是存放在文件系统中的,因此,查找索引时,需要首先将文件打开读入内存。

(3) 更新索引 由于实际的内容是不断更新的。因此,索引的内容也需要不断更新。Lucene同样提供了丰富的功能来支持索引的更新功能。

3 网络爬虫Heritrix

3.1 Heritrix简介

Lucene很强大,但是,无论多么强大的搜索引擎工具,在其后台,都需要一样东西来支援它,那就是网络爬虫Spider。由于爬虫的存在,才使得搜索引擎有了丰富的资源。Heritrix是一个由Java开发的、开源的Web网络爬虫,用户可以使用它从网络上抓取想要的资源。Heritrix最出色之处在于它的可扩展性,开发者可以扩展它的各个组件,来实现自己的抓取逻辑。

3.2 Heritrix的使用

Heritrix的下载页面为:http://www.crawler.archive.org/downloads.html。当前Heritrix的最新版本为1.12.1。

(1) 在下载完Heritrix的完整开发包后,解压到本地的一个目录下,如图3所示。在Heritrix目录下有一个conf目录,其中包含了一个重要的文件:heritrix.properties。

(2) 在Heritrix.properties中配置了大量与Heritrix运行息息相关的参数,这些参数主要配置了Heritrix运行时的一些默认工具类、WebUI的启动参数,以及Heritrix的日志格式等。当第一次运行Heritrix时,只需要修改该文件,为其加入WebUI的登录名和密码,如下所示:

heritrix.cmdline.admin = admin:admin

其中,用户名和密码是以一个冒号进行分隔的,使用者可以制定任何字符串作为用户名和密码。

(3) 在设置完用户名和密码后,就可以开始运行Heritrix了。最常见的是以WebUI的方式启动它。

(4) Heritrix的主类为org.archive.crawler.Heritrix,运行它,就可以启动Heritrix。当然,在运行它的时候,需要为其加上lib目录下的所有jar包。

(5) 主类运行后,Heritrix的后台已经对服务器的8080端口进行了监听,只需要通过浏览器访问http://localhost:8080,就可以打开Heritrix的WebUI了。

(6) 在WebUI的登录界面,输入刚才在Heritrix.properties中预设的WebUI的用户名和密码,就可以进入Heritrix的WebUI主界面,这时,Heritrix就已启动成功,在这个WebUI的帮助下,用户就可以使用Heritrix来抓取网页了。

3.3 Heritrix的架构

Heritrix的几个主要组件:

(1) 抓取任务CrawlOrder:CrawlOrder类是整个抓取工作的起点,一次抓取任务包括许多属性,建立一个任务的方式有很多种,最简单的一种就是根据默认的order.xml来配置。在内存中order使用CrawlOrder类来进行表示。

(2) 中央控制器CrawlController:中央控制器是一次抓取任务中的核心组件。它将决定整个抓取任务的开始和结束。CrawlController位于org.archive.crawler.framework中,在它的Field声明中,看到如下代码片段:

private transient CrawlOrder order;

private transient CrawlScope scope;

private transient ProcessorChainList processorChains;

private transient Frontier frontier;

private transient ToePool toePool;

private transient ServerCache serverCache;

可以看到,在CrawlController类中,定义了以下几个组件:

CrawlOrder:它保存了对该次抓取任务中,order.xml的属性配置。

CrawlScope:这是决定当前的抓取范围的一个组件。

ProcessorChainList:从名称上很明显就能看出,它表示了处理器链。

Frontier:一次抓取任务需要设定一个Frontier,以此来不断为其每个线程提供URI。

ToePool:这是一个线程池,它管理了所有该抓取任务所创建的子线程。

ServerCache:这是一个缓存,它保存了所有在当前任务中,抓取过的Host名称和Server名称。

以上组件应该是一次正常的抓取过程中所必需的几项,它们各自的任务很独立,分工明确,但在后台中,它们之间却有着千丝万缕的联系,彼此互相作为构造函数或初始化的参数传入。

获得CrawlController的实例,并且通过自主的编程来使用Heritrix提供的API进行一次抓任务的过程如图4所示。

(3) Heritrix的多线程ToeThread和ToePool :想要更有效更快速地抓取网页内容,则必须采用多线程。Heritrix中提供了一个标准的线程池ToePool,它用于管理所有的抓取线程。

(4) 处理链和Processor:为了很好地表示整个处理器链的逻辑结构,以及它们之间的链式调用关系,Heritrix设计了以下几个API来表示这种逻辑结构:

org.archive.crawler.framework.Processor

org.archive.crawler.framework.ProcessorChain

org.archive.crawler.framework.ProcessorChainList

在搜索引擎的开发过程中,使用一个合适的爬虫来获得所需要的网页信息是第一步,这一步是整个系统成功的基础。因为搜索引擎事实上是一个巨大的资源库,如果从资源角度无法解决用户的需要,那么它一定不会成功。

4Lucene和Heritrix在构建垂直搜索引擎中的应用

以在商业网站中实际构建一个垂直搜索引擎为例,用户所搜索的商品信息是由各大IT门户网站提供的,实际上是通过爬虫,将这些商品信息抓取下来,然后经过组织整理,构建产品数据库,同时为各种内容建立索引,以供用户检索。

在选择好网站,得到抓取清单后,就可以用Heritrix开始抓取了。抓取的关键代码如下所示:

此类是专门用来解析http://mobile.163.com/0011/product/left.html这个页面的。它将其中的字符信息按行读入,碰到以.html结尾的行,就认为找到一个品牌的URI。然后对其截取,将构成的URL加入到待处理队列中,以等待FrontierScheduler的处理。FrontierScheduler所制定的处理逻辑只允许特定的信息被加入到等待队列中。

当抓取结束后,就需要对抓取下来的结果进行处理了。处理的过程主要包括以下几项:解析网页内容并将所需要的信息按固定格式保存、构建产品信息库、构建数据库处理类、构建索引处理类等。当词库建立好后,需要准备开始将产品详细信息插入数据库,并建立Lucene的索引。关键代码如下所示:

上面的代码中,buildDocument静态方法为传入的Product对象构建了7个Field。其中,前6个与数据库中的内容有直接的对应关系,而最后一个Field则是将category,name,type三个Field拼接起来进行保存,为用户提供一个搜索时的默认Field。这种方式占用了索引空间,但是却免去了使用多域搜索带来的性能损失。

下面的代码是索引类的代码,它用于向Lucene索引中添加

代码的initialize方法中,初始化了一个JE分词的MMAnalyzer的实例,然后将前面所处理的词库进行加载。addProduct方法的参数为Product类型的对象和一个id值,它将这两个参数送到ProductDocument.bulidProductDocument方法里进行处理,然后调用IndexWriter的addDocument方法,把生成的产品Document加入到索引中去。

完成以上工作后,数据库和索引已经建立完毕,也就是说,垂直搜索引擎的准备工作就已经全部完成。

5 总 结

一个搜索引擎的成败,其前期工作是决定因素中最重要的一部分。前期所提取的信息质量高低将直接影响到搜索效果,特别是在当今讲究垂直搜索的时代,空泛的信息已经不再是人们搜索时的首选。用户更希望看到经过妥善整理和分类的有价值的信息。

本文通过介绍使用Heritrix抓取需要的内容,然后再使用Lucene等工具对其中的信息进行提取,进而分析,建立索引的原理和过程,分析了如何为制作一个垂直搜索引擎做好充分的前期准备工作。

参考文献

[1]邱哲,符滔滔.开发自己的搜索引擎[M].人民邮电出版社,2007.

[2]车东.在应用中加入全文检索功能—基于Java的全文索引引擎Lucene简介[EB/OL].Http:www.chedong.com/tech/lucene.html 2002.

[3]黄建莲.中国搜索引擎服务市场的现状及发展[J].华北科技学院学报,2005(9):115.

[4]吴勇.基于www的中文搜索引擎若干问题的研究[D].南京:南京大学,2000.

[5]肖冬梅.垂直搜索引擎研究[J].图书馆学研究,2003,(2).

[6]Lucene Open Source Material.Http://lucene.apache.org/java/docs/index.html.

[7]陈光.Lucene研究之一[EB/OL].http://www.jalorsoft.com/holen/holen_lucene_01.html.

购物垂直搜索的设计以及应用 篇3

关键词:垂直搜索引擎,API,获取商品数据,索引,价格趋势

有四个步骤来完成购物的垂直搜索引擎的设计和应用。首先, 我们捕捉商品数据从网站的信息和开放淘宝API。网站采集的定时抓取网站页面数据收集网页, 从网站图片库存储在本地。数据采集到旅游网站的图片库, 以分析每一个HTML文件。存储商品的方式是, 商品信息直接存入一个文本文件, 文件名包含商品品牌, 商品名称, 型号和其他信息。

建立开源的全文搜索引擎工具包Lucene的索引, 索引的文本数据存储货物。商品对象字段, 如标题, 类别, 品牌, 类型, 内容索引。发展的搜索网站, 搜索框和数据显示页面中使用Java Web技术。

最后, 存储在数据库表中的商品的价格信息的。同样的产品有许多不同的时间的记录, 根据这些记录, 我们的计算, 分析, 可以得出价格变动是在图1中所示的整个系统的工作流程。

1 购物垂直搜索的设计以及成果

1.1 捕获商品数据

1) 获取网站信息。2) 抓取淘宝商品API的数据。3) 基于商品信息的抓取。

释网页文件, 将信息密封Item对象的转换。遍历所有的网页文件在目录中, 传入的Extrator, 提取网络信息, 抓取京东的数据。

1) Extractor定时运行任务, 使用Quartz任务调度框架定时调度数据抽取任务。2) Quartz。Quartz是一个开源的作业调度框架, 它完全由Java写成, 并设计用于J2SE和J2EE应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征, 如:数据库支持, 集群, 插件, EJB作业预构建, Java Mail及其它, 支持cron-like表达式等等。

在Spring中, 使用JDK的Timer类库来做任务调度功能不是很方便, 关键它不可以象cron服务那样可以指定具体年、月、日、时和分的时间。你只能将时间通过换算成微秒后传给它。如任务是每天执行一次, 则需要在spring中如下配置:

其中period就是一天的微秒数。如果每月1日运行一次, 那就复杂了, 不知如何配置。因为月份有大、小月之分, 每月的微秒数都不一样。

而Quartz类库不但有着上述JDK的Timer类库类似的配置, 更重要的, 它还有着类似于unix的cron服务的配置。因此, 在迁移中我们采用了Quartz类库的接口。

1.2 商品数据存储

1) 来源于网页的数据。网页抓取器定时抓取网页数据, 将网页集合存入本地, 形成网页镜像库。数据抓取器遍历网页镜像库, 分析每一个HTML文档, 抽取有用的商品信息, 这些商品信息可以暂时存入文本文件供后期数据库存储和建立索引处理, 文件名包含商品品牌、商品名、型号等信息, 每个文件对应一个商品。当然, 抽取后的商品信息可以组装成商品对象, 直接保存至数据库并建立索引, 免去保存文本文件这一中间环节。2) 通过淘宝开放API获取淘宝网商品信息。直接分商品存入文本文件, 文件名包含商品品牌、商品名、型号等信息, 每个文件对应一个商品。或者, 将淘宝返回的数据直接组装成商品对象, 保存至数据库并建立索引。3) 商品信息数据结构。4) 数据库结构:直接存入一个文本文件, 文件名中包含商品品牌, 商品名称, 型号, 以及其他信息。每个文件都对应一种商品。另一种方法是, 淘宝返回的数据直接装配成一个商品对象, 然后保存到数据库中进行索引。

1.3 检索商品信息

1) 建立索引。开放源代码的全文搜索引擎工具包, 由Lucene的索引的文本数据存储货物。商品数据持久层和文件索引设计。2) 实体。商品对象字段, 如标题, 类别, 品牌, 类型, 内容的索引。3) 发展和建立商品网站。开发搜索网站, 搜索框和数据显示, 使用Java Web技术。

1.4 分析价格趋势

数据库表中存储的商品的价格信息。同样的产品有一些不同时间的记录, 根据这些记录, 计算, 分析, 价格走势可以得出。

1.5 主要技术描述

1) HTTP访问技术;2) HTML解析技术;3) 文件IO操作;4) 数据库访问技术;5) 定时任务调度;6) 基于Lucene的全文检索技术;7) Java Web技术;8) 使用AJAX技术提高商品页面展示速度;9) 价格走势分析算法;10) 走势图绘制与展示技术。

1.6 主要架构和工具

JSFSpring Hibernate

Quartz

Compass Lucene Html Parser Heritrix

2 总结和未来工作规划

四个步骤来实现购物的垂直搜索引擎的设计与应用。我们捕获商品数据由淘宝开放API, 开放的源代码的全文搜索引擎Lucene和指数商品数据的工具包。然后, 我们建立的网站包括搜索框和数据显示页。最后, 我们实现新功能的大宗商品价格趋势分析。

然购物的垂直搜索引擎的设计与应用完成后, 有很多改进的地方。在未来, 我们可以添加开放的API, 如360buy.com, amaze.com等。我们将提高通过仔细的逻辑代码, 使用户搜索的产品, 更快的结果, 更多的人力。关于分析商品价格趋势, 我们将改进的技术和算法的及时和准确度。

参考文献

[1]任华吉.简单的分析基于Lucene的索引技术面向特定主题的搜索引擎, 2010.

[2]刘玲.HTML的解析方法之高产品质量的中文搜索引擎.成都理工大学, 2010.

[3]袁菊玲.快速建立以企业为基础的指南针全文搜索.天津:天津大学, 2010.

基于本体的垂直搜索引擎的研究 篇4

1.1 垂直搜索

垂直搜索是针对某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息和相关服务, 其特点就是专、精、深, 且具有行业色彩, 它是与通用搜索引擎截然不同的引擎类型。垂直搜索引擎专注具体、深入的纵向服务, 致力于某一特定领域内信息的全面和内容的深入, 对于领域外的闲杂信息不收录。

搜索领域有句名言:用户无法描述他要找什么, 除非让他看到想找的东西。微软研究院一名技术专家说:“75%的内容通用搜索引擎搜索不出来”。而垂直搜索引擎的诞生则是为了更大程度地提高搜索的“查全率”和“查准率”。垂直搜索引擎通过对行业领域内的信息模型和用户模型结构化的搜集或再组织, 提供更多、更专业、个性化的行业相关服务。

1.2 垂直搜索引擎的工作流程和主要技术

垂直搜索引擎主要分为3个功能模块如图1所示。网页抓取模块 (Web Spider) 是垂直搜索引擎的步骤如下。

第1步, 该模块从互联网海量的信息里抓取与搜索主题相关的网页。

第2步是信息抽取和索引模块, 该模块的主要目的是生成倒排索引, 并且存储到数据库中, 便于查询模块中查全率和查准率的提高。该模块承前启后, 是垂直搜索引擎中最重要的一环。其中最为关键的步骤就是对第1步得到的大量网页进行信息抽取, 从大量结构化和非结构化的数据中提取信息。然后对提取的信息进行中文分词, 建立倒排索引, 生成索引文件, 存储到数据库中。

第3步就是设计查询页面和查询的算法, 使用户可以按照第2步得到的索引文件进行查询。该步的关键在于如何设计优秀的查询算法, 评定网页的“重要度”, 努力提高查全率和查准率。

2 垂直搜索引擎的关键技术

由于垂直搜索引擎服务具有其自身的特性, 因此其技术要求特点上与一般互联网搜索引擎有很多不同之处, 下面通过和水平搜索的比较, 列举出垂直搜索引擎的4大关键技术。

2.1 聚集、实时和可管理的网页采集技术

一般互联网搜索面向全网信息, 采集的范围广、数量大, 但往往由于更新周期的要求, 采集的深度或说层级比较浅, 采集动态网页优先级比较低, 因而被称为水平搜索。而垂直搜索带有专业性或行业性的需求和目标, 所以只对局部来源的网页进行采集, 采集的网页数量适中。但其要求采集的网页全面, 必须达到更深的层级, 采集动态网页的优先级也相对较高。在实际应用中, 垂直搜索的网页采集技术能够按需控制采集目标和范围、按需支持深度采集及按需支持复杂的动态网页采集, 即采集技术要能达到更加聚焦、纵深和可管控的需求, 并且网页信息更新周期也更短, 获取信息更及时。

2.2 从非结构化内容到结构化数据的网页解析技术

水平搜索引擎仅能对网页的标题和正文进行解析和提取, 但不提供其时间、来源、作者及其他元数据的解析和提取。由于垂直搜索引擎服务的特殊性, 往往要求按需提供时间、来源、作者及其他元数据解析, 包括对网页中特定内容的提取。比如在论坛搜索、生活服务、订票服务、求职服务、风险信用、竞争情报、行业供需、产品比较等特定垂直搜索服务中, 要求对于作者、主题、地区、机构名称、产品名称以及特定行业用语进行提取, 才能进一步提供更有价值的搜索服务。

2.3 精、准、全的全文索引和联合检索技术

水平搜索引擎并不能提供精确和完整的检索结果, 只是给出预估的数量和排在前面部分的结果信息, 但响应速度是水平搜索引擎所追求的最重要因素。在文本索引方面, 它也仅对部分网页中特定位置的文本而不是精确的网页全文进行索引, 因而其最终检索结果是不完全的。垂直搜索由于在信息的专业性和使用价值方面有更高的要求, 因此能够支持全文检索和精确检索, 并按需提供多种结果排序方式, 比如按内容相关度排序或按时间、来源排序。另外一些垂直搜索引擎还要求按需支持结构化和非结构化数据联合检索, 比如结合作者、内容、分类进行组合检索等。

2.4 高度智能化的文本挖掘技术

垂直搜索与水平搜索的最大区别是它对网页信息进行了结构化信息抽取加工, 也就是将网页的非结构化数据抽取成特定的结构化信息数据, 好比网页搜索是以网页为最小单位, 基于视觉的网页块分析是以网页块为最小单位, 而垂直搜索是以结构化数据为最小单位。基于结构化数据和全文数据的结合, 垂直搜索才能为用户提供更加到位、更有价值的服务。整个结构化信息提取贯穿从网页解析到网页加工处理的过程。同时面对上述要求, 垂直搜索还能够按需提供智能化处理功能, 比如自动分类、自动聚类、自动标引、自动排重、文本挖掘等等。这部分是垂直搜索乃至信息处理的前沿技术, 虽然尚不够成熟, 但有很大的发展潜力和空间, 并且目前在一些海量信息处理的场合已经能够起到很好的应用效果。

3 基于本体的垂直搜索引擎系统

3.1 本体概述

本体 (Ontology) 最早是一个哲学上的概念, 从哲学的范畴来说, 本体是有关存在的本质。后来, 随着人工智能的发展, 被人工智能界赋予了新的定义。在人工智能界, 最早给出Ontology定义的是Neches等人, 其中被大多数人认可的定义是由Gruber提出的“本体是概念模型的明确的规范说明”。概念模型是通过抽象出客观世界中一些现象的相关概念而得到的模型, 其表示的含义独立于具体的环境状态;形式化是指本体应该是机器可读的;共享则反映了本体是共同认可的知识, 反映的是相关领域中公认的概念集, 它所针对的是团体而不是个体。

本体由概念类、关系、函数、公理和实例5种元素构成, 其中概念可形成一个分类层次, 并通过关系、函数、公理来表达概念之间或函数之间的关联、约束。因此, 本体能够明确地描述领域概念的定义, 通过概念之间的关系反映概念的语义信息, 并为简单的术语赋予明确的背景知识, 从而使隐含的关系明晰化, 保障语义的一致性。本体能够在语义和知识层次上描述信息, 其本身具有良好的概念层次结构, 支持逻辑推理。因此, 本体特别适合于智能搜索中对概念及其语义的处理。本体的描述语言有XML和RDF。

当前的垂直搜索引擎是基于HTML的, 缺乏语义信息, 无法将显示信息与数据分离。由成指数增加的大量产品描述、目录和文档等带来的异构问题成了垂直搜索引擎系统发展的瓶颈。例如, 对汽车甲称为auto, 乙称为automobile, 丙称为car。面对这一问题, 传统的信息处理技术对此无能为力, 只有引入本体理论才能使其得到较好解决。在将本体理论引入垂直搜索引擎时, 如下两个问题是关键性的: (1) 内容的本体描述; (2) 基于本体的查询。

3.2 内容的本体描述

从本质上说, 内容本体描述也就是内容标准, 它们提供分类层次和相关属性。内容标准提供了内容的等级, 并定义了类别之间的Subclass2of关系。从其他网站得到的每一信息链接到某一特定类别, 该类别对相关信息进行了详细描述。内容标准可以分类为“水平型”标准和“垂直型”标准。“水平型”标准提供了高层次的所有可能的产品的分类, 并覆盖了多个领域。每一个“垂直型”标准提供了某一领域的深入和细致的分类。通常, “垂直型”标准是一个“水平型”标准的几个低层次种类的扩展。较著名的“水平型”内容标准UNSPSC具有超过12000种类的5层分类模式, 但它不是描述性的, 也就是说, 它不包含属性描述, 仅仅只有名称的层次描述。该标准的层次是从产品供应方的角度进行分类的, 如打印纸与书写纸均属于印刷产品一类, 笔则属于办公用品这一类。因为从供应方的角度考虑, 它们完全属于不同的类别。另一“水平型”内容标准ecl@ss, 支持工业企业供应链的产品和信息流, 是德国企业中主要使用的标准。它根据工业用户及供应商的需要, 提供了约12700以上的种类, 层次的划分是按照购货方的需要进行的, 如书写纸与笔都归于办公用品供应方一类。ISO、Roset ta Net (主要是为IT产品) 是“垂直型”标准的典型例子。

3.3 基于本体的查询

本文在讨论基于本体的查询时将其分为3个不同的抽象层次来研究: (1) 从语法层次上看, 基于本体的描述文档是RDF文档, 而RDF采用XML作为序列化方式; (2) 从数据模型 (结构) 上看, RDF是3元组的集合; (3) 从语义的层次上看, 是概念语义查询。其中, 数据模型层面的3元组查询是实现本体语义查询的重要基础, 即语义层面查询所采用的数据模型是RDF3元组模型。数据模型最后底层的实现可能是基于Xpath的查询语句, 也可能是基于SQL重写后的查询语句。

语法层次查询从形式化语法层面来考察, RDF描述信息通用的表现形式是XML文档。XML不仅仅是一种应用之间交换信息的中间格式, 它还可以用来对应用所需处理的数据进行建模。在实际应用的XML信息处理需求推动下, XML文档的查询语言一直是一个非常活跃的研究领域。

数据模型层次查询从数据模型的层次来考察RDF描述信息, RDF数据模型是由主体、谓词和宾语所组成的三元组集合。RDF数据模型是比XML具体语法更加抽象的数据模型, 一个抽象的RDF数据模型可能会以多种不同的方式映射到不同的XML表示中去, 并且RDF抽象模型可以提供一些XML具体表示很难直接定义的操作。

概念语义查询。概念语义查询的本质就是概念语义相似度的匹配。概念的语义相似度首先由Resnik提出, 后来Jiang、Conrath、Lin等人都提出了不同方法。这些方法的基本原理是, 依据语义词典Word Net2.1构造某一商品领域的同义词林, 根据概念之间的距离与所处的深度 (层次) 来计算二者的语义相似度。

3.4 基于本体的垂直搜索引擎系统模型

基于对上述两个关键问题的研究, 本节我们给出基于本体的垂直搜索引擎系统模型, 如图2所示:

图2中用户提出的检索请求被提交给基于本体的查询模块。这个模块中的3个子模块分别按照不同的抽象层次检索本体描述数据集, 得到的结果返回给用户。语义查询子模块按公式计算概念语义相似度的匹配, 所得到的结果放在最前列, 其他两个层次的查询结果作为补充。系统的查准率与查全率得到了提高。本体构造器模块将信息抽取模块从相关站点得到的数据进行本体化, 按照内容标准中的类别目录将半结构化或非结构化信息添加到相关的目录下;同时, 利用本体描述语言将数据结构化, 并存入本体描述数据集。

4 结束语

本文提出了一种基于本体的搜索引擎概念模型, 在一定程度上帮助解决了垂直搜索引擎发展的瓶颈问题。本文的垂直搜索引擎还不完善, 这也是我们下一步努力的方向

参考文献

[1]孙登峰.面向XML文档的概念检索技术[J].计算机应用, 2003 (3) .

[2]武成岗, 焦文品, 田启家, 等.基于本体论和多主体的信息检索服务器[J].计算机研究与发展, 2001 (6) .

垂直搜索引擎应用研究 篇5

随着互联网的快速发展,人们的生活也在快速的享受着互联网带来的乐趣。互联网数据呈现膨胀性的增长,大多数人在面对网络上的海量数据时都无所适从,不知道如何提高查询信息的效率[1]。

通用搜索引擎大大提高了人们信息检索的效率,但是当今社会正在向专业化、智能化方向快速发展,单纯的依靠通用搜索引擎并不能满足一些特殊人群的需要,垂直搜索引擎的出现正好弥补了这方面的不足,并引起了许多研究人员的重视。现实生活中,垂直搜索引擎已经进入了平常百姓家,一淘、去哪儿网、百度音乐都应用了垂直搜索引擎技术。网页排序算法是搜索引擎最核心的技术之一,本文通过对Page Rank网页排序算法的研究,提出了一种改进的Page Rank算法,然后将其用于垂直搜索引擎的网页等级排序,并对比验证了算法改进前后的查准率和用户满意度。

1 Page Rank算法的研究现状

1998年斯坦福大学的Sergey Brin和LawrencePage提出了基于网页链接结构的一种网页排序算法——Page Rank算法[1],该算法成功应用于Google搜索引擎,并获得了巨大的成功。Page Rank算法的基本思想:对每一个网页赋初值,然后根据每一个网页链出网页的个数平均分配其权值,按照计算公式计算出每一个网页的权值,再次进行迭代计算,直到每一个网页的权值趋于平稳,最后按照网页权值的大小决定网页的重要程度。那么Page Rank计算公式表示如下:

上式中,P R ( u ) 表示网页u的的权值,N表示网络中所有的网页,Vi为链接到网页u的其中一个网页,C(v i)表网页Vi链出的网页总个数。d为阻尼因子,通常取值为0.85,阻尼因子d的引入,为了保证计算结果收敛。

Page Rank算法通过离线计算网页的权值,当用户查询时根据关键字匹配获得网页集合,然后按照权值的大小排序展示给用户。由于离线计算权值,搜索引擎在用户信息检索的时候具有非常高的相应速度,Google搜索引擎的成功也直接证明了其高效性。但是Page Rank算法的计算方式仅仅依赖于网页之间的链接结构,其存在一定的缺陷:

(1) 主题飘逸:该算法无法判断网页之间主题的相关性;

(2) 偏重旧网页:网页存在的时间越长,则网页的被其他网页链接到的可能性更高,搜索排序比较靠前;

(3) 忽略了链接位置:没有充分考虑网页链接位置的重要程度,网页链出的数量平分其权值。

由以上可知,如果用户在信息检索的时候,查询的结果集中存在非常多的网页与用户所要查询需求不相关,降低了用户查询的效率,那么说明PageRank算法并不一定很好的反应出网页的重要性[3]。

2 Page Rank算法的改进

2.1 对Page Rank算法主题漂移现象的改进

互联网网页质量参差不齐,经常存在两个主题毫无关联的网页为了提升网页排序而相互链接。为了应对这样的问题,本文通过引入向量空间模型(VSM)[4]分析两个网页之间主题相关度,让主题更突出,消除主题飘逸现象。向量空间模型将网页文档中的字或者词抽象为一个n维的向量空间,以向量的方式降低文本分类的复杂性。在空间向量模型中,其中文档表示计算机所能识别的所有的数据记录,特征项是由字或者词构成的一个关键字或关键词,且能代表网页文本内容的最小语义单位。文档是由特征项和它的权重值组成的向量,然后构成了一个向量空间,最后把文档映射到该空间。网页X和网页Y的文档向量为,其中x、y为网页X和网页Y的文档向量,x1为文档x的一个特征项,y1为文档y的一个特征项,那么他们的相关度为:

在公式(2)中,W(X,Y)表示网页X和网页Y之间的相似度。例如,网页X中文档包含的特征项为

x1,x2,x3,x4,其对应的权值为10、21、30、50;网页Y中文档包含的特征项为y1, y2, y3, y4,其对应的权值为25、35、40、20;则文档x可以写成(10、21、30、50、0),文档y可以写成(25、0、35、40、20),x和y之间的相似度计算方法如下:

改进后的Page Rank算法为:

当两个网页之间具有较高的相关度,那么权值也相对较高。

2.2 对Page Rank算法偏重旧网页现象的改进

用户经常要查询最新的信息如新闻、天气、股票等,由于有些重要的网页在互联网上存在的时间短,许多其他的网页还没有链接向它,那么它的权值就比较低,以至于在网页搜索排序中比较靠后,这种情况不能很好的满足用户需求。我们需要考虑网页存在的时间因素。一般搜索引擎的搜索周期为半个月到一个月,我们认为在一个周期中如果网页被搜索到,那么就累加1次,同一周期中被搜索到多次都算作一次。那么我们就引进时间因子T,对于T来说,我们希望它能够通过T影响PR的值,这样就能加速新网页的上浮和旧网页的下沉,达到和人们的期望一致。为了和公式(2)对应起来,引入参数 ,使得其值为:

那么改进后的Page Rank算法为:

从公式(5)中可看出不会很大的影响PR值的分布,但是影响算法迭代的过程。改进后的算法就可以解决Page Rank算法偏向旧网页带来的不足,提升新网页的排名。

2.3 对Page Rank算法忽略链接位置现象的改进

目前,几乎所有的网页都采用半结构化的HTML语言,这样在网页的结构中包含着重要的信息[6]。网页中包含<head>、<title>、<meta>、<body>、<H1>等标签,而标签中的链接的重要程度是不相同的。我们应当对链接在网页标签中的位置加以重视,计算时应该赋予它们不同的权重因子。

在这里,我们引入分段函数F ( v i ),对链接数据挖掘出的位置不同进行处理分级,根据挖掘出的信息位置设置其权重。为了不影响PR值总体的波动性,我们的取值尽量围绕着1进行。F ( v i ) 函数如下:

那么最后的Page Rank算法为:

3 算法仿真和分析

为了验证改进后的算法效果,本文从起点中文网、番茄小说网、笔趣阁三个小说网站获取网页。采用开源搜索引擎Nutch为本算法的载体,设置搜索关键词如:红高粱、完美世界、凡人修仙传、斗罗大陆、盘龙。搜索引擎质量的好坏通常由查全率、查准率、响应时间和用户满意度来衡量[7]。对于Page Rank算法改进前后都是利用离线计算权值,并且爬虫的深度也相同,则算法改进前后的查全率和响应时间相差无几,这两方面对比没有太大意义。本课题研究重点为改进后算法的查全率和用户满意度。查询效果如图1所示。

通过查询页面对五个关键词的查询结果进行分析,并对Page Rank算法改进前后的搜索数据进行计算得出查准率。我们统计搜索引擎的前20条数据,分析数据中的相关文档个数和非相关文档个数,用相关文档个数除以前20条数据得出关键词的查准率。实验结果表明,改进后的算法与原算法相比具有更高的查准率,该算法能有效的遏制主题飘逸现象,如2所示。

用户满意度只能根据用户的主观性评价其优劣,用户查询关键字的主题特征越明显,用户越满意。实验过程中,组织10人成立测试小组,然后设置用户对每个关键字的满意度值最高为1,最低为0,最后将每个关键字的得分相加求和,然后除以小组总人数求得平均值,表示用户对所有关键的满意度。将算法改进前和算法改进后进行对比,数据如图3所示。

4 结束语

本文通过分析Page Rank算法中存在的不足,从主题漂移、偏重旧网页和忽略链接位置重要度三方面对Page Rank算法进行改进。并通过搜索引擎返回用户所需求的网页,提高了搜索引擎质量,使得搜索引擎更专业化。实验仿真结果表明,改进的算法在查准率和用户满意度方面比传统的Page Rank算法更好。

摘要:伴随着垂直搜索引擎领域的全面发展,为了满足人们对搜索引擎系统的高质量需求,通过深入剖析了Google经典的Page Rank算法,针对其单纯的考虑网页链接结构方面的不足,提出了改进的Page Rank算法。分析了网页文本结构、网页被抓取时间、网页内容相关度等问题,在此基础上对Page Rank算法进行改进,理论分析和仿真实验表明,改进后的算法具有更高的查准率和用户满意度。

垂直搜索引擎应用研究 篇6

从2000 年开始,Web垂直搜索引擎开始赢得用户的亲睐[1⁃2]。视频、音乐、图片、软件、贴吧、地图分门别类展开搜索,专业性更强,主题相关性更高。然而Web垂直搜索引擎的应用主题并不局限,拥有非常广阔的发展空间,例如面对电子商务的商品搜索,数码产品信息搜索以及近年开始出现的微博搜索。垂直搜索的出现主要有两个方面的原因:一是通用搜索引擎索引Web的全部内容变得越来越难,而垂直搜索引擎索引数据量较小且专业,投入成本也相对较低;二是垂直搜索引擎提供的搜索质量较高,因为它可以搜索到通用搜索引擎不能搜寻到的页面,而且在可搜索页面上提供更强有力的搜索功能。垂直搜索引擎与通用搜索引擎的最大区别在于对网页信息进行结构化信息抽取,即将网页的非结构化数据提取成特定的结构化数据。构建一个垂直搜索引擎主要有两种方法:一种方法是通过爬虫爬取某种主题网页而构建专业索引;另一种方法是为用户提供专业化搜索的接口。

Web搜索引擎是种复杂、多组件信息检索系统的具体应用[3],也因其应用在拥有超大规模数据的互联网中,使构建Web搜索引擎变得比较困难。已有众多的研究者参与到Web搜索引擎的研究中,Brin和Page发表论文首次公开大规模Web搜索引擎Google的设计原型[4],提出Web搜索引擎的基本组件包括爬虫(Crawler)、索引组件、搜索组件、排序系统以及反馈组件。高效Web垂直搜索的关键之一在于爬虫能否精确爬取主题相关的Web文档,Soumen等人提出聚焦爬虫[5](Focused Crawl⁃er),利用一种能够评估网页是否与主题相关的分类器选择性地爬取与预定义主题相关的页面,实现了以目标为导向的爬取。文献[6]开发了一种潜语义索引分类器,将链接分析和文本内容结合起来,目的是抓取指定主题域的Web文档。文献[7]设计并实现了一种基于网格架构的大型Web搜索引擎,讨论实现流程和细节,对Web垂直搜索引擎的研究提供了宝贵的经验。信息检索领域的研究成果对Web搜索引擎有着较高的参照价值,特别是检索模型的研究更加重要,Web搜索引擎的排序组件好坏很大程度上决定了用户体验。信息检索模型得到了飞速发展,传统的检索模型包括布尔模型、向量空间模型、概率模型、语言模型。现代检索模型的建立大多通过排序学习方法得到,即利用机器学习技术在数据集上自动创建排序模型[8]。这些研究成果很多通过开源软件实现,这些工具不仅为开发软件提供先进的技术支持,而且大大缩短了开发周期。

本文提出了一种Web垂直搜索引擎的实现过程,以该过程为基础开发了一个查询与手机相关信息的Web垂直搜索引擎,并且对实现原理和细节进行了详细的阐述。此垂直搜索引擎可以为搜索手机相关信息的用户提供直观的、快捷的、有效的手机信息搜索服务,验证了这种实现过程的有效性和完整性。

1 Web垂直搜索引擎的实现过程

Web垂直搜索引擎与通用搜索引擎原理类似,都需要从互联网上下载网页、建立索引,响应用户查询。但是垂直搜索引擎可以返回结构化的数据,这些数据经过人工分析与整理再存入数据库中。本文将Web垂直搜索引擎的实现过程分为3 层,分别为:数据准备层、提供查询服务层、前台交互层。这3层可互相独立开发,最终整合到一起形成一套完整的Web垂直搜索引擎。图1 为一种Web垂直垂直搜索引擎实现过程。

1.1 数据准备层

数据准备层的目的是准备用于检索的数据,这些数据最终存放在关系数据库中并建立倒排索引。Web垂直搜索引擎的目的是为用户提供更专业、主题性更强的搜索服务,这种服务与大量主题相关的数据为基础,数据处理分为两个阶段,第一个阶段为采集原始数据,原始数据来自互联网某些主题性较强的、数据来源可靠的网站。原始数据大多是未经处理的无结构网页,这些原始网页无法支持搜索服务并返回给用户查看。第二阶段为数据分析与处理,将原始无结构网页中的数据转换为结构化数据,并将这些结构化数据存储在关系数据库中,这些存储在数据库中数据最终以更加直接的形式展示给用户。然而,关系数据库中模糊查询难以应对海量数据查询,所以需要建立一种面向词汇的数据结构,即倒排索引,以实现毫秒级的查询性能。

数据准备层主要包含以下5个过程:

(1)选择主题信息来源网站和网页

认真选择主题信息来源网站以确保原始数据的可靠性,通常需要遵循以下4 个原则:来源网站没有屏蔽爬虫对网页的爬取;网页内容不是Java Script动态生成的。爬虫不需要模拟浏览器解释脚本去生成网页内容,否则会严重影响爬虫效率;网站中网页URL有统一的风格。这样的URL更容易被爬虫抓取,数据更加准确;选择访问量比较大的知名网站,保证数据源可靠性。

(2)网站和网页内容分析

分析网页的目的是定向抓取网页,在确定主题信息来源网站之后,为了能够准确获取主题数据,需要对网站的URL结构进行分析,找出实际拥有主题信息的一级URL页面,该页面通常拥有该主题下全部子主题的二级URL链接,分析出这些二级URL链接作为种子链接交给爬虫。分析方法主要以人工观测为主,以程序分析为辅。通过观察一级网页URL规律,查看网页源码,再设计抽取二级URL的计算机程序,利用程序自动抽取种子链接。

(3)定向抓取网页

抓取网页的目的是把主题相关的网页下载到本地磁盘。爬虫是一种能够从互联网上自动抓取网页并下载到本地的程序,这种程序的输入是一些URL链接,这些链接也称之为种子,爬虫抓取种子网页的结果是将所有相关目标网页下载到本地磁盘中。

(4)分析并抽取网页内容到本地

将网页中无规则的数据规范地保存到本地文件中,数据保存采取统一的格式,使其能够存入数据库并建立全文索引。

(5)存入数据库并建立索引

格式化的数据不能仅存储在文本文件中,否则提取数据的开销非常大。将数据存储到数据库中,使用数据库统一管理所有数据,这样访问速度与安全性也大大增强。搜索引擎中数据准备过程中最关键的技术就是建立索引,用户查询首先访问的是索引而不是数据库,通过索引查找关键词然后返回结果文档的数据库ID,再到数据库中查找具体记录。

数据准备层的任务集中于数据采集、预处理、数据存储以及索引。这一层的活动对用户不可见,最终的产物是保存主题相关结构化数据的数据库以及这些数据上的倒排索引。

1.2 提供查询服务层

查询服务层首先将用户的查询字符串转换为可识别的对象,并进行预处理,然后发送给相应的查询方法处理,最后返回与查询字符串匹配的数据对象列表。要得到最后的数据对象列表实际经过2 次查询,第一次查询倒排索引得到所有相关文档ID,这次查询的时间复杂度是O(1),因为倒排索引的词典结构多为哈希表。第二次查询将文档ID发送至数据库引擎,根据文档ID查询文档的全部信息,并且将所有查询到的文档以对象的方式返回。

1.3 前台交互层

前台交互层的重点主要是加强用户输入和输出的体验,主要包含两个方面:一是随着用户按键自动弹出提示关键字列表;二是直接展示查询结果详细信息。列表提示功能使用Ajax异步响应,当onkeyup事件发生后,向数据库服务器发送模糊查询SQL语句,将查询结果列表返回给Java Script代码,Java Script修改dom将提示列表展示在搜索框下面。查询结果显示数据要直接,例如查询数码产品的结果中,产品图片和参数直接显示在页面上,技术上同样是利用Ajax技术减少延时来增加用户体验。

2 Web垂直搜索引擎具体实现

下面基于以上实现过程在Java平台上构建查询手机相关信息的Web垂直搜索引擎,构建过程分别按照图1 中的3 层进行实现,并对关键技术和实现原理进行总结和描述。

2.1 数据准备层实现

(1)选择主题信息来源网站和网页。根据选择主题网站的原则,最终确定选择太平洋电脑网(http://www.pconline.com.cn/)作为手机信息数据的来源网站,数据源网站可以有多个。作为一个综合性IT网站,手机频道的一级URL页面为:

http://product.pconline.com.cn/mobile/list.shtml

(2)网站和网页内容分析。通过查看一级URL页面源码,并且分析网站URL链接规律,得出手机信息数据所在的URL地址规格,如下所示:

手机信息:http://product.pconline.com.cn/mobile/品牌/编号.html。

手机图片:http://img.pconline.com.cn/images/prod⁃uct/编号

确定URL规格的目的是为了确定抓取哪些URL规格的页面。获取所有手机品牌的URL链接后将这些链接作为种子,送给爬虫抓取。

(3)定向抓取网页。爬虫的输入是待抓取URL种子链接,而爬虫抓取的结果就是将预定抓取的HTML和图片等资源下载到本地磁盘。本次开发使用开源爬虫框架Heritrix[9],它是一个开源的Java爬虫框架,它保留了各种各样的配置接口用于定制和扩展爬虫的功能,为了能够准确抓取目标资源,从官方文档中了解Heritrix本身运行机制并进行配置和定制。

(4)分析并抽取网页内容到本地抓取到的原始网页和图片不能被直接利用,需要将网页中的有用数据抽取出来并以一定的格式保存起来,这个过程可以称之为结构化数据提取。每一个有效的HTML文件都对应一个txt文件,txt文件的内容和文件名称都有固定的结构。本次开发中将文件名规范为这样的格式:“手机名⁃型号⁃时间字符串.txt”。txt文件的内容格式如下:

结构化提取包含3 个过程:一个是文件的I/O操作,此操作可以使用Java.io包实现;另一个是从HTML网页中提取数据,此操作可以使用开源解析软件实现;第三个过程是对图片进行转存处理,这个过程的目的是将手机信息和图片名称进行映射,新图片名将原图片名经过MD5 编码后得到。HTML元素之间是以分层嵌套的结构组织在一起的,HTML文档的这种结构称为HT⁃ML文档树。本次开发中使用开源HTML解析库Html⁃Parser[10],使用这个库可以方便快速地从HTML网页中提取标签节点,文本节点和和属性节点的值。同样,在开发过程中使用该解析包需要了解其API和调用机制,这些内容来源于官方文档。

(5)存入数据库并建立索引。磁盘中的数据文件是结构化数据,但是仍然不能直接作为查询的直接数据源,其原因在于磁盘I/O速度较慢。故而将这些文件的信息存入关系数据库中,数据库表的字段对应文件内容结构的字段,每一个文件的数据都对应表的一条记录。在查询数据库时按照产品的主关键字(如ID号)查询,查询效率较高。但是用户的查询是若干关键词,实际是字符串格式,如果直接将查询关键词放入SQL语句中,向数据库发送模糊查询匹配关键词,那么对于成千上万的记录来说效率非常低。所以,并不能直接对数据库进行查询关键词的模糊查询,而首先将查询发送给倒排索引进行查询。

倒排索引一种面向词汇的查找结构,通常使用哈希表存储,故查询效率非常高。倒排索引包括两个部分:一个部分是词典;另一个部分是倒排列表。建立索引的过程中,首先要使用分词程序对手机信息文本文件分词建立词典,每个词典项中包含一个指向对应倒排列表的指针,倒排列表由若干倒排项组成,倒排项存储的是包含该词汇的文档属性(文档ID,词频,单词在该文档中出现的位置)。

用户的查询首先由同样的分词程序切割为若干词汇,然后查询词典找出对应倒排列表,按照某种规则对倒排列表进行合并,然后将最后的文档列表ID发送给数据库查询整个文档信息,进而将数据库的返回结果展示给用户。 综上,用户的查询处理过程为:“ 查询索引”→“获取每个相关文档的数据库ID”→“查询数据库”→“返回给用户”。这种查询机制决定了必须先将手机信息存储在数据库,然后建立索引,构建索引和执行查询的机理如图2 所示。

本次开发中使用My SQL数据库存储数据,使用开源Java全文检索工具包Lucene建立索引[11],使用基于词库的字符串匹配分词模式,以正向最大匹配为分词算法,配合极易中文分词组件进行分词。基于词库的分词原理是使用正向最大匹配算法扫描待分词文本,将扫描出的词汇与词库中的词进行比对,按照一定的匹配粒度去判别该词汇是否被切分出来加入索引中,所以分词前必须在原有词库基础上增加主题相关的词汇作为词库的一部分,开发中首先解析所有txt文件名,将所有手机名称和不同的型号解析出来作为词汇单独存储在一个文本文件中,通过简单的配置即可将文件的词汇加入到极易分词的词库中,选用极易分词组件的另一个原因是它实现了Lucene标准分词解析器的接口,从而可以直接整合进Lucene[12]。对于查询字符串必须使用同样的分词程序去分词,以同样的规则切分出待查询词汇,在索引的词典中查询是否存在该词汇,如果存在则返回该词汇对应的倒排列表,否则返回空,对于多词汇查找的处理是根据逻辑运算对倒排列表进行合并后再返回。倒排列表中的文档排序模型是经典的向量空间模型,该模型以文档的TF*IDF值为向量的特征,实际参数可以在Lucene中按需设置。

2.2 提供查询服务层实现

提供查询服务作为一个中间层,在整个搜索引擎中起着非常重要的连接作用,它接收用户的查询字符串并预处理,然后在索引和数据库中查询相关文档并返回给用户。

通过图2 可知搜索模块和分词模块一起提供查询服务,实验中分词模块与建立索引所用分词的模块有相同的配置,而搜索模块承担查询索引和数据库的任务,由Lucene提供的搜索模块实现,开发中这2 个任务分别由2 个方法实现,它们是查询服务类中的2 个方法,查询索引方法的参数是查询关键词对象,返回的是相关文档列表对象,查询数据库方法的参数是整型的文档ID,返回文档对象,如图3 所示。

2.3 前台交互层实现

前台交互是直接面向用户的应用层,为了增加用户在输入和输出上的体验,分别实现2 种功能:一是用户每次敲击按键时都会提示关键词列表;二是结果列表页面上直接展示主要结果,包括图片和其他重要属性。开发中,列表提示的数据来源于已经抽取得到的手机相关词汇,将这些词汇存入My SQL数据库的一张表里,针对该表设计一个查询方法,参数是用户按键后提交的当前字符串,实现机理是向该表发送模糊查询,返回字符串数组(一般规定提示字符串个数不超过10)。

该方法的调用是通过用户触发onkeyup事件,随即以Ajax机制向服务器发送字符串并完成调用,前端通过Ajax代码接收返回的字符串数组作为显示数据,使用Java Script改变dom的方式将这些字符串以列表的方式显示在输入框的下面。当点击搜索按钮后,开始向服务器发送查询,前台交互层与中间层的交互如图3 所示,它们的交互通过Ajax框架DWR来完成,这样有效降低延时,能够明显提高用户体验。用户查询的关键字(query)以及每页的起始索引号(startindex)封装在Re⁃quest对象中,直接通过Ajax发送给查询服务层的Search Service Impl对象的get Search Results方法,该方法返回的Search Results对象包含了相关文档ID的列表,然后将文档的ID作为参数发送给get Search Result By Id方法查询数据库,返回文档全部信息并封装在Search Result对象中,最后将Search Result对象返回到前台展示给用户。

3 结论

实验中多次查询的平均时间在毫秒级,完成了整个Web垂直搜索引擎的设计目标。验证了这种实现过程的完整性和有效性。提出的三层架构面向的是构建主题相关的Web垂直搜索引擎,通过实现查询手机信息的Web垂直搜索引擎来提供一种可操作的实施方案,为成功构建其他面向其他主题的Web垂直搜索引擎提供理论依据和技术参照。整个实现过程利用了Java平台下的优秀开源软件包,包含了可定制爬虫Heritrix、网页解析库HTMLParser、索引及查询工具包Lucene、Ajax框架DWR、Bean容器Spring以及My SQL数据库,这些开源软件为搜索引擎的实现提供了强大的支持,对于这些软件的具体使用方法和过程本文没有详细赘述,而重点讨论了构建搜索引擎的实现过程、技术要点和方法。

由于垂直搜索引擎索引数据本身就是面向主题的,所以检索结果的主题相关度、正确率必然比通用搜索引擎高,而且展示数据的能力更强。纵观现有的研究成果,作者认为未来Web垂直搜索引擎主要的研究方向有以下几个方面:

(1)结构化数据提取自动化。爬虫应该能够自动发现、发掘Web上主题相关的来源网站,并能够自动对网站内容评级,能够实时监控Web主题网站的页面变化并更新本地的页面,通过自动化的爬虫的监控、爬取、抽取与更新操作增强搜索引擎的灵活性。

(2)用户个性化。个性化搜索引擎尽管理论上已经得到发展,但是从理论到实际应用还需要继续研究,搜索引擎应该能够自动识别用户种类、意图,对用户的需求进行精确预测,并对歧义进行自动矫正,重点在推荐系统、相关反馈方面进行完善。

(3)数据可靠性。由于垂直搜索引擎的返回结果大多是领域相关的内容,返回给用户的结果应该对用户负责,在医疗、问答、新闻、学术等领域的返回结果应保证数据来源的准确性,对排名靠前的结果应特别进行自动的审核,保证信息的可靠性。

本文通讯作者为田玉玲。

参考文献

[1]刘天娇,周瑛.浅析近年来网络搜索引擎研究现状:以2001至2010年为例[J].情报科学,2012(8):1192-1195.

[2]王文钧,李巍.垂直搜索引擎的现状与发展探究[J].情报科学,2010(3):477-480.

[3]王斌.从信息检索到搜索引擎[J].产品安全与召回,2009(4):38-43.

[4]BRIN S,PAGE L.The anatomy of a large-scale hypertextual Web search engine[J].Computer networks and isdn systems,1998,30:107-117.

[5]CHAKRABARTIA Soumen,VAN DEN BERGB Martin,DOMC Byron.Focused crawling:A new approach to topic-specific Web resource discovery[J].Computer networks,1999,31:1623-1640.

[6]ALMPANIDIS G,KOTROPOULOS C,PITAS I.Combining text and link analysis for focused crawling:An application for vertical search engines[J].Information systems,2007,32(6):886-908.

[7]CAMBAZOGLU Barla,KARACA Evren,KUCUKYILMAZ Tayfun,et al.Architecture of a grid-enabled Web search engine[J].Information processing&management,2007,43(3):609-623.

[8]LIU Tie-yan.Learning to rank for information retrieval[J].Foundations and trends in information retrieval,2009,3:225-331.

[9]白万民,苏希乐.Heritrix在垂直搜索引擎中的应用[J].计算机时代,2011(9):7-9.

[10]桂林斌.基于Html Parser抽取动态异构Web信息的研究与实现[J].计算机与数字工程,2009,37(7):161-164.

[11]张俊,李鲁群,周熔.基于Lucene的搜索引擎的研究与应用[J].计算机技术与发展,2013,23(6):230-232.

垂直搜索引擎应用研究 篇7

1.1 网络爬虫体系结构

网络爬行是指搜索引擎从网络上查找并搜集网页的过程, 其目标是尽可能快速、有效, 多量的搜集与用户需求相关的有用网页及网页间的链接结构。网络爬虫, 是在H T T P协议访问标准下, 跟随网络链接遍历网络空间信息的程序[1]。一个典型网络爬虫体系结构主要由五个模块组成, 待爬行URLs队列 (URLs Frontier) , DNS解析器, 爬行模块, 解析模块, 是否爬行判断模块[2]。

如图1所示, 网页抓取技术是搜索引擎的重要组成部分, 搜索引擎能够从网页采集资源信息主要靠爬虫的工作。

1.2 基于HMM ( (Hidden Markov Model, 隐马尔可夫模型) 的主题页面抓取策略提出背景

目前通用的抓取策略各有其不足, 基于超链图评价的方法存在“主题漂移”的问题[3], 通常认为, 在爬行主题网页页面抓取过程中, 与主题内容相关的网页就包含着指向相关主题网页的链接。然而这一认知忽略的事实是, 互联网中同样存在这样一种情况:爬虫接触的一级页面可能看似不包含给定主题, 但其二级页面中却有可能包含与给定主题相关度极高的内容或链接, 这样就造成了一些主题爬虫丢失了抓取更多主题相关网页的机会。而启发式主题网页抓取策略同样存在“主题近视”的缺点[3], 即在距离页面集较近时搜索性能良好, 一旦页面信息缺失全局性布局则无法完全完整表现w e b整个信息出现“近视”问题。基于此, 提出了一种基于H M M的主题网页抓取技术。

2 HMM在主题网页抓取中的应用

2.1 基于HMM的主题网页抓取策略

H M M模型, 是马尔科夫链的一种, 因为其状态不能直接观察, 所以叫做“隐”马尔科夫模型。它事实上是由具有一定状态数的隐马尔科夫链和显示随机函数集构成的[4], 如图2所示。近年来H M M的应用范围非常广泛, 而这里主要应用H M M的学习特征, 通过训练, 在了解用户浏览习惯的基础上, 返回令其满意的主题相关页面信息。

依图2所示, 构建基于H M M的主题网页抓取模型:λ= (S, O, A, B, π)

隐含状态S:S={Q0, Q1…, Qn+1}, 该状态集中的每个数据Qi表示到达主题页面一定距离的状态值, 此距离用i表示, i=0时, 表示为主题页面。

可观测状态集合O:O={O1 O2…Om}, 该状态集中的每个数据O i表示隶属模式类别为i的页面。

初始状态概率矩阵π:π={P (Q0) , P (Q1) , P (Qn-1) }, 表示隐含状态在初始时刻t=1时的概率矩阵。

隐含状态转移概率矩阵A:A=[a ij]n×n, 该矩阵描述了H M M各个状态之间的转移概率。

观测状态转移概率矩阵B:B=[b ij]n×m, b ij表示Q i状态生成观察值Oj的概率。

2.2 HMM主题网页抓取方法的具体实现

使用H M M模型进行网页抓取的策略思想是:首先获得用户访问主题相关的网址队列, 由网络地址优先值的高低来确定网络爬虫下一步抓取的网页, 然后判断是否重复下载, 若不重复则通过文本预处理等手段进行网页分析, 用H M M参数进行主题相似度计算, 若主题相关则将该网页页面保存至主题网页库中。具体抓取流程如图3所示。

H M M模型系统主要由用户浏览模式学习模块和主题爬行模块两大模块组成, 具体描述如下:

(1) 用户浏览学习模块

用户浏览学习模块主要由浏览搜集网页阶段和H M M训练学习阶段两个阶段组成。

为便于分析用户浏览过程, 构造如图4所示图形, 颜色节点为目标页面, 其他数字节点为浏览网页, 箭头描述网页引用关系。在浏览过程中, 主要进行网页搜集, 将用户访问主题相关的网页浏览的内容及网址搜集起来, 形成U R L队列。

训练学习阶段, 利用H M M模型训练学习特点, 通过训练集对其参数进行训练。训练集为先前收集的所有浏览过的主题相关网页, 按照k均值的聚类方法, 以目标网页为聚类中心, 构建每个网页的向量空间模型, 得出观察状态集合:{page1 (P2) , page2 (P3) , page3 (P0) , page4 (P1) , page5 (P0) }, 初始时刻t的状态值为经验估计值, 使用Baum-Welch算法对H M M的参数进行优化, 通过不断地迭代, 使各个参数逐渐向更为合理的优化值[5]。这样训练的目的是为了增强模型预测的准确性, 避免抓取用户可能不感兴趣的页面。

(2) 主题爬行模块

在该模块, 使用向量空间模型法对已抓取的页面进行分析, 判断其是否与主题相关。网页内容的相关度计算步骤描述为:首先主题爬虫抓取到网页C后确定一组特定的主题向量;其次经过处理提取C的向量空间模型;最后利用余弦相似度函数计算网页与主题相关度。

其中qi是主题网页的向量空间模型权重;gi是队列中某网页经过预处理后的向量空间模型权重, 其计算公式如下所示:

在公式2.22中, i代表某一词条, fi为i在文档中出现的次数, fd为文档中词的总数, N为文档总数, Ni为所有文档中i出现的次数。i在文档中出现的频率用tfi表示, 逆文档频率表示为idfi。

若网页与主题不相关则公式2.21计算的余弦值小于δ, 否则为相关页面。

在H M M模型中可以用参数预测爬虫爬行时某网页链接指向目标网页的可能性, 公式如下:

在搜索引擎广泛使用的今天, 有关于搜索引擎技术的研究越来越深入, 目前网络爬虫抓取主题页面的应用中存在“主题近视”问题和“主题漂移问题”。本文论述了在此背景下应用基于H M M模型解决这一问题的主题网页抓取技术, 重点讨论了该模型的抓取策略应用过程, 在一定程度上提高了主题页面抓取的精度。

摘要:计算机网络技术的飞速发展, 对于搜索引擎技术也提出了更高的要求。文章主要以垂直搜索引擎的主题网页抓取策略为研究内容, 从提高主题网页抓取的准确度和效率出发, 引入隐马尔科夫模型, 并重点讨论了该模型具体应用策略和过程, 该模型的应用方法不仅分析了网页内容, 还考虑网页上下文链接距离结构, 在一定程度上提高了主题页面抓取的精度。

关键词:HMM,垂直搜索引擎,主题页面

参考文献

[1]NAJORK, MARE, AND ALLAN HEYDON.HighPerforrmance Web Crawling[C].Technical Report173, Compaq Systems Research Centef, 2001.

[2]TOUFIK BENNOUAS AND FABIEN DE MONTGOLFIER.Random Web Crawls[C].In Proceedings of the 16th international conference on World Wide Web (WWW’07) , 2007, 451-460.

[3]彭涛.面向专业搜索引擎的主题爬行技术研究[D].吉林大学.2007.6.2-10

[4]朱克峰.基于隐马尔科夫模型的人脸认证算法研究[D].北京交通大学.2009.

[5]杜世平.多观测序列HMM2的Baum-Welch算法[J].生物数学学报.2007 (04) :685-690

上一篇:南岭隧道光面爆破技术下一篇:急性化脓性甲状腺炎