基于lucene的中文全文检索系统的研究与设计

steven2016

贡献于2016-07-07

字数:0 关键词: Lucene 搜索引擎

- 5083 - 0 引 言 目前,Lucene 作为世界上最流行的开源全文检索工具包 已经在许多搜索引擎技术项目中得到了广泛的应用和研究。 它提供了灵活的 API 函数接口和可以定制的数据存储结构, 可以方便的嵌入到各种应用中,以实现具体的全文检索系统, 利用灵活的API接口,可以比较容易的实现对Lucene的扩展。 很多 Java 项使用了 Lucene 作为其后台全文检索引擎,例如 Eclipse 强大的 IDE 工具全文检索部分,Jive:Web 论坛系统,以 及 Conoon:基于 XML 的 Web 发布框架。图 1 给出了典型的 基于 Lucene 内核的检索系统结构。在使用 Lucene 构造基于 中文网页的检索系统[1]时,由于中文语言与英文语言在体系以 及结构上的差别,将信息检索应用于中文信息资源处理时,需 要采用与处理英文信息不同的方法来处理中文信息。因此, 构建中文搜索引擎需要针对中文的特点对基于Lucene的检索 系统做相应的改进使其更好的支持中文的检索。 本文提取了一个基于中文的 Lucene 检索系统,针对中文 的特点对系统进行了优化设计,同时,在搜索结果的处理和显 示上采用了聚类的方法,使系统具有良好的显示界面,体现了 人性化的设计理念。 1 系统设计 1.1 设计方案 如图 2 所示的系统结构图,系统采用结构化设计,各个模 收稿日期:2007-10-15 E-mail:sunxin1000@163.com 作者简介:索红光 (1966-),男,山东东营人,博士,副教授,硕士生导师,研究方向为人工智能、中文信息处理; 孙鑫 (1981-),男,山东 淄博人,硕士研究生,研究方向为 Web 智能、搜索引擎。 基于 Lucene 的中文全文检索系统的研究与设计 索红光, 孙 鑫 (中国石油大学 (华东) 计算机与通信工程学院,山东 东营 257061) 摘 要:提出了一种基于 Lucene 的中文全文检索系统模型。通过分析 Lucene 的系统结构,系统采用了基于统计的网页正文 提取技术,并且加入了中文分词模块和索引文档预处理模块来提高检索系统的效率和精度。在检索结果的处理上,采用文 本聚类的办法,使检索结果分类显示,提高了用户的查找的效率。实验数据表明,该系统在检索中文网页时,在效率、精度和 结果处理等方面性能明显提高。 关键词:全文检索; 网页正文提取; 中文分词模块; 索引文档预处理; 文本聚类 中图法分类号:TP393 文献标识码:A 文章编号:1000-7024 (2008) 19-5083-04 Research and development of Chinese full text search engine based on Lucene SUO Hong-guang, SUN Xin (College of Computer and Communication Engineering, China University of Petroleum (East China), Dongying 257061, China) Abstract:A system model for Chinese full text search engine based on Lucene is proposed. In order to improve the performance of Lucene system in searching Chinese web pages, the technique of web page text extraction based on statistics, Chinese word segmentation module and documents for indexing pretreatment module are added into the system by analyzing the structure of Lucene. In order to im- prove the efficiency of searching information people needed, document clustering is applied in processing the searching results. The ex- perimental results show that the proposed system can effectively improve the performance of the Chinese full text search engine system. Key words:full text search; web page text extraction; Chinese word segmentation; documents for indexing pretreatment; document clustering 2008 年 10 月计算机工程与设计 Oct. 2008 第 29 卷 第 19 期 Vol. 29 No. 19 Computer Engineering and Design 图 1 基于 Lucene 内核的典型检索系统结构 Index Index Documents Search Index Gather Data File Syetem DB Web User Manual Input Get Users' Cuery Present Search Results L u c e n e A p p l i c a t i o n - 5084 - 块通过出口和入口连接在一起。根据系统功能可分为 5 个模 块,每个模块完成相应的功能,为了完善系统的功能,只需要 对模块进行更新和移植。 1.2 网页预处理模块 1.2.1 网页正文信息抽取 一个网页中的内容可以分为两类,一类是提供给浏览器 用的标记信息,另一类是提供给用户阅读的信息 。从内容上 分,一个网页一般是由导航信息、网页正文、广告信息、版权信 息、相关链接等部分组成的。如果直接对网页建立索引,会使 索引变的混乱和冗余,从而使检索结果的精度降低。由于真 正对用户有用的是网页的正文信息,因此需要采用正文提取 技术将正文取出来。 我们采用基于统计的方法来实现中文网页中正文信息的 抽取[2]。根据网页中的 HTML 标记,把网页表示成一棵树。由 于网页结构的复杂性,在表示成树之前需要对网页进行清洗, 填补不完整的 HTML 标记,修正嵌套不正确的标签。 从第一步得到的树中选择包含正文信息的节点。对大量 的网页进行观察统计可知,网页中除去正文,其余的文本大部 分是超链接标记间的内容。主题网页中的正文通常是用成段 的文字来描述的,中间通常不会加入大量的超链接,超链接所 占的比例很小,而包含非正文信息的 table 中超链所占的比例 大。因此,利用 table 中的超链接内容与整个 table 内容的比例 来定位包含正文的 table。经过试验统计,最终将该比值定为 0.3。即该比值小于 0.3 的 table 结点就作为候选结点,而比值 大于 0.3 的 table 结点就认为是不包含网页正文的 table 结点。 在网页预处理模块中,采用这种方法来提取网页的正文信息。 1.2.2 中文分词模块 在 Lucene 中,分析器位于索引和文本资源之间,进入索 引库的文本资源都要经过分析器的分析,以此在来控制索引 中的内容。一个标准的分析器由两个部分组成,一部分是分 词器,被称为 Tokenizer;另一部分是过滤器,被称为 Token- Filter。分析器就是对文本资源进行切分,将文本按规则切分 为一个个进入索引的最小单位,过滤的功能则是对这种最小 单位进行预处理。因此,无论什么格式的数据源,只要能转化 为文字的形式,Lucene 都利用分析器进行切分和过滤,从而对 数据做索引和搜索。 为了使 Lucene 更好的支持中文的处理,需要使分析器对 中文文档进行真正意义上的分词处理。通过分析 Lucene 语言 分析器的结构,首先构造中文分词模块[3],再将模块嵌入到Lu- cene 的 jar 包中。网页预处理模块需要调用中文分词模块对 提取的网页正文信息进行分词处理。分词并且标注词性后的 正文需要进行进一步的文档预处理。 1.2.3 索引文档的预处理 由于中文语言中词的数量远远大于汉字的个数,而且,随 着文档数量的增加,大量的新的词语也不断的加入词库,词库 将会越来越大。如果直接将网页的正文进行索引,分词索引 的词条数量会远远大于字索引中字的数量。这种方式建立的 索引就变成了冗余复杂的词与字的混合索引,索引中词条的 数量不可控制,降低了搜索的精度。因此,在将提取的网页正 文分词并且标注词性后,首先对其进行索引文档的预处理。 网页正文预处理的算法描述如下: (1)对文档分词后,标注词性; (2)提取文档中名词、动词和形容词; (3)对选取的词统计词频;如果索引的文档大于 10 篇跳转 到(5),索引文档小于 10 篇进行下一步; (4)选取词频排名前 50~100 的词作为文档的特征词,根据 对系统精度的要求来具体确定选取的词的个数; (5)计算每个词的TF*IDF值[4],并根据TF*IDF值对这些词 进行降序排列,选取排名前 50—100 个词作为文档的特征词; (6)将选取的特征词以及它的阙值信息来构建字符串代替 文档建立索引。 对文档预处理后,文档由特征词向量来表示,过滤掉了文 档中无关文档意义的字和词,大批量文档建立索引时,可以有 效的控制索引中词条的数量,优化了索引,达到了提高搜索精 度的目的。根据以往的实验,对于普通的网页文档,50~100 个 特征词可以有效的表示一篇文档的特征,在保证精度的基础 上,可以通过增加特征词的数量以及选择更多的词性来提高 相应的结果召回率。 网页预处理模块的输出就是网页正文通过预处理后形成 的特征词字符串,索引模块对这些特征词字符串进行索引。 1.3 索引的设计 在Lucene中,索引(index) 由段(segment) 组成,段(segment) 由记录 (document) 组成,记录 (document) 由域 (field) 组成,域 (field)由字符串(term)组成。例如,一个网页是一条记录,网页 的正文,标题便是一条记录的两个域 。针对系统的特点来设 计索引的各个域。如表 1 所示。 为了便于对搜索结果进行聚类排序和处理,网页的信息 分为 5 个域来记录,其中,标题,正文,URL,是为了检索结果 可视化的需要,而分词标注的正文是聚类模块的数据输入。特 图 2 系统结构 聚类模块 检索模块 索引文件 网页 网页处理模块 网页正文提取 文档预处理 关键词提交 结果显示 主界面 索引模块 表 1 索引域的设计 域 字段类型 是否分词 是否索引 是否存储 网页正文 网页标题 URL 分词正文 特征词 Field.Keyword Field.Text Field.UnStored Field.UnStored Field.Text 否 是 否 否 是 否 是 否 否 是 是 是 是 是 是 - 5085 - 征词字符串与标题是真正需要切分,统计和索引的内容。 1.4 结果的处理 1.4.1 结果聚类 在处理检索结果时,随着搜索结果数量的增加,同时增加 了用户查找所需信息的难度。因此,我们将文本聚类应用于 Web信息检索结果的可视化输出以方便用户查找所需的信息。 文本聚类的算法采用改进的 k-means,即当 k-means 算法 无法进行时,对其聚类的结果,根据目标函数值的改变作再次 划分后,继续k-means迭代,以使其能够跳出某个局部极值,拓 展搜索范围。算法的迭代次数进行自动修改,通过实验,采用 F 度量方法,可以发现,改进后的算法性能优于原始的 k- means。理论分析和实验结果表明修改后的算法能有效的提高 聚类的质量,且计算复杂度仍与数据集文档总数呈线性变化。 1.4.2 可视化界面的设计 将检索结果聚类后,需要将这些结果通过可视化的界面呈 现给用户,使用户可以很快的查找到所需信息的类簇,从而进 一步找到所需的信息。这种显示检索结果的方法的效率要明显 优于通过某种算法对检索结果进行排序后呈现给用户的方式。 可视化界面的设计如图 3 所示,在界面的左侧显示聚类 的类簇,我们采用类簇的中心点网页的特征词来描述这个类 簇的特征,这样可以使用户不必浏览所有的摘要,就能找到所 需信息的类簇。界面的右边是用户选择的类簇里特定数量的 检索结果。通过实验可以发现,一般将结果聚为 5—7 类可以 满足用户的需要。 2 性能分析与评价 选取各个主题的 100 00 个网页作为实验语料。采用 3 种 不同的方法建立索引:A1:采用 Lucene 内部的单字切分标准 分析器来建立索引;A2:只添加中文分词模块来建立索引;A3: 添加中文分词模块和索引文档预处理模块建立索引,采用 50~100 个特征词来替代文档。 中文分词模块由中科院分词API(具有标注词性的功能)来 构造。关闭网络和多余进程以减少操作系统对搜索的影响。 选取 10 个不同主题的关键词分别对 3 种索引进行搜索。由于 75%的汉语常用词是由两个汉字组成的[4],采用双字的关键词, 并且保证 A2 和 A3 的词条中存在这些关键词。对 10 个关键词 采用依次测试,每个关键词在 A1,A2,A3 中搜索的结果数量。 在图 4 中,A4 表示对于给定的关键词{ K1,K2,K3… K10} 基于文章主题人为划定的文档集合{D1,D2,D3…D10} 的分别 包含的文档数目,我们用A4 作为测定 3 类索引检索精度的标 准,从图中可以看出A3 的曲线与A4 相吻合,由于在A1 中,索 引包含的词条为单个汉字,因此很多不相关的内容也会被搜 索出来。A2 由于索引中冗余词条以及单个汉字的干扰,它的 精度不够理想。比如,在搜索“人民”这个关键词时,如果一篇 文章中,含有“人”和“民”这两个汉字而不含有“人民”,也会被 认为是相关文档而被检索,这种情况对于A1 和A2 来说,是经 常存在的。A3 有效的避免了这种情况的发生,它只会把含有 “人民”这个关键词的文档检索出来。同时,由于索引文档预 处理模块对文档的预处理,如果文档中仅含有“人民”而关键 词与文档的主题没有关系,也不会被检索出来。因此,A3 有 效提高了系统的检索精度。 将改进的k-means算法程序实现后设计成聚类模块,模块 的入口是将网页正文分词标注词性后形成的字符串,而不是 正文的特征向量,因为根据以往的研究和实验表明的实验表 明 [6],与人们的常规认识相反,并不是将所有的惟一词都作为 特征空间,其聚类效果就最好。当选择 1%的高频词时,聚类 效果反而最好。每篇文档只保留 50~100 个词可以基本满足聚 类的需要,而不会对聚类的结果发生影响。用聚类评测标准 F-measure 值比较 k-means 和改进 k-means 算法。从图 3 中可 以看出,改进的算法在整体是优于原始 k-means 算法的。 系统中的中文分词模块和网页预处理模块使得在处理 中文网页时有了较高的精度。通过聚类模块的处理以及采 用单独设计的界面来显示搜索结果,区别于采用特定的算法 来提升搜索结果的排名的方法。使搜索结果的处理得到了 整体的优化。 3 结束语 通过针对中文的优化设计,使系统在处理中文网页时,不 但在精度方面都有明显的提高,而且由于采用了聚类方法和 独立设计的结果显示界面,使系统具有了良好的人机接口。该 系统可以应用到搜索引擎,企业网站站内检索,个人用户桌面 搜索引擎,特定文档检索数据库建立等。另外,通过添加信息 抽取模块,也可构造专门针对某个领域的专题搜索引擎。在 今后的工作中,通过改进分词模块的精度,加入未登录词识别 模块,以及改进改进特征词向量的构造方法,可以进一步检索 图 3 可视化界面设计 第 I 类簇内的 M 条记录 第 1 类簇特征词 第 2 类簇特征词 第 I 类簇特征词 第 N 类簇特征词 图 4 A1,A2,A3 对 10 个关键词检索结果数量 K1 K2 K3 K4 K5 K6 K7 K8 K9 K10 A1; A2; A3; A4 图 5 聚类效果的比较 文本对象的数目 传统 k-means; 改进的 k-means 1 0.5 0 F - m e a s u r e 5 0 1 5 0 2 0 0 3 0 0 4 0 0 5 0 0 7 5 0 1 0 0 0 2 0 0 0 3 0 0 0 - 5086 - 系统的性能。 参考文献: [1] 郎小伟,王申康.基于 Lucene 的全文检索系统研究与开发[J]. 计算机工程,2006,32(4):94-99. [2] 孙承杰,关毅.基于统计的网页正文信息抽取方法的研究[J].中 文信息学报,2004(5):18-22. [3] 向晖, 郭一平, 王亮. 基于 Lucene 的中文字典分词模块的设计 与实现[J].现代图书情报技术,2006(8):46-50. [4] Zhang Yuletide, Zhang Tao, Chen Shijie. Research on Lucene- based English-Chinese cross-language information retrieval[J]. Journal of Chinese Language and Computing,2005,15(1):25-32. [5] 刘远超, 王晓龙, 徐志明, 等. 文档聚类综述 [J]. 中文信息学报, 2005(3):55-62. [6] 2005 年 863 信息检索测评哈尔滨工业大学信息检索研究室 技术报告[EB].http://www.863data.org.cn/,2006. [7] 胡骏,李星.校园网信息资源搜索引擎的研究与实现[J].计算机 工程与设计,2006,27(24):4629-4634. 格式、新型密码算法(如 AES)。实际运行的 Non-SET 支付系统 所需的数字证书功能利用 CFCA 或第三方 CA 提供的二次开 发包开发而成 [1-2];我们基于 OpenSSL 自行开发设计了一个微 型 CA 系统,进行证书的颁发和管理等。该微型 PKI/CA 认证 系统,提供身份认证、访问控制、机密性和不可否认等服务;以 OpenSSL 开发包作为密码算法的基础,在实现中采用了混合 式 PKI 信任模型,着眼于 Web 方式自动管理、双重密钥对 (用 于数字签名/验证的签名密钥对和用于数据加密/解密的加密 密钥对)的提供、证书管理的数据库化和证书状态的实时查询 等关键技术。整个认证系统的功能模块由用户功能模块和系 统功能模块组成。其中用户功能模块包括:用户注册、证书申 请、证书查询、证书下载、证书撤消、证书验证、CRL下载、密钥 更新和密钥恢复。系统功能模块包括:CA 初始化、证书签发、 CRL 发布和交叉认证。 2.4 安全代理 应用安全增强的 SSL 协议的主要载体是安全代理,安全 代理分为 Client 端代理和 Server 端代理两大部分。Client 代理 和 Server 端代理应用于不同的环境,与不同的应用程序交互, 这使得它们的运行流程稍有不同,但这种差异仅仅在于对转 发请求的目标地址的确定。在 Client 客户端需要从浏览器的 请求数据(HTTPS 请求)中取出请求的 URL 地址,以便确定请 求转发的地址;而 Server 端代理则不需要从接收到的数据中 获取转发地址,它主要通过地址映射确定转发请求的目标地 址,即通过接收请求的端口和目标地址之间的映射表来实现。 3 结束语 我们的系统相对目前运行中的 Non-SET 支付系统,安全 性大大提高,能够抗目前已知的安全攻击。安全性提升主要 靠以下技术来保证:①融合支付协议以牺牲少量代价换得SET 最小核心协议具备的功能:数字签名、双重数字签名、多方认 证,并对 SSL 协议进行了安全增强;②安全增强的 SSL 协议不 但免除了国外对密码算法的出口限制,还无缝集成了 AES 等 新型高强度密码算法;③安全增强的 SSL 协议无缝集成了基 于 AES 算法构建的高安全散列算法,有助于解决破译的 MD5 等散列算法导致的安全隐患;④巧妙设计的、高安全的SSL安 全代理和电子钱包。 参考文献: [1] 邱卫东. 安全电子支付技术的研究 [D]. 上海: 上海交通大学, 2001. [2] 张传武,彭启踪,沈野樵,等.安全支付网关技术研究与系统实现 [J].系统工程与电子技术,2002,24(3):84-86. [3] 林松.电子支付安全体系结构的研究与实现[D].成都:四川大 学,2005. [4] 梁晋.电子商务中安全电子交易技术的研究[D].西安:西安交 通大学,2000. [5] William Stallings. Cryptography and network security: Princip- les and practices [M]. 4th ed. Englewood Cliffs, NJ: Prentice Hall Press, 2006. [6] OpenSSL 0.9.8[EB/OL].http://www.openssl.org. [7] Eric Esescorla. SSL 与 TLS[M]. 崔凯,译.北京:中国电力出版 社, 2002. [8] MasterCard & Visa. SET secure electronic transaction specifica- tion[Z]. Formal Protocol Definition, Version 1.0,1997. [9] Preneel B.Analysis and design of cryptographic Hash functions [D]. Belgium: Katholieke University Leuven,1993. (上接第 4966 页) [4] Berzuini C,Best N G,Gilks W R,et al.Dynamic conditional inde- pendence models and Markov chain Monte Carlo methods[J]. J Amer Statist Assoc,1997,92:1403-1412. [5] Bolic' M,Djuric' P M,Hong S.Resampling algorithms for par- ticle filters: A computational complexity perspective[J].EURA- SIP J Appl Signal Process,2004,15:2267-2277. [6] Fearnhead P.Sequential Monte Carlo methods in filter theory[D]. Oxford,UK:Merton College,Univ Oxford,1998. [7] Gordon N J,Salmond D J,Smith A F M.A novel approach to non- linear and non-Gaussian Bayesian state estimation[C].Proc Inst Elect Eng F,1993,140:107-113. [8] Ristic' B,Arulampalam S,Gordon N.Beyond the Kalman filter: Particle filters for tracking applications[M]. Norwell, MA: Ar- tech House,2004. (上接第 5082 页)

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档