基于Lucene的语段模糊匹配中文检索系统设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(责任编辑:陈和榜)

浙江理工大学学报,第26卷,第1期,2009年1月

Journal of Zhejiang Sci 2Tech U niversity

Vol.26,No.1,J an.2009

文章编号:167323851(2009)0120109205收稿日期:2008-05-29

作者简介:黄 珏(1982- 

),女,浙江杭州人,助理研究员,主要从事搜索引擎,数字图书馆,软件工程方面的研究。基于Lucene 的语段模糊匹配中文检索系统设计与实现

黄 珏,黄志远

(浙江理工大学科技与艺术学院,杭州311121)

摘 要:为提高图书馆中文信息检索的精确度和有效性,设计了基于L ucene 的语段模糊匹配中文检索系统。其采用了自然语言处理中的词语切分技术,使输入条件可以直接通过自然语言的方式提交,同时针对语段匹配的实际问题情境,设计了一种新的结果有效性判别模型,提高了检索结果相似度的科学性和准确性。经过多次实验结果的统计,搜索结果有效性可提高12%。

关键词:L ucene ;语段;中文检索;有效性判别

中图分类号:TP393 文献标识码:A

0 引 言

信息检索技术在图书馆领域的应用是举足轻重的,然而,当前图书馆用户在检索资料的时候,常常会遇到这样的情况:记得一篇文章或一本书刊中的某段话,却记不清标题、作者、出版社之类的特征信息。凭着对这个语段的记忆,选取某些关键字/词进行查询,又无法快速准确的找到目标答案。个别数字资源自带的搜索引擎具有全文检索功能,允许用户输入一个语段来进行查询,但是查全率和查准率差强人意:要求输入条件与文档内容完全匹配,或者查询结果不能很好地对应用户感兴趣的内容。

首先,基于关键字/词和逻辑表达式的检索方式不能全面地反映用户的需求。由于用户输入的关键字/词之间,往往不存在任何联系,因此检索条件本身无法清晰表达用户的真正含义[1]。

其次,简单的关键字/词匹配,往往输出大量的文档,而真正相关的文本却很少,使得用户耗费很多的时间和精力处理一些不相关的结果。

因此建立一种基于语段模糊匹配的中文检索系统,为用户提供更为细致和有效的帮助是必要的。目前检索系统的开发平台并不多见,本文采用了一个较为实用的检索引擎架构———L ucene ,它结构精巧,功能强大,便于嵌入各种应用。在L ucene 良好的架构之上,本文结合最大正向匹配的中文分词算法,通过对L ucene 评分机制的改进,建立了一个新的文档有效性二次判别模型,设计了一个多维非线性计算函数得到搜索结果的相似度,并对搜索结果按照有效性来进行排序。与现有的图书馆中文检索系统相比,具有以下改进:输入全文中的某个语段(只需基本一致),即可搜索到与之相关的书籍/文章;检索的精度及结果集的有效性较一般检索系统有所提高。

1 基于Lucene 的语段模糊匹配中文检索系统设计

1.1 开放源码的搜索引擎(L ucene )

L ucene 是apache 软件基金会J akarta 项目组的子项目,是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构[2],提供了完整的查询引擎和索引引擎,部分

文本分析引擎

图1 基于L ucene 的中文检索引擎

1.2 基于L ucene 的语段模糊匹配中文检索引擎设计

如图1所示,基于L ucene 的语段模糊匹配中文检

索系统的设计,首先,需要按照目标语言的词法结构来

构建相应的词法分析逻辑,实现L ucene 在org.a 2

pache.lucene.analysis 中定义的接口,为L ucene 提供

本系统所需的中文语言处理能力。L ucene 默认的已

经实现了英文和德文的简单词法分析逻辑(按照空格

分词,并去除常用的语法词,如英语中的is ,am ,are 等

等)。在这里,需要参考实现的接口在org.apache.lu 2cene.analysis 中的Analyzer.java 和To kenizer.java

中定义。其次,需要按照被索引的文件的格式来提供相应的文本分析逻辑,本系统所使用的测试语料库包含t xt 文本、PDF 文档等,通常需要把文档的内容按照所属域分门别类加入索引,这就需要从org.apache.lu 2cene.document 中定义的类document 继承,定义自己的document 类,然后就可以将之交给org.apache.lu 2cene.index 模块来写入索引文件。此外,还需要改造L ucene 的评分排序逻辑。默认的,L ucene 采用其内部的相关性方法来处理评分和排序,采用的是一个线性的简单模型,可以根据需要改变它,这一部分的实现包含在org.apache.lucene.search 中。完成了这几步之后,目标系统的检索引擎就基本上完备了。

2 系统相关算法改进

基于L ucene 的语段模糊匹配中文检索系统采用了自然语言处理中的词语切分技术,使输入条件可以直接通过自然语言的方式提交,无须用户抽取语段中的关键词,同时针对语段模糊匹配的实际问题情境,设计了一种新的结果有效性判别模型,提高了检索结果相似度的科学性和准确性。

2.1 最大正向匹配的中文分词

由于L ucene 默认实现的只有英文和德文的简单词法分析逻辑,众所周知,英文是由空格隔开的单词组成的,每个单词都有自己的意思。由于中文的词汇之间没有空格分开,用L ucene 的分析器无法正确切分中文句子,因此必须添加中文处理所需的样本分词模块,本文采用了最大正向匹配的中文分词算法,词表选择的是人民日报97版的词表。

最大正向匹配的分词算法,即,一个字符串S ,从前到后扫描,对扫描的每个字,从词表中寻找最长匹配[3]。假设对S =C 1C 2C 3C 4…进行正向最大匹配分词,其算法描述如下:

a )取一字C 1,在词表中查找C 1并保存是否成词标记;

b )再取一字C 2,判断词表中是否有以C 1C 2为前缀的词;

c )不存在,则C 1为单字,一次分词结束;

d )存在,则判断以C 1C 2为首的多字词是否存在;

e )如不存在,一次分词结束;

f )否则再取一字C i (i >=3),判断词表中是否有以C 1C 2…C i 为前缀的词;

g )若不存在,则返回最近一次能够成词的C 1C 2…C i -1,至步骤i );

h )否则i =i +1,至步骤f );

i )从字C i 开始,进行下一次分词。

2.2 搜索结果有效性二次判别模型

考虑到L ucene 的文档搜索文本相似度计算是一个线性的简单模型,只适用于普通的文档搜索情况,对本文所涉及的文档数据库搜索有一些不合适[425]。本文中的文档搜索关键字有几个比较明显的特征:首先,在一个文档中如果存在要搜索的关键词,出现的频率越高越合适,但是出现少量次数的时候其搜索相似度应该增长较快,而当出现频率达到较高程度的时候则搜索过滤会认为没有明显的区别;其次,多个关键词同时搜索的时候,每个关键词之间都有相关性,要避免一个关键词出现频率过高而导致整个文档的搜索概率提高

011 浙 江 理 工 大 学 学 报2009年 第26卷

相关文档
最新文档