(责任编辑:陈和榜)浙江理工大学学报,第26卷,第1期,2009年1月Journal of Zhejiang Sci 2Tech U niversityVol.26,No.1,J an.2009文章编号:167323851(2009)0120109205收稿日期:2008-05-29作者简介:黄 珏(1982- ),女,浙江杭州人,助理研究员,主要从事搜索引擎,数字图书馆,软件工程方面的研究。
基于Lucene 的语段模糊匹配中文检索系统设计与实现黄 珏,黄志远(浙江理工大学科技与艺术学院,杭州311121) 摘 要:为提高图书馆中文信息检索的精确度和有效性,设计了基于L ucene 的语段模糊匹配中文检索系统。
其采用了自然语言处理中的词语切分技术,使输入条件可以直接通过自然语言的方式提交,同时针对语段匹配的实际问题情境,设计了一种新的结果有效性判别模型,提高了检索结果相似度的科学性和准确性。
经过多次实验结果的统计,搜索结果有效性可提高12%。
关键词:L ucene ;语段;中文检索;有效性判别中图分类号:TP393 文献标识码:A0 引 言信息检索技术在图书馆领域的应用是举足轻重的,然而,当前图书馆用户在检索资料的时候,常常会遇到这样的情况:记得一篇文章或一本书刊中的某段话,却记不清标题、作者、出版社之类的特征信息。
凭着对这个语段的记忆,选取某些关键字/词进行查询,又无法快速准确的找到目标答案。
个别数字资源自带的搜索引擎具有全文检索功能,允许用户输入一个语段来进行查询,但是查全率和查准率差强人意:要求输入条件与文档内容完全匹配,或者查询结果不能很好地对应用户感兴趣的内容。
首先,基于关键字/词和逻辑表达式的检索方式不能全面地反映用户的需求。
由于用户输入的关键字/词之间,往往不存在任何联系,因此检索条件本身无法清晰表达用户的真正含义[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 2pache.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卷的情况发生,从而使其他关键词对搜索相似度的敏感性降低,甚至存在一个文档中,仅一个关键词起到搜索作用的情况;最后,还要考虑到多个关键词搜索的时候如果各个关键词出现的频率越接近,则其越应该作为较优的搜索结果[6]。
因此,在搜索文档相似度判别的时候在L ucene 搜索结果的基础上建立了一个新的模型,并提出了一个多维非线性函数来计算每个一次搜索结果的相似度,从而可对所有的搜索结果按照有效性来进行排序。
设L ucene 的一次搜索结果中的关键词在文档中的出现频率数值为ω,加入两个经验常数a 和b 。
搜索文本的有效性判别式如下:α=∑nj =1ωa -1j -b ∑n j =1(|ωj - ω|)n-1(1)式(1)中,常数a 用于调整随着关键词出现频率的增加其有效性提高速度的降低程度,如果a 越大则有效性降低速度越快;常数b 用于调整各个关键词出现频率之间的相关性对有效性的影响。
这两个经验常数可根据具体情况进行调整。
下面分别给出有效性计算公式中一维和二维的关键词频率与有效性的函数图。
当a =2,b =0.3时,一维有效性函数图如图2所示;当a =2,b =0.3时,二维有效性函数图如图3所示:有效性二次判别模型查询结果如图4所示,每篇文档搜索结果由几个部分组成:文档路径、L ucene 文档得分(用来作比较)、该文档命中的检索词个数、该文档命中的检索词、命中的检索词出现的次数以及有效性二次判别模型所得的文档分值[7]。
图4 有效性二次判别模型查询结果111第1期黄 珏等:基于L ucene 的语段模糊匹配中文检索系统设计与实现3 应用测试及结果选取5个不同学科领域的文档进行测试,每次测试选用10篇。
以其中一次测试为例:10篇与计算机相关的文档,8篇为t xt 格式,2篇为pdf 格式,内容包括中文分词技术、硬件信息、软件信息等,形式包括文字、表格、图片等,测试结果如下。
3.1 中文分词测试对语料库进行索引操作,分词结果截取一段如图5所示。
图5 分词结果示意图由图5,语段模糊匹配的中文检索系统实现了p df 文本的提取,中文分词器将文档中表格对象的中文内容信息切分为中文语义的词,存入索引。
对于英文单词、数字、电话号码、邮件地址仍作为一个完整的词编入索引。
3.2 结果有效性二次判别模型测试输入查询条件“电脑手机分词”,分词结果“电脑”“手机”“分词”,对索引进行检索,得到与这三个词相匹配的结果集,以及文档分值,与L ucene 比较如表1所示。
表1 有效性判别比较文档名命中词及在文档中的出现次数有效性二次判别模型所得到的文档分值Lucene 的评分机制所得到的文档分值g.txt电脑(6) 手机(3)-15.8184642180195280.7524695h.txt电脑(3) 手机(3)-16.5359031532338320.74803925i.txt电脑(4) 手机(4)-16.0000047683715820.7198012c.txt分词(24)-91.901028334563050.15122233adobe 2dealer.pdf 电脑(4) 手机(1)-17.0000047683715820.04723695 由表1可知,有效性二次判别模型所计算的文档分值与L ucene 的评分机制所计算的文档分值,有某些明显的区别:h.t xt 文档中,“电脑”和“手机”均出现了3次;i.t xt 中,“电脑”和“手机”均出现了4次。
lucene 的评分机制认为,h.t xt 的文档得分应高于i.t xt ,有效性二次判别模型结论相反。