在上一篇動寶兒講了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培訓學校,多年大型企業項目經驗的大牛導師會一站式解決你對Java學習的所有困惑,不信就來試聽。