`
m635674608
  • 浏览: 5027632 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

IK,ansj,mmseg4j分词性能比较

 
阅读更多

下载ik最新版本:
IK Analyer 2012-FF hotfix 1 完整分发包
这个版本是支持lucene4的.其主页为:https://code.google.com/p/ik-analyzer/

下载ansj最新版本:
ansj_seg

下载mmesg4j最新版本
https://code.google.com/p/mmseg4j/选择其中mmseg4j-1.9.1.v20130120-SNAPSHOT.zip 版本

然后建立一个web project,把相应的包导入,具体细节不用再详述。
建立一个测试类,贴出其中关键代码:

使用ik进行分词:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public String ikAnalyzer(String str) {
 
        Reader input = new StringReader(str);
        // 智能分词关闭(对分词的精度影响很大)
        IKSegmenter iks = new IKSegmenter(input, true);
        Lexeme lexeme = null;
        StringBuilder sb = new StringBuilder();
 
        try {
            while ((lexeme = iks.next()) != null) {
 
                sb.append(lexeme.getLexemeText()).append("|");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        return sb.toString();
    }

使用ansj进行分词

1
2
3
4
5
6
7
8
9
10
11
12
13
	public String ansjAnalyzer(String str) {
 
        List<Term> terms = NlpAnalysis.paser(str);
        new NatureRecognition(terms).recognition();
        StringBuilder sb = new StringBuilder();
 
        for (Term term : terms) {
            if (!" ".equals(term.getName()) && !" ".equals(term.getName()) && term.getName().trim().replaceAll("[\\pP\\pM\\pS]", "").length() > 1) {
                sb.append(term.getName()).append("|");
            }
        }
        return sb.toString();
    }

使用ansj分词找出词性为名词的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
	public String ansjAnalyzerNature(String str) {
 
        List<Term> terms = NlpAnalysis.paser(str);
        new NatureRecognition(terms).recognition();
        StringBuilder sb = new StringBuilder();
 
        System.out.println(terms.toString());
 
        // 词性过滤
        Nature nature;
        for (Term term : terms) {
            nature = term.getNatrue();
 
            if (nature.natureStr.subSequence(0, 1).equals("n") || nature.natureStr.subSequence(0, 1).equals("h")) {
                if (!" ".equals(term.getName()) && !" ".equals(term.getName()) && term.getName().trim().replaceAll("[\\pP\\pM\\pS]", "").length() > 1) {
                    sb.append(term.getName()).append("|");
                }
            }
        }
 
        return sb.toString();
    }

使用mmseg4j进行分词:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
	public String mmseg4jAnalyzer(String str)throws IOException{
		Reader input = new StringReader(str);
		return segWords(input, "|");
	}
 
	public String segWords(Reader input, String wordSpilt) throws IOException {
		StringBuilder sb = new StringBuilder();
		Seg seg = getSeg();	//取得不同的分词具体算法
		MMSeg mmSeg = new MMSeg(input, seg);
		Word word = null;
		boolean first = true;
		while((word=mmSeg.next())!=null) {
			if(!first) {
				sb.append(wordSpilt);
			}
			String w = word.getString();
			sb.append(w);
			first = false;
 
		}
		return sb.toString();
	}
 
	protected Seg getSeg() {
		return new ComplexSeg(Dictionary.getInstance());
	}

输入的文章:
官员揭公车使用乱象:不单是私用 普遍“家用”
测试结果为:
QQ图片20130525182118
QQ图片20130525182216
QQ图片20130525182227

再输入别的文章:
北京市教委:非京籍考生入美籍即可高考不属实”
测试结果为:
QQ图片20130525182232
QQ图片20130525182239
QQ图片20130525182242

通过输入别的文章发现,速度基本上差不多,分词效果也还差不多。只不过ansj提供了分析词性的功能。算法比较复杂。
个别词有的词未认识出来,是由于词库的原因。

总结
在实际应用中,根据个人的以上项目熟悉程度,随便选择以上三种分词算法的任意一种,其实速度和效果都差不多。重要的是词库。根据业务的需要,整理出相应的词库,这会对分词效果有比较大的提升。

如果搞源码研究,个人推荐ik分词和mmseg4j分词,这两个算法也比较简单,可以比较快的吃透。

http://www.chepoo.com/ik-ansj-mmseg4j-segmentation-performance-comparison.html

分享到:
评论

相关推荐

    word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器分词效果评估

    本话题将深入探讨四种常用的Java分词工具:word分词器、ansj分词器、mmseg4j分词器以及ik-analyzer,以及它们在实际应用中的效果评估。 首先,ansj分词器是由李弄潮开发的一款开源分词工具,它具有强大的词典支持和...

    ik+mmseg分词器

    在 Solr 6.1 版本中,IK+MMSEG 分词器的整合意味着用户可以在享受 IK Analyzer 高效分词性能的同时,利用 MMSEG 的复杂词汇处理能力。这种组合可以处理各种复杂的中文文本,包括网络语言、专业术语等,对于提升搜索...

    兼容solr4.10.2的ik-mmseg4j-paoding分词器

    能兼容solr-4.10.2的分词器,大礼包...包括IK分词器,mmseg4j分词器,庖丁分词器.都是经本人测试可用,其中mmseg4j与庖丁都是下载源码,修改重编译并测试生成的.希望大家喜欢.至于与solr的整合方式,网上很多,这里就不介绍了.

    lucene-solr-4.7所有Jar包 tika包 IK包 mmseg4j包

    lucene-solr-4.7所有Jar包 tika包 IK包 mmseg4j包 包括索引、高亮、IK分词及MMSEG分词 其中MMSEG中的BUG: TokenStream contract violation: reset()/close() call missing, reset() called multiple times, or ...

    solr 分词器 mmseg4j IKAnalyzer

    提到的两个分词器,mmseg4j 和 IKAnalyzer,都是为中文处理设计的。 1. **mmseg4j** 是一款由 Java 实现的中文分词库,它采用了 MaxMatch(最大匹配)算法。mmseg4j 提供了多种分词模式,如简短模式、精确模式、全...

    elasticsearch-2.3.1 ik ansj head

    在2.3.1版本中,它已经集成了两种常用的中文分词器:IK分词器和Ansj分词器,以及Head插件,这为中文文档的索引和搜索提供了更丰富的功能。 IK分词器(Intelligent Chinese Analyzer for Elasticsearch)是专为...

    基于Lucene的中文分词器代码paoding,IK,imdict,mmseg4j

    本文将深入探讨基于Lucene的四种中文分词器:Paoding、IK、Imdict和Mmseg4j,它们都是针对Java开发的高效、开源的中文分词工具。 1. Paoding(庖丁)分词器: Paoding是一款高性能的中文分词器,设计目标是提供...

    mlcsseg, solr分词器大补贴, 包括IK ANSJ、过滤器,动态加载词库.zip

    本文将深入探讨"mlcsseg"项目,它是一个针对Solr的开源分词器解决方案,其中包括了IK分词器和ANSJ分词器,以及各种过滤器和动态加载词库功能。以下是对这些知识点的详细说明: 1. **Solr分词器**:Solr是Apache ...

    IK智能分词器下载8.12.2版本

    IK智能分词器下载8.12.2版本IK智能分词器下载8.12.2版本IK智能分词器下载8.12.2版本IK智能分词器下载8.12.2版本IK智能分词器下载8.12.2版本IK智能分词器下载8.12.2版本IK智能分词器下载8.12.2版本IK智能分词器下载...

    几种分词工具的jar包(IKAnalyzer、hanlp、mmseg4j-analysis)

    几种分词工具都试过,对于中文来说的的话个人觉得IKAnalyzer 最好用,不同版本的IKAnalyzer jar包,包括IKAnalyzer6.5.0、IKAnalyzer5.0、IKAnalyzer2012,IKAnalyzer6.5.0可完美兼容Lucene6+,IKAnalyzer5.0兼容...

    使用IK Analyzer实现中文分词之Java实现

    从 2006年 12 月推出 1.0 版开始, IKAnalyzer 已经推出了 4 个大版本。最初,它是以开源项目Luence 为应用主体的,结合词典分词和文法分析算法的中文分词组件。 从 3.0 版本开始,IK 发展为面向 Java 的公用分词...

    ik中文分词词库35万中文分词词库(含电商)

    ik中文分词词库35万中文分词词库(含电商)

    ik-analyzer-8.3.0分词插件.zip

    4. 配置字段类型,指定使用ik分词器。例如,创建一个用于存储中文内容的字段,并指定其类型为使用ik分词的text_ik类型。 5. 重新启动Solr服务,使其应用新的配置。 6. 创建索引时,Solr会使用ik-analyzer进行分词,...

    elasticsearch ik 7.4.2 分词器

    IK分词器(Intelligent Chinese Analyzer for Elasticsearch)是专门为Elasticsearch设计的一款高性能中文分词组件。它支持多种分词模式,包括精确模式、全模式、最短路径模式、关键词模式等,能够满足不同场景下的...

    elasticsearch-analysis-ik 7.17.16 分词器

    总结来说,`elasticsearch-analysis-ik 7.17.16`为Elasticsearch提供了强大的中文分词能力,通过自定义词典、多种分词模式以及性能优化,确保了在处理中文文本时的高效和精准。在实际的文本检索应用中,合理配置和...

    ik分词器tar包 7.10.2

    4. **多线程支持**:为了提升效率,IK分词器支持多线程处理,可以在高并发环境下保持高性能。 5. **配置灵活性**:用户可以通过修改配置文件调整分词策略,如设置最大深度、是否开启同义词扩展等。 6. **与Elastic...

    elasticsearch7.8.0版本的IK分词器

    在中文处理方面,IK (Intelligent Chinese) 分词器是 Elasticsearch 的一个非常重要的插件,尤其对于中文文本的索引和搜索性能提升起到了关键作用。IK 分词器针对中文的特性进行了优化,能够有效地对中文文本进行...

    elasticsearch-ik中文分词器7.6.2.zip

    **Elasticsearch 7.6.2 中文分词器详解** Elasticsearch 是一个流行的开源全文搜索引擎,它提供了一种高效、灵活的方式来存储、搜索和分析...正确配置和使用IK分词器,对于提升Elasticsearch的中文检索性能至关重要。

    elasticserach 7.17.4版本的中文 IK分词器

    **Elasticsearch 7.17.4 版本中的中文 IK 分词器** Elasticsearch 是一个流行的、开源的全文搜索引擎,它基于 Lucene 库,并提供了分布式、实时、可扩展的搜索和分析功能。在处理中文文本时,一个合适的分词器是至...

    IK分词器elasticsearch-analysis-ik-7.17.16

    1. **高性能**:IK分词器采用高效的分词算法,能快速处理大量文本数据。 2. **智能切词**:IK分词器支持精确模式、全模式、最短路径模式等多种分词策略,可以根据实际需求进行选择。 3. **动态扩展**:用户可以...

Global site tag (gtag.js) - Google Analytics