首页 > 范文大全 > 正文

基于Lucene的语义搜索引擎设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于Lucene的语义搜索引擎设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:该文在开源全文搜索引擎Lucene的基础上设计了一个结合本体与自然语言处理技术的语义检索系统。系统分析了如何对文本进行语义分析,设计了语义索引项以存储语义信息,并提出了使用语义信息的网页排序算法。

关键词:本体;语义网;自然语言处理;信息获取

中图分类号:TP393 文献标识码:A文章编号:1009-3044(2008)32-1197-03

Lucene Based Semantic Search Engine Design

YU Xiao-Shun

(Department of Computer Science & Technology, Tongji University, Shanghai 201804, China)

Abstract: This paper designs a semantic information retrieval system based on the open source full text search engine: Lucene. It combines ontology and natural language processing technology. It analyzes how to comprehend web page semantically, designs a semantic index, and proposes a semantic sorting algorithm.

Key words: ontology; semantic web; natural language processing; information retrieval

1 引言

如今,Web页面每天爆炸式的增长,用户想找到需要的信息已经变得很困难。目前的Web信息检索方法主要是基于内容分类目录和基于关键词搜索的。目录分类常见于一些门户网站(如Yahoo!等),主要是通过相关链接获得一些浅层信息。基于关键词搜索是把用户的查询请求和Web页面、文档中的每一个词进行比较,只要发现某个网页中含有这个关键字符,就将该网页作为查询结果返回给用户。因此,目前信息检索的查全率(Recall,也称召回率,即被找到的信息/全部所需要的信息)和准确率(Precision,即有用的信息/全部查询结果)难以令人满意。究其主要原因,是因为对计算机而言,关键词几乎没有任何语义,计算机不理解Web页面中词语表达的语义及其相互关系,因此检索的性能还是难以得到本质的提高。

语义检索是把信息检索与人工智能技术、自然语言处理技术相结合的检索技术。它从语义理解的角度分析信息对象与检索者的检索请求,是一种基于概念及其相关关系的检索匹配机制。

对于语义分析技术来说目前正在研究的有多种方法。语义网[2]技术是其中一种,它旨在赋予网页机器可以理解的语义。在现在的语义万维网的研究中,机器可理解的语义是通过用本体对数据进行定义、用标准的RDF或OWL语言进行表示、并用逻辑推理的方式进行处理来实现的。这里的核心在于本体。本体是一个来源于哲学领域的概念,它是指关于存在及其规律的学说,后来被引入人工智能领域。一个广为接受的在人工智能领域中关于本体的定义是:本体是一个关于概念化的明确的规格定义。本体把一组需要处理的概念以及概念之间关系进行了严格的逻辑定义。机器因而可以根据这些逻辑定义对概念和关系进行有意义的处理和推理,从而达到机器“理解”了概念和关系符号的目的。自然语言处理技术领域对于文本的语义分析也正在如火如荼的展开。

在信息检索技术方面已经取得很大进展,著名开源搜索引擎lucene为研究者提供了一个很好的基础架构。

本文尝试Lucene的架构基础上,使用自然语言处理中的词类标注技术以及语义网技术进行信息处理,同时相应适当改变Lucene原有的索引结构,从而形成一个具有初步语义信息分析能力的语义信息检索系统。

在接下来的第二部分中将首先介绍本系统的整体架构,而后在第三部分讲述如何对网页信息进行语义分析,在第四部分讨论生成的语义索引的结构。第五部分描述网页排序算法,最后在第六部分对全文进行总结。

2 系统整体结构

本文设计的语义信息检索系统的架构如图1所示。

系统首先对Web页面进行语义分析。在这个过程当中将使用词类识别技术及本体技术,中间结果将以owl文件形式表示。而后按照语义索引的格式将语义分析后的页面文件转化成索引文件从而形成系统真正需要的索引。在检索方式上依然采用关键字方式的查询。

3 文本语义分析

对于信息检索系统来说信息处理是整个系统最核心的部分。在Lucene中只是简单的将网页内容分词,得到了最基本的信息处理单元,但是网页中大量的语义信息并没有能够被系统表示出来,因而在后续的检索中也无法从语义层面进行检索。在本文描述的系统中尝试引入了自然语言处理技术以及本体技术对网页进行语义分析,本节具体讲述如何进行该步。总体的流程如图2所示,总共分三个步骤:

1)文档预处理

Web页面通常含有很多用户不关心的信息,如广告链接、图像、版权信息等,通常称作为噪声。在建立索引之前,需要将网页进行清洗,去掉这些噪声。

2)词类识别

使用自然语言处理中的词类识别技术给词语添加词类信息,比如原本网页中有句话:“我的电脑坏”了,那么经过词类识别之后就可以得到信息:“我/PN,的/DEG,电脑/NN,坏/VA,了/AS”。将原来的词语序列分割成了5个部分,并分别标注上了词类。而后将该结果转化成语义网中的owl格式,这样做既有利于后续处理,同时与本体推理需要的文件格式相符。

在转化过程中将每一个分割出来的部分作为一个概念这样形成一个层次的概念,比如上文中词类分析后可以提取出“我,的,电脑,坏,了”5个概念,每个概念在文中的一次出现作为该概念的一次实例,每个实例以它在正文中出现的位置为名字,那么就可以形成“我(#0),的(#1),电脑(#2),坏(#4),了(#5)”。而后转化成owl格式就可以形成

<rdf:RDF>

<owl:Ontology rdf:about=""/>

<owl:Class rdf:ID="我"/>

<owl:Class rdf:ID="的"/>

<owl:Class rdf:ID="电脑"/>

<owl:Class rdf:ID="坏"/>

<owl:Class rdf:ID="了"/>

<电脑 rdf:ID="#2"/>

<坏 rdf:ID="#4"/>

<了 rdf:ID="#5"/>

<的 rdf:ID="#1"/>

<我 rdf:ID="#0"/>

</rdf:RDF>

而词类作为另一个层面的概念可以按照同样的方法实例话,那么就可以形成如下的文件片断:

<rdf:RDF>

<owl:Ontology rdf:about=""/>

<owl:Class rdf:ID="PN"/>

<owl:Class rdf:ID="DEG"/>

<owl:Class rdf:ID="NN"/>

<owl:Class rdf:ID="VA"/>

<owl:Class rdf:ID="AS"/>

<NN rdf:ID="#2"/>

<VA rdf:ID="#4"/>

<AS rdf:ID="#5"/>

<DEG rdf:ID="#1"/>

<PN rdf:ID="#0"/>

</rdf:RDF>

两者合并,生成文件“/sample1.owl“,作为词类识别处理部分的最终输出。

3)本体推理

本体是基于本体的语义检索系统的另一重要部分。它是领域内背景知识的良好表达,通过它可以对已经形式化的实例信息进行推理从而添加更多地语义信息。作为示例本文可以引入简易的电脑本体,其内容如图3所示。

在该本体中定义了与电脑有关的6个概念,以及他们的上下位关系,那么通过它可以对第二步词类识别产生的实例信息进行推理。

在上步产生的实例信息中有这样一条:

<owl:Class rdf:ID="电脑"/>

<电脑 rdf:ID="#2"/>

定义了“电脑”这个概念有一个名为“#2”的实例。在简易电脑本体中存在这样一条公理:

<owl:Class rdf:ID="计算机">

<owl:equivalentClass>

<owl:Class rdf:ID="电脑"/>

</owl:equivalentClass>

</owl:Class>

语义是说“电脑”这个概念与“计算机”这个概念是相等的。那么两个结合就可以推理得到一条新的陈述

<计算机 rdf:ID="#2"/>

经过该步骤之后最终形成了语义分析的结果。

4 索引结构

在对文本进行语义分析之后,下一步就是利用这些信息生成索引。其基本思想是采用类似lucene的反向索引格式。反向索引是一种以索引项为中心来组织文档的方式,每个索引项指向一个文档序列,这个序列中的文档都包含该索引项。相反,在正向索引中,文档占据了中心的位置,每个文档指向了一个它所包含的索引项的序列。你可以利用反向索引轻松的找到那些文档包含了特定的索引项。在lucene中,最核心的索引文件包括三个:

1)索引项信息文件

这是索引文件里面最核心的一个文件,它存储了所有的索引项的值以及相关信息,并且以索引项来排序。

2)频率文件

这个文件包含了包含索引项的文档的列表,以及索引项在每个文档中出现的频率信息。如果lucene在索引项信息文件中发现有索引项和搜索词相匹配。那么 lucene 就会在频率文件中找有哪些文件包含了该索引项。

3)位置文件

这个文件包含了索引项在每个文档中出现的位置信息,你可以利用这些信息来参与对索引结果的排序。它们的关系如图4所示。

在进行语义分析之后,系统得到的信息比标准的lucene索引结果多了一个词类,因此,需要修改lucene索引结构,在位置文件中多加入一列信息:词类。即将位置文件改称如下表1所示:

5 排序算法

本节讲述在接收用户搜索条件后,系统如何处理并返回检索结果。

对于搜索引擎来说检索需要完成两个工作,首先找到相应于检索条件的文档集合,而后要对该集合进行排序。

对于检索文档集合可以通过索引项文件中的频率文件指针找到频率文件,而后可以在频率文件中得到文档集合。

对于排序在lucene中是使用基于频率的评价标准的,具体的计算方法如式1所示:

式1文档排序公式其具体解释如下表2所示:

通过该公式就可以得到每个文档的得分,从而对文档集合进行排序。

在进行语义分析之后,系统除了频率信息,还可以得到每个索引项在文中扮演的角色即词类。因此可以通过该信息对上面的计算方法进行改进从而提高查准率。

首先,对于用户输入的查询,也同样做词类分析,得到待查询索引项及其词类。而后将排序公式修改如下:

式2语义文档排序公式相较于先前的公式,该公式将因子f(tind)修改成了ptf(tind),它代表索引项t在文档d中以与查询中相同的词类出现的频率。相较于原来公式的索引项t在文档d中出现的频率可以更准确地反映文档的相关度。该值可以通过扩展的频率文件中的POS字段得到。

6 结束语

语义检索是把信息检索与人工智能技术、自然语言处理技术相结合的检索技术,它从语义理解的角度分析信息对象与检索者的检索请求,是一种基于概念及其相关关系的检索匹配机制。本文尝试在开源搜索引擎Lucene的基础上设计了一个语义检索系统。该设计首先通过使用第三方词类分析软件对文本进行分析从而将文本语义化。而后设计了语义索引结构以存储语义信息。最后在Lucene原有的排序算法基础之上提出了使用语义信息的排序算法,以期提高查全率和查准率。

参考文献:

[1] Baader F, Calvanese D, McGuinness L, Nardi D, Fpatel-Schneider P, The Description Logic Handbok Theory, implementation and applications[M].2nd Edition.London:Cambridge University Press,2007.

[2] Eric H, Otis G, Lucene in Action[M], Oreilly&Associates, Manning Publishing, 2004.

[3] Jena.A Semantic Web Framework for Java[EB/OL].[2008-08-29]./.

[4] Laclavik M, Seleng M, Gatial E et al..An Ontology - Based Application to Detect, Annotate and Search Web Documents: First results[J].Jawad Bin Husain,2004.

[5] Baeza-Yates R, Ribeiro-Neto B. Modern Information Retrieval[M].北京: 机械工业出版社, 2004.