11大Java开源中文分词器的分词效果对比


在上一篇动宝儿讲了11Java开源中文分词器使用方法,这篇就来讲讲Java开源中文分词器的分词效果对比。

public static Map<String, Set<String>> contrast(String text){
    Map<String, Set<String>> map = new LinkedHashMap<>();
    map.put("word分词器", new WordEvaluation().seg(text));
    map.put("Stanford分词器", new StanfordEvaluation().seg(text));
    map.put("Ansj分词器", new AnsjEvaluation().seg(text));
    map.put("HanLP分词器", new HanLPEvaluation().seg(text));
    map.put("FudanNLP分词器", new FudanNLPEvaluation().seg(text));
    map.put("Jieba分词器", new JiebaEvaluation().seg(text));
    map.put("Jcseg分词器", new JcsegEvaluation().seg(text));
    map.put("MMSeg4j分词器", new MMSeg4jEvaluation().seg(text));
    map.put("IKAnalyzer分词器", new IKAnalyzerEvaluation().seg(text));
    map.put("smartcn分词器", new SmartCNEvaluation().seg(text));
    return map;
}
public static Map<String, Map<String, String>> contrastMore(String text){
    Map<String, Map<String, String>> map = new LinkedHashMap<>();
    map.put("word分词器", new WordEvaluation().segMore(text));
    map.put("Stanford分词器", new StanfordEvaluation().segMore(text));
    map.put("Ansj分词器", new AnsjEvaluation().segMore(text));
    map.put("HanLP分词器", new HanLPEvaluation().segMore(text));
    map.put("FudanNLP分词器", new FudanNLPEvaluation().segMore(text));
    map.put("Jieba分词器", new JiebaEvaluation().segMore(text));
    map.put("Jcseg分词器", new JcsegEvaluation().segMore(text));
    map.put("MMSeg4j分词器", new MMSeg4jEvaluation().segMore(text));
    map.put("IKAnalyzer分词器", new IKAnalyzerEvaluation().segMore(text));
    map.put("smartcn分词器", new SmartCNEvaluation().segMore(text));
    return map;
}
public static void show(Map<String, Set<String>> map){
    map.keySet().forEach(k -> {
        System.out.println(k + " 的分词结果:");
        AtomicInteger i = new AtomicInteger();
        map.get(k).forEach(v -> {
            System.out.println("\t" + i.incrementAndGet() + " 、" + v);
        });
    });
}
public static void showMore(Map<String, Map<String, String>> map){
    map.keySet().forEach(k->{
        System.out.println(k + " 的分词结果:");
        AtomicInteger i = new AtomicInteger();
        map.get(k).keySet().forEach(a -> {
            System.out.println("\t" + i.incrementAndGet()+ " 、【"   + a + "】\t" + map.get(k).get(a));
        });
    });
}
public static void main(String[] args) {
    show(contrast("我爱楚离陌"));
    showMore(contrastMore("我爱楚离陌"));
}

运行结果如下:

********************************************
word分词器 的分词结果:
         1 、我 爱 楚离陌
Stanford分词器 的分词结果:
         1 、我 爱 楚 离陌
         2 、我 爱 楚离陌
Ansj分词器 的分词结果:
         1 、我 爱 楚离 陌
         2 、我 爱 楚 离 陌
HanLP分词器 的分词结果:
         1 、我 爱 楚 离 陌
smartcn分词器 的分词结果:
         1 、我 爱 楚 离 陌
FudanNLP分词器 的分词结果:
         1 、我 爱楚离陌
Jieba分词器 的分词结果:
         1 、我爱楚 离 陌
Jcseg分词器 的分词结果:
         1 、我 爱 楚 离 陌
MMSeg4j分词器 的分词结果:
         1 、我爱 楚 离 陌
IKAnalyzer分词器 的分词结果:
         1 、我 爱 楚 离 陌
********************************************
********************************************
word分词器 的分词结果:
         1 、【全切分算法】  我 爱 楚离陌
         2 、【双向最大最小匹配算法】  我 爱 楚离陌
         3 、【正向最大匹配算法】     我 爱 楚离陌
         4 、【双向最大匹配算法】     我 爱 楚离陌
         5 、【逆向最大匹配算法】     我 爱 楚离陌
         6 、【正向最小匹配算法】     我 爱 楚离陌
         7 、【双向最小匹配算法】     我 爱 楚离陌
         8 、【逆向最小匹配算法】     我 爱 楚离陌
Stanford分词器 的分词结果:
         1 、【Stanford Chinese Treebank segmentation】        我 爱 楚离陌
         2 、【Stanford Beijing University segmentation】      我 爱 楚 离陌
Ansj分词器 的分词结果:
         1 、【BaseAnalysis】       我 爱 楚 离 陌
         2 、【IndexAnalysis】      我 爱 楚 离 陌
         3 、【ToAnalysis】 我 爱 楚 离 陌
         4 、【NlpAnalysis】        我 爱 楚离 陌
HanLP分词器 的分词结果:
         1 、【NLP分词】    我 爱 楚 离 陌
         2 、【标准分词】    我 爱 楚 离 陌
         3 、【N-最短路径分词】       我 爱 楚 离 陌
         4 、【索引分词】    我 爱 楚 离 陌
         5 、【最短路径分词】         我 爱 楚 离 陌
         6 、【极速词典分词】         我 爱 楚 离 陌
smartcn分词器 的分词结果:
         1 、【smartcn】   我 爱 楚 离 陌
FudanNLP分词器 的分词结果:
         1 、【FudanNLP】  我 爱楚离陌
Jieba分词器 的分词结果:
         1 、【SEARCH】    我爱楚 离 陌
         2 、【INDEX】     我爱楚 离 陌
Jcseg分词器 的分词结果:
         1 、【简易模式】    我 爱 楚 离 陌
         2 、【复杂模式】    我 爱 楚 离 陌
MMSeg4j分词器 的分词结果:
         1 、【SimpleSeg】 我爱 楚 离 陌
         2 、【ComplexSeg】 我爱 楚 离 陌
         3 、【MaxWordSeg】 我爱 楚 离 陌
IKAnalyzer分词器 的分词结果:
         1 、【智能切分】    我 爱 楚 离 陌
         2 、【细粒度切分】  我 爱 楚 离 陌
********************************************

  动宝儿欢迎各位大牛和同学们补充和指正,到哪里系统的学习Java,动宝儿推荐动力节点Java培训学校,多年大型企业项目经验的大牛导师会一站式解决你对Java学习的所有困惑,不信就来试听。


上一篇:11个Java开源中文分词器使用方法
下一篇:程序员培训究竟该如何选择Java培训机构

开班信息