Lucene中文分析器的中文分词准确性和性能比较
作者:
approximation
对几种中文分析器,从分词准确性和效率两方面进行比较。分析器依次为:StandardAnalyzer、ChineseAnalyzer、
CJKAnalyzer、IK_CAnalyzer、MIK_CAnalyzer、MMAnalyzer(JE分词)、PaodingAnalyzer。
单纯的中文分词的实现一般为按字索引或者按词索引。按字索引顾名思义,就是按单个字建立索引。按词索引就是按词喽,根据词库中的词,将文字进行切分。车东的交叉双字分割或者叫二元分词我觉得应该算是按字索引的改进,应该还是属于字索引的范畴吧。
分词准确性的评估比较难,很难有统一的标准,不同应用的要求也不同,这个统一以“2008年8月8日晚,举世瞩目的北京第二十九届奥林匹克运动会开幕式在国家体育场隆重举行。”为例说明。
分词效率,统一使用《射雕英雄传》的全文文本为例说明。呵呵。对于按词索引的分析器,使用统一的基本词库,词汇量为227,719个。在开发环境下运行,性能不准确,但可比较相对值。
分析器:
分词准确性:
StandardAnalyzer |
2008/年/8/月/8/日/晚/举/世/瞩/目/的/北/京/第/二/十/九/届/奥/林/匹/克/运/动/会/开/幕/式/在/国/家/体/育/场/隆/重/举/行/
|
一元分词,没什么好说的。
|
ChineseAnalyzer
|
年/月/日/晚/举/世/瞩/目/的/北/京/第/二/十/九/届/奥/林/匹/克/运/动/会/开/幕/式/在/国/家/体/育/场/隆/重/举/行/
|
还
是有区别吧,这是因为ChineseAnalyzer只对Character.LOWERCASE_LETTER、
Character.UPPERCASE_LETTER、和Character.OTHER_LETTER进行了处理,其他类型的都滤掉了。具体可以参见
代码。
|
CJKAnalyzer
|
2008/年/8/月/8/日晚/举世/世瞩/瞩目/目的/的北/北京/京第/第二/二十/十九/九届/届奥/奥林/林匹/匹克/克运/运动/动会/会开/开幕/幕式/式在/在国/国家/家体/体育/育场/场隆/隆重/重举/举行/
|
二元分词,作为一元分词的改进,建立的索引小于一元,查询效率较好,能满足一般的查询要求。
|
PaodingAnalyzer
|
2008/年/8/月/8/日/晚/举世/瞩目/举世瞩目/目的/北京/二/第二/十/二十/第二十/九/十九/二十九/九届/奥林/奥林匹克/运动/运动会/奥林匹克运动会/开幕/开幕式/国家/体育/体育场/隆重/举行/隆重举行/
|
细粒度全切分。对于不在词典中的词进行二元分词。
|
IK_CAnalyzer
|
2008
年/2008/年/8月/8/月/8日/8/晚/举世瞩目/举世/瞩目/目的/北京/第二十九届/第二十九/第二十/第二/二十九/二十/十九/九届/九
/奥林匹克运动会/奥林匹克/奥林/运动会/运动/开幕式/开幕/在国/国家/国/体育场/体育/隆重举行/隆重/举行/行/
|
细粒度全切分。对于不在词典中的词进行二元分词。
|
MIK_CAnalyzer
|
2008年/8月/8日/晚/举世瞩目/目的/北京/第二十九届/奥林匹克运动会/开幕式/在国/国家/体育场/隆重举行/
|
最大匹配分词。和细粒度全切分配合使用。
|
MMAnalyzer
|
2008/年/8/月/8/日/晚/举世瞩目/北京/第二十/九届/奥林匹克运动会/开幕式/国家/体育场/隆重举行/
|
对于不在字典项的内容,进行一元分词。
|
分词性能(毫秒):
分析器
|
第一次
|
第二次
|
第三次
|
分词数
|
StandardAnalyzer
|
243
|
246
|
241
|
767675
|
ChineseAnalyzer
|
245
|
233
|
242
|
766298
|
CJKAnalyzer
|
383
|
383
|
373
|
659264
|
PaodingAnalyzer
|
927
|
899
|
909
|
482890
|
IK_CAnalyzer
|
1842
|
1877
|
1855
|
530830
|
MIK_CAnalyzer
|
2009
|
1978
|
1998
|
371013
|
MMAnalyzer
|
2923
|
2933
|
2948
|
392521
|
需要说明的是,IK_CAnalyzer在性能上对于词典的敏感度较高。
总结:
对于一般性的应用,采用二元分词法应该就可以满足需求。如果需要分词的话,从分词效果、性能、扩展性、还是可维护性来综合考虑,建议使用庖丁解牛。
相关推荐
总的来说,Lucene.NET在中文分词和高亮显示方面的应用需要结合合适的分词器,并进行适当的配置和优化。开发者可以根据实际需求选择适合的分词器,并通过集成和调优提高系统的搜索效率和用户体验。
总的来说,Paoding分词器是Lucene进行中文信息处理的一个强大工具,它的出现极大地提升了中文文本在搜索引擎中的检索效率和准确性。通过深入理解和熟练运用Paoding,我们可以构建出更加符合中文特性的搜索引擎系统,...
然而,对于中文文档的处理,Lucene原生的分词能力相对较弱,这就需要我们引入专门的中文分词器来提升搜索效率和准确性。其中,"庖丁解牛"中文分词器因其高效和精准,成为了许多开发者的选择,尤其在支持Lucene 3版本...
6. **Lucene接口集成**:为了让C#分词器与Lucene接口兼容,需要理解并实现Lucene的分析器(Analyzer)接口,以便于在索引和查询过程中正确处理中文文本。 7. **性能优化**:在实际应用中,分词速度和资源占用是重要...
这些方法可以处理一些常见的词汇组合,但也会产生歧义,如“中国银行”和“中国队”,分析器需要通过上下文判断正确的分词方式。 3. **停用词处理**:“的”、“和”、“在”等常用但对检索意义不大的词语被称为...
本文将深入探讨一种基于Lucene的词典机械中文分词方法,该方法采用了反向机械分词算法,尤其关注对数字、英文以及中英文数字混合词的特殊处理,旨在提高分词速度和准确性。 首先,反向机械分词算法是一种常用的中文...
而添加了中文分词器,如 Je-Analysis,可以使得 Compass 能够有效地处理和搜索中文文档,提高中文搜索的准确性和效率。 总的来说,这个压缩包组合提供了一套完整的解决方案,包括 Compass 搜索引擎框架、它依赖的 ...
**Lucene+中文IK分词器实例解析** Lucene是一个高性能、全文检索库,由Apache软件基金会开发。它提供了一个简单但功能强大的API,用于在各种应用中实现全文索引和搜索。在处理中文文本时,由于中文词汇的复杂性和无...
它们提供了强大的信息检索和文本分析功能,但Lucene默认的分词器并不适用于中文处理。因此,对于中文索引和搜索,我们需要引入专门针对中文的分词器。本篇文章将深入探讨Lucene和Solr中的中文分词器及其重要性。 ...
这个工具包的核心是IKAnalyzer,它是一个开源且基于Java语言开发的轻量级中文分词工具,旨在提升中文文本处理的效率和准确性。 **IKAnalyzer详解** IKAnalyzer的设计目标是易于使用和高度可扩展。它采用了模块化的...
然而,在处理中文文本时,由于中文特有的分词问题,直接使用Lucene.NET可能会遇到效率和准确性的挑战。本文将详细介绍一个基于Lucene.NET 2.0的中文分词器,以及它的核心——最大向前匹配算法。 中文分词是中文自然...
- **用户词典扩展**:优化的词典存储机制,允许用户进行词典扩展,特别是在2012版本中,新增了对中文、英文、数字混合词语的支持,进一步提升了分词的准确性和灵活性。 ##### 分词效果实例 IKAnalyzer 2012提供...
2. **配置分析器**:在LuceneUtils.java或LuceneDB.java中,需要配置合适的中文分词分析器。例如,使用IK Analyzer,代码可能如下: ```java Analyzer analyzer = new IKAnalyzer(); ``` **三、创建索引** 1. *...
为了增强Lucene在中文环境下的表现,需要对Lucene的默认分析器进行扩展,引入中文分词器。常见的中文分词器有: - **Jieba分词**:一款流行的开源中文分词工具,支持精确模式和搜索引擎模式。 - **IK分词**:针对...
Lucene,作为一个强大的全文搜索引擎库,对于处理中文文档,分词的准确性和效率直接影响到搜索效果。本文将围绕“lucene中文分词”这一主题,深入探讨Lucene如何处理中文文本,以及如何利用相关的分词工具进行有效的...
1. 性能优化:通过调整分词器的参数,如最大匹配长度、最小匹配长度等,可以在准确性和速度之间找到平衡。 2. 实时更新:在大型系统中,可能需要实时更新索引,此时需考虑如何在保持服务可用的同时,有效利用庖丁...
pinyinAnalyzer是Lucene的一个分析器,它利用了Pinyin4j的功能,能够将输入的中文文本分词并转化为拼音形式,以便于Lucene这样的全文搜索引擎进行索引和查询。而lucene-analyzers则是Lucene的一系列分析器集合,包含...
通过集成盘古分词,Lucene能够更好地理解中文文本,从而提高搜索的准确性和效率。 在实际应用中,开发者可以通过以下步骤实现盘古分词与Lucene的整合: 1. **安装与引入**:首先,需要将Lucene.Net.Analysis.PanGu...
分词器的配置是灵活的,可以根据需求选择不同的分词策略,比如标准分词器(StandardAnalyzer)适用于大多数英文文本,而中文分词可能需要使用IKAnalyzer或SmartChineseAnalyzer等针对中文特性的分词器。 在运行这个...
1. **中文分词**:由于中文没有明显的词边界,盘古分词是专门针对中文设计的分词工具,能够准确地将连续的汉字序列切分成具有实际意义的词语。 2. **自定义词典**:盘古分词支持用户自定义词典,可以根据具体业务...