在上一篇动宝儿讲了11个Java开源中文分词器使用方法,这篇就来讲讲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学习的所有困惑,不信就来试听。