【引言】
全文检索服务采用Solr作为搜索引擎,Solr是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于Lucene 实现。然而对于中文搜索所,lucene却没有很好的分词支持。所以选择一个分词技术是势在必行。
【中文分词介绍】
目前支持Lucense3.0的分词系统有14个,其中比较成熟的开源的中文分词有一下几种:
IKAnalyzer:
IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出 了3个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为面向Java的公用分词组件,于Lucene项目,同时提供了对Lucene的默认优化实现。
主要特性:
采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。 采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日
期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。
优化的词典存储,更小的内存占用。支持用户词典扩展定义
针对Lucene全文检索优化的查询分析器IKQueryParser;采用歧义分析算法优化
查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。
Paoding:
庖丁中文分词库是一个使用Java开发的,可结合到Lucene 应用中的,为互联网、企业内部网使用的中文搜索引擎分词组件。Paoding填补了国内中文分词方面开源组件的空白,致力于此并希翼成为互联网网站首选的 中文分词开源组件。 Paoding中文分词追求分词的高效率和用户良好体验。 主要特性:
Paoding's Knives中文分词具有极高效率和高扩展性 。引入隐喻,采用完全的面
向对象设计,构思先进。
高效率:在PIII 1G内存个人机器上,1秒可准确分词100万汉字。
采用基于不个数的词典文件对文章进行有效切分,使能够将对词汇分类定义。 能够对未知的词汇进行合理解析
imdict-chinese-analyzer:
imdict-chinese-analyzer是imdict智能词典的智能中文分词模块,算法基于隐马尔科夫模型(Hidden Markov Model, HMM),是中国科学院计算技术研究所的ictclas中 文分词程序的重新实现(基于Java),可以直接为lucene搜索引擎提供简体中文分词支持。
主要特性:
完全Unicode支持:分词核心模块完全采用Unicode编码,无须各种汉字编码的转
换,极大的提升了分词的效率。
提升搜索效率:根据imdict智能词典的实践,在有智能中文分词的情况下,索引
文件比没有中文分词的索引文件小1/3
提高搜索准确度:imdict-chinese-analyzer采用了HHMM分词模型,极大的提高
了分词的准确率,在此基础上的搜索,比对汉字逐个切分要准确得多!
更高效的数据结构:为了提高效率,针对常用中文检索的应用场景,
imdict-chinese-analyzer对一些不必要的功能进行了删减,例如词性标注、人名识别、时 间识别等等。另外还修改了算法的数据结构,在内存占用量缩减到1/3的情况下把效率提升了数倍。
Mmseg4j:
Mmseg4j是用 Chih-Hao Tsai 的 MMSeg 算法实现的中文分词器,并实现 lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法。
主要特性:
1.5版的分词速度simple算法是 1100kb/s左右、complex算法是 700kb/s左右,
(测试机:AMD athlon 2800+ 1G内存 xp)。
1.6版在complex基础上实现了最多分词(max-word)。“很好听” -> \"很好|好听
\"; “中华人民共和国” -> \"中华|华人|共和|国\"; “中国人民银行” -> \"中国|人民|银行\"。
1.7-beta 版, 目前 complex 1200kb/s左右, simple 1900kb/s左右, 但内存开销
了50M左右. 上几个版都是在10M左右.
【分词效果】
分别对四种主流开源的分词效果进行总结,如下: 1永和服装饰品有限公司
Paoding: 永和|和服|服装|装饰|饰品|有限|公司
IKAnalyzer: 永和|和服|服装|装饰品|装饰|饰品|有限公司|有限|公司 Imdict: 永|和服|装饰品|有限公司
mmseg4j: 永 | 和服 | 装饰品 | 有限公司
2. 海尔波普慧星的位置就在那一朵云南边十公里处
Paoding: 海尔|波普|慧星|位置|就在|在那|那一|一朵|云南|南边|公里|十公里|处 IKAnalyzer: 海尔波普|海尔|波普|慧星|的|位置|就在|在那|那一|一朵|一|朵|云南|南边|十公里|十|公里处|公里
Imdict: 海尔波普|慧|星|的|位置|就|在|那|一|朵|云南|边|十|公里|处
mmseg4j: 海 | 尔 | 波 | 普 | 慧星 | 的 | 位置 | 就在 | 那一 | 朵 | 云南 | 边 | 十 | 公里 | 处
3. 他大力推广州长制
Paoding: 大|大力|力推|推广|广州|长|州长|制
IKAnalyzer: 他|大力推广|大力|力推|推广|广州|州长|制 Imdict: 他|大力|推广|州长|制
mmseg4j: 他 | 大力推广 | 州长 | 制
4. 那个单身汉口中念念有词,不晓得在想什么
Paoding: 那个|单身|单身汉|汉口|口中|念念|念念有词|不晓|晓得|在想
IKAnalyzer: 那个|单身汉|单身|汉口|口中|念念有词|念念|不晓得|不晓|晓得|在想|什么
Imdict: 那个|单身汉|口中|念念有词|不|晓得|在|想|什么
mmseg4j: 那个 | 单身汉 | 口中 | 念念有词 | 不 | 晓得 | 在想 | 什么
5. State of the art and difficulties in Chinese word segmentation technology Paoding:state|art|difficulties|chinese|word|segmentation|technology IKAnalyzer:state|art|difficulties|chinese|word|segmentation|technology Imdict:state|of|the|art|and|difficulti|in|chines|word|segment|technolog mmseg4j:state|of|the|art|and|difficulti|in|chines|word|segment|technolog
效果总结:Paoding和IKAnalyzer切分的粒度较小,可以产生足够多的分词提供检索,检索结果大于正确结果,如果用户不考虑语义可以采用此类分词库;Imdict或mmseg4j可以产生更符合语义标准的分词,但是由于具体语境对分词的效果可能产生很大的歧义,从而导致不能正确检索出结果,即检索结果可能少于正确的结果。考虑语义时可以选择此类分词库。
【全文检索分词配置】
全文检索服务复用了Solr可扩展的特性,可以根据用户需求灵活配置多种分词库。配置方法如下:
修改schema.xml文件(indexsearch\\WEB-INF\\conf\\solr\\conf\\schema.xml)
根据选择的分词包不同,修改“text”类型的index和query对应的分词实现类“org.wltea.analyzer.solr.IKTokenizerFactory”即可。
因篇幅问题不能全部显示,请点此查看更多更全内容
怀疑对方AI换脸可以让对方摁鼻子 真人摁下去鼻子会变形
女子野生动物园下车狼悄悄靠近 后车司机按喇叭提醒
睡前玩8分钟手机身体兴奋1小时 还可能让你“变丑”
惊蛰为啥吃梨?倒春寒来不来就看惊蛰
男子高速犯困开智能驾驶出事故 60万刚买的奔驰严重损毁
Copyright © 2019-2025 zicool.com 版权所有 湘ICP备2023022495号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务