软件工程毕业设计(论文)基于opencms的中文搜索研究.doc
《软件工程毕业设计(论文)基于opencms的中文搜索研究.doc》由会员分享,可在线阅读,更多相关《软件工程毕业设计(论文)基于opencms的中文搜索研究.doc(34页珍藏版)》请在三一办公上搜索。
1、论文题目: 基于opencms的中文搜索研究 学 院: 计算机与信息学院 专业年级: 软件工程 学 号: 姓 名: 指导教师、职称: 2012 年 5 月 Research Simplified Chinese Search Module Base On OpenCms College: Computer and Information Science Specialty and Grade: SoftWare Engineering , 2008 Number: 081181064 Name: Wang Feifei Advisor: Professor Chen Changjiang Su
2、bmitted Time: May, 2012 目 录中文摘要IAbstractII1引言12论文背景23实际分析33.1OpenCms中搜索的现状33.1.1、OpenCms现状33.1.2、OpenCms隐患33.2目前可用开源搜索引擎的分析和筛选43.3优化成中文搜索引擎的步骤43.3.1、中文搜索引擎43.3.2、中文搜索难点53.4中文分词算法的分类的筛选53.4.1、字符串匹配分词53.4.2、理解分词方法63.4.3、统计分词方法63.5中文分词中的难题73.5.1、歧义识别73.5.2、新词识别83.5.3、应用现状83.6可以嵌入OpenCms项目中的中文搜索工具的筛选83.
3、6.1、StopAnalyzer93.6.2、StandardAnalyzer93.6.3、SimpleAnalyzer93.6.4、WhitespaceAnalyzer93.6.5、KeywordAnalyzer93.6.6、CJKAnalyzer93.6.7、ChineseAnalyzer93.6.8、PerFieldAnalyzerWrapper103.6.9、IKAnalyzer103.6.10、JE-Analysis103.6.11、ICTCLAS4J103.6.12、Imdict-Chinese-Analyzer103.6.13、Paoding Analysis103.6.14、M
4、MSeg4J103.6.15、IKAnalyzer113.6.16、Paoding(庖丁解牛分词)113.6.17、MMSEG4J113.6.18、盘古分词123.7嵌入OpenCms项目的中文搜索引擎的注意事项144解决方案204.1分析OpenCms代码构架204.2分析OpenCms代码中搜索实现部分224.3添加IKAnalysis中文支持包进入OpenCms的项目234.4添加配置切换文件中对IKAnalysis的支持235探索研究256结束语267参考文献27致谢28中文摘要本论文描述了OpenCms这一个开源的项目在中国的实施情况并且在落地本土化的前景和之中会遇到的问题。通过其中
5、内嵌的Lucene搜索引擎未能很好的支持中文搜索而进行了一个分析,并指出了中文搜索在OpenCms本土化中的重要作用,且在本论文中对于中文搜索的现有前景和如何在OpenCms这一框架中嵌入中文分词搜索器进行了一个分析和模型的搭建,并且通过嵌入一个中文分词搜索器对Lucene的搜索原理有所了解,并且对于Lucene搜索中的中文分词的分词过滤,语法表达式等等有了深入的了解,也对于以后在算法的搜索方面有所了解。关键词:OpenCms;本土化;Lucene;中文分词;分词器AbstractThis paper describes the OpenCms, an open source project
6、implemented in China, landing the localization of the prospects and problems encountered among. An analysis of the Lucene search engine is not well embedded in the support of Chinese search, and pointed out the important role of the Chinese search in the localization of OpenCms, and in this paper fo
7、r Chinese search existing prospects and how to sub-word search device carry out a an analysis and model of the structures embedded in the OpenCms this framework, Chinese, and by embedding a Chinese word Finder the Lucene search principle, be understanding, and the Lucene search Chinese sub-word of t
8、he sub-word filter syntax expressions, and so an insight into the algorithm search for later understanding.Key words: OpenCms; Localization; Lucene,Word Analysis1 引言CMS是Content Management System的缩写,意为内容管理系统,它具有许多基于模板的优秀设计,可以加快网站开发的速度和减少开发的成本。CMS的功能并不只限于文本处理,它也可以处理图片、Flash动画、声像流、图像甚至电子邮件档案。CMS其实是一个很广
9、泛的称呼,从一般的博客程序,新闻发布程序,到综合性的网站管理程序都可以被称为内容管理系统。根据不同的需求,CMS有几种不同的分类方法。比如,根据应用层面的不同,可以被划分为:一 重视后台管理的CMS二 重视风格设计的CMS三 重视前台发布的CMS等等。就目前已经存在的各种CMS来说,最终界面上都是大同小异,但是在编程风格与管理方式上来讲却是千差万别。就CMS本身被设计出来的出发点来说,应该是方便一些对于各种网络编程语言并不是很熟悉的用户用一种比较简单的方式来管理自己的网站。这虽然是本身的出发点,但由于各个CMS系统的原创者们自己本身的背景与对“简单”这两个字的理解程度的不同,就造成了现在没有统
10、一的标准群雄纷争的局面。简而言之,CMS就是可以让你不需要学习复杂的建站技术,不需要学习太多复杂的HTML语言,你就能够利用CMS构建出一个风格统一功能强大的专业网站。而OpenCms这一框架就是在这一环境下应用而生的,但是OpenCms这一框架在实际 使用中还是有一些各式各样的问题,所以,本论文就从对于中文搜索支持这一个方面进行分析和提出解决方案。2 论文背景OpenCms2,3是1999年发布的,瑞典互联网顾问Framfab支持它。Framfab在欧洲六个国家设有分支机构。德国Framfab是OpenCms项目的主要发起人。对于OpenCms的咨询和支持可以在Framfab以及其他的欧洲公
11、司(比如Alkacon)那里获得。现在,OpenCms已经被LGT Bank of Lichtenstein、BP South Africa、和UNICEF Netherlands以及其他很多用户采用。OpenCms作为一个Java为基础的企业级CMS系统,其本身跟其他同类型的CMS框架相比而言的优势在于:OpenCms可以非常容易的帮助建立和管理复杂的网站而无需专业的HTML知识。当使用一个复杂的模板引擎来规划站点,它提供一个类似于我们熟知的office应用的所见即所得编辑器来帮助使用者创建内容。OpenCms是一个完全开源的软件,它不需要任何许可费用。 6OpenCms基于JAVA和XML
12、语言技术,因此它适合完全融入到现有的系统内部。OpenCms可以非常好的运行在一个完全的开源环境中(例如:Linux、Apache、Tomcat、MySQL). 当然,也可以很好的运行于商业环境下(例如:Windows NT、IIS、BEA Weblogic、Oracle DB)。这样一个优秀的开源Cms框架在中大型企业中的市场地位和市场占有率本应该是举足轻重的。但实际上在中国,应用和了解OpenCms这一框架的人并不多,而在欧洲的很多国家,它是一个政府企业相当喜欢的一个开源框架。导致出现这种现状的原因归结起来有下面的几点:一、 国人对于Java的开源Cms项目的代码编写门槛抱有望而却步的态度
13、:中国市场上面的大多数Cms框架是asp或者php这种相对直观且容易上手的语言进行编写的,而Java编写的Cms框架对于从事php和asp多年的国内开发者来说,转换起来有一定的门槛。二、 在OpenCms中,其自身已经通过Template的方式解决了建站的问题,但是由于国人的英文水平参差不齐,导致接受纯英文的Cms框架有一定的难度。三、 也是我们本论文要讨论的问题就是:OpenCms在对于中文的很多地方的支持都有一些问题。而重中之重是在搜索中对于中文分词的检索和解析是很不准确的。导致搜索出来的结果是牛头不对马嘴。这样的一个现状很明显的导致了OpenCms在中国市场上的占有率基本为0的一个惨状。
14、本文就从OpenCms的搜索引擎中对于中文搜索的现状,中文搜索的本土化和可行性进行分析,并且通过一小部分代码来说明此项目的可行性和成品对于OpenCms项目的作用。3 实际分析3.1 OpenCms中搜索的现状3.1.1、OpenCms现状OpenCms目前的最高版本是8.0.2由于这个是属于新发布的测试版,功能不是非常稳定,可能有一些不确定的隐藏Bug,故本论文描述的是在8.0.1这一相对稳定的版本下面的OpenCms的搜索模块的功能。4,5目前的OpenCms搜索功能的界面如图3-1显示:图 31 搜索界面这是符合国人的网站浏览习惯的,故在界面的部分是不需要进行任何修改的。建站模版出来的样
15、式和实现的样式还是挺好的,而单独的搜索页面的样式也不需要进行特殊的改变,表面上看来搜索中文是没有问题的,其实里面暗藏着地雷。3.1.2、OpenCms隐患OpenCms的Api中明确说明了OpenCms使用的全文搜索引擎是Lucene这一功能强大的开源全文搜索引擎,并没提到说在Lucene中有使用第三方的包,这引起了我的质疑,所以我通过OpenCms的源码发现了下面的一段注释,在OpenCms的源代码的package org.opencms.search.galleries.CmsGallerySearchAnalyzer这个类中明确显示了这样的一个内容,如图3-2:图 32配置文件这明确显示
16、了多语言分析器中没有对于中文的关键词进行分析和解释的工作。这就产生了一系列的隐患:一、 中文的关键词,如“的”,“和”,“与”,“跟”等等的在中文语境有有特殊意义的词在目前的OpenCms中是被当作一个全词来进行搜索的,这样会导致搜索如“小明的小狗”的时候不会搜索出“小狗”,“小明”等这样的按照等级来分的资料,而有可能搜索出“小明的牙膏”,“小明的小时候”这种和语境完全不同的结果,这跟客户希望实现的搜索会产生大相径庭的结果。二、 上面的这种情况还是比较好的。下面来描述一个更糟的场景:假设这是一个医药网站,这其中的药名有一些英文单字和中文夹杂着,药品搜索要求的是一个准确性,而最可怕的事情会出现,
17、由于它只支持中文的单字搜索,要全意思才能解释搜索出所需要的单词,故这样会导致很多的药品是搜索不出来的。这在实现上是一个很不可靠的过程。故基于OpenCms中的Lucene搜索引擎没有对于中文搜索有很好的支持,而OpenCms本身的开源性和可插拔性就允许了我们对OpenCms的Lucene搜索引擎进行处理。而个人想到的两种方式有:一、 用其他第三方中文搜索引擎替换Lucene,并且实现多语言搜索。二、 在Lucene搜索引擎中加入第三方的支持软件,实现多语言搜索1。3.2 目前可用开源搜索引擎的分析和筛选通过在网络的资料的汇总和整理发现:目前的开源搜索引擎框架Lucene的占有率是最大的,也是最
18、完美的,故上文中的用第三方的开源框架来代替Lucene是不可行的。如果使用付费的框架来进行开源项目的开发有悖于开源项目GPL的原则。故只能在Lucene上面进行扩展,并且实现中文分词的效果。Lucene官方的FAQ中明确说明了其在中文搜索中的不足和无能为力的态度。并且在进行大数据量数据库搜索中的能力也表示不是很乐观。故本文中没有讨论Lucene对于海量数据存储的性能问题的负载均衡的考量。仅仅从中文搜索这一实现类关注点进行关注。通过搜索参考资料得出的结论是,目前可用的搜索引擎框架的不二人选是Lucene,而这也减轻了开发人员在进行OpenCms的扩展的时候的代码量,而下面就要对如何在Lucene
19、上面进行中文搜索引擎的扩展进行一系列的搜索,测试和使用了。3.3 优化成中文搜索引擎的步骤3.3.1、中文搜索引擎中文搜索引擎目前大多数做的还是在全文检索引擎上面加入中文分词器的实现方式。全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式7。主要分为按字检索和按词检索两种。按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中字与词有很大分别。按词检索指对
20、文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。英文等西方文字由于按照空白切分词,因此实现上与按字处理类似,添加同义处理也很容易。中文等东方文字则需要切分字词,以达到按词索引的目的,关于这方面的问题,是当前全文检索技术尤其是中文全文检索技术中的难点。其难点在于:3.3.2、中文搜索难点1与英文为代表的拉丁语系语言相比,英文以空格作为天然的分隔符,而中文由于继承自古代汉语的传统,词语之间没有分隔。古代汉语中除了连绵词和人名地名等,词通常就是单个汉字,所以当时没有分词书写的必要。而现代汉语中双字或多字词居多,一个字不再等同于一个词。例如英语:Knowledge is powe
21、r“,可自然分割为 Knowledge/ is/ power 三个词。而汉语里:“知识就是力量”,由于没有词语之间的分隔符,书写时无法切分成:知识/ 就是/ 力量2在中文里,“词”和“词组”边界模糊8现代汉语的基本表达单元虽然为“词”,且以双字或者多字词居多,但由于人们认识水平的不同,对词和短语的边界很难去区分。例如:“对随地吐痰者给予处罚”,“随地吐痰者”本身是一个词还是一个短语,不同的人会有不同的标准,同样的“海上”“酒厂”等等,即使是同一个人也可能做出不同判断,如果汉语真的要分词书写,必然会出现混乱,难度很大。故实现中文搜索引擎的步骤就是在Lucene框架上面嵌入一个中文分词的工具。3.
22、4 中文分词算法的分类的筛选现有的分词算法可分为三大类:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。3.4.1、字符串匹配分词这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;常用的几种机械分词方法如下:1)正向最大匹配法(由左到右的方向);2)逆向最
23、大匹配法(由右到左的方向);3)最少切分(使每一句中切出的词数最小);4)双向最大匹配法(进行由左到右、由右到左两次扫描)还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。由于汉语单字成词的特点,正向最小匹配和逆向最小匹配一般很少使用。一般说来,逆向匹配的切分精度略高于正向匹配,遇到的歧义现象也较少。统计结果表明,单纯使用正向最大匹配的错误率为1/169,单纯使用逆向最大匹配的错误率为1/245。但这种精度还远远不能满足实际的需要。实际使用的分词系统,都是把机械分词作为一种初分手段,还需通过利用各种其它的语言信息来进一步提高切分的准确率。一种方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 毕业设计 论文 基于 opencms 中文搜索 研究
链接地址:https://www.31ppt.com/p-3994102.html