使用说明:
如何建立开发环境?
如果是使用Netbeans、IDEA,则直接打开项目 如果是使用Eclipse、MyEclipse,则要执行导入操作 推荐使用IDEA
评估采用的测试文本位于data目录下,253 3709行,共2837 4490个字符
test-test.txt为未分词的文件,一行一个句子或短语,格式如下:
迈向充满希望的新世纪 一九九八年新年讲话 附图片1张 中共中央总书记 国家主席江泽民 一九九七年十二月三十一日 12月31日 总书记 国家主席江泽民发表1998年新年讲话 新华社记者兰红光摄
standard-text.txt为人工分好词的文件,用于判断参与评估的分词器的分词结果是否正确,词和词之间以空格分隔,格式如下:
迈向 充满 希望 的 新 世纪 一九九八年 新年 讲话 附 图片 1 张 中共中央 总书记 国家 主席 江泽民 一九九七年 十二月 三十一日 12月 31日 总书记 国家 主席 江泽民 发表 1998年 新年 讲话 新华社 记者 兰红光 摄
注意:由于每个分词器的词典格式不一致,除了词典之外使用的其他模型的格式也不一致,所以我们评估对比时没有让所有分词器使用统一的词典和模型,测试的是各个分词器的默认行为
运行org.apdplat.evaluation.Evaluator类可获得评估结果
运行org.apdplat.evaluation.WordSegmenter类可对比不同分词器结果
windows:
./contrast.bat ./evaluation.bat
linux:
chmod +x contrast.sh & ./contrast.sh chmod +x evaluation.sh & ./evaluation.sh
最终评估结果文件位于report目录下:分词效果评估报告.txt
注意:stanford分词器是吃内存的怪兽,运行的时候需要增加虚拟机参数 -Xms3000m -Xmx3000m
评估报告:
1、word分词 全切分算法: 分词速度:51.79764 字符/毫秒 行数完美率:58.79% 行数错误率:41.2% 总的行数:2533709 完美行数:1489713 错误行数:1043996 字数完美率:49.53% 字数错误率:50.46% 总的字数:28374490 完美字数:14054431 错误字数:14320059 2、Ansj BaseAnalysis 基本分词: 分词速度:1235.2847 字符/毫秒 行数完美率:55.36% 行数错误率:44.63% 总的行数:2533709 完美行数:1402905 错误行数:1130804 字数完美率:48.18% 字数错误率:51.81% 总的字数:28374490 完美字数:13672441 错误字数:14702049 3、word分词 双向最大最小匹配算法: 分词速度:219.50127 字符/毫秒 行数完美率:55.31% 行数错误率:44.68% 总的行数:2533709 完美行数:1401582 错误行数:1132127 字数完美率:45.83% 字数错误率:54.16% 总的字数:28374490 完美字数:13005696 错误字数:15368794 4、smartcn: 分词速度:578.7523 字符/毫秒 行数完美率:55.29% 行数错误率:44.7% 总的行数:2533690 完美行数:1401069 错误行数:1132621 字数完美率:48.03% 字数错误率:51.96% 总的字数:28374433 完美字数:13628910 错误字数:14745523 5、Ansj ToAnalysis 精准分词: 分词速度:713.39294 字符/毫秒 行数完美率:54.72% 行数错误率:45.27% 总的行数:2533709 完美行数:1386683 错误行数:1147026 字数完美率:44.99% 字数错误率:55.0% 总的字数:28374490 完美字数:12768426 错误字数:15606064 6、Ansj NlpAnalysis NLP分词: 分词速度:195.31975 字符/毫秒 行数完美率:52.66% 行数错误率:47.33% 总的行数:2533709 完美行数:1334314 错误行数:1199395 字数完美率:42.66% 字数错误率:57.33% 总的字数:28374490 完美字数:12105808 错误字数:16268682 7、word分词 双向最大匹配算法: 分词速度:346.91458 字符/毫秒 行数完美率:52.01% 行数错误率:47.98% 总的行数:2533709 完美行数:1317801 错误行数:1215908 字数完美率:42.42% 字数错误率:57.57% 总的字数:28374490 完美字数:12038414 错误字数:16336076 8、FudanNLP: 分词速度:121.48538 字符/毫秒 行数完美率:51.48% 行数错误率:48.51% 总的行数:2533709 完美行数:1304371 错误行数:1229338 字数完美率:43.22% 字数错误率:56.77% 总的字数:28374490 完美字数:12265742 错误字数:16108748 9、Jieba SEARCH: 分词速度:867.4031 字符/毫秒 行数完美率:50.84% 行数错误率:49.15% 总的行数:2533709 完美行数:1288237 错误行数:1245472 字数完美率:41.54% 字数错误率:58.45% 总的字数:28374490 完美字数:11789036 错误字数:16585454 10、Jcseg 复杂模式: 分词速度:394.75354 字符/毫秒 行数完美率:47.96% 行数错误率:52.03% 总的行数:2533709 完美行数:1215171 错误行数:1318538 字数完美率:38.84% 字数错误率:61.15% 总的字数:28374490 完美字数:11021588 错误字数:17352902 11、word分词 双向最小匹配算法: 分词速度:464.64523 字符/毫秒 行数完美率:46.76% 行数错误率:53.23% 总的行数:2533709 完美行数:1185013 错误行数:1348696 字数完美率:36.52% 字数错误率:63.47% 总的字数:28374490 完美字数:10365168 错误字数:18009322 12、word分词 逆向最大匹配算法: 分词速度:718.2688 字符/毫秒 行数完美率:46.72% 行数错误率:53.27% 总的行数:2533709 完美行数:1183913 错误行数:1349796 字数完美率:36.67% 字数错误率:63.32% 总的字数:28374490 完美字数:10407342 错误字数:17967148 13、word分词 正向最大匹配算法: 分词速度:718.0325 字符/毫秒 行数完美率:46.66% 行数错误率:53.33% 总的行数:2533709 完美行数:1182351 错误行数:1351358 字数完美率:36.73% 字数错误率:63.26% 总的字数:28374490 完美字数:10422209 错误字数:17952281 14、Jcseg 简易模式: 分词速度:944.65125 字符/毫秒 行数完美率:44.59% 行数错误率:55.4% 总的行数:2533709 完美行数:1130000 错误行数:1403709 字数完美率:35.78% 字数错误率:64.21% 总的字数:28374490 完美字数:10155059 错误字数:18219431 15、word分词 逆向最小匹配算法: 分词速度:1283.449 字符/毫秒 行数完美率:41.78% 行数错误率:58.21% 总的行数:2533709 完美行数:1058606 错误行数:1475103 字数完美率:31.68% 字数错误率:68.31% 总的字数:28374490 完美字数:8989797 错误字数:19384693 16、Ansj IndexAnalysis 面向索引的分词: 分词速度:720.5671 字符/毫秒 行数完美率:40.66% 行数错误率:59.33% 总的行数:2533709 完美行数:1030336 错误行数:1503373 字数完美率:29.81% 字数错误率:70.18% 总的字数:28374490 完美字数:8459997 错误字数:19914493 17、MMSeg4j ComplexSeg: 分词速度:1645.2795 字符/毫秒 行数完美率:38.81% 行数错误率:61.18% 总的行数:2533688 完美行数:983517 错误行数:1550171 字数完美率:29.6% 字数错误率:70.39% 总的字数:28374428 完美字数:8400089 错误字数:19974339 18、MMSeg4j SimpleSeg: 分词速度:2163.3494 字符/毫秒 行数完美率:37.57% 行数错误率:62.42% 总的行数:2533688 完美行数:951909 错误行数:1581779 字数完美率:28.45% 字数错误率:71.54% 总的字数:28374428 完美字数:8074021 错误字数:20300407 19、IKAnalyzer 智能切分: 分词速度:322.74545 字符/毫秒 行数完美率:37.55% 行数错误率:62.44% 总的行数:2533686 完美行数:951638 错误行数:1582048 字数完美率:27.97% 字数错误率:72.02% 总的字数:28374416 完美字数:7938726 错误字数:20435690 20、word分词 正向最小匹配算法: 分词速度:1377.8706 字符/毫秒 行数完美率:36.85% 行数错误率:63.14% 总的行数:2533709 完美行数:933769 错误行数:1599940 字数完美率:26.85% 字数错误率:73.14% 总的字数:28374490 完美字数:7621334 错误字数:20753156 21、Jieba INDEX: 分词速度:788.70605 字符/毫秒 行数完美率:36.02% 行数错误率:63.97% 总的行数:2533709 完美行数:912771 错误行数:1620938 字数完美率:25.9% 字数错误率:74.09% 总的字数:28374490 完美字数:7351689 错误字数:21022801 22、MMSeg4j MaxWordSeg: 分词速度:1685.1461 字符/毫秒 行数完美率:34.27% 行数错误率:65.72% 总的行数:2533688 完美行数:868440 错误行数:1665248 字数完美率:25.2% 字数错误率:74.79% 总的字数:28374428 完美字数:7152898 错误字数:21221530 23、IKAnalyzer 细粒度切分: 分词速度:334.3131 字符/毫秒 行数完美率:18.87% 行数错误率:81.12% 总的行数:2533686 完美行数:478176 错误行数:2055510 字数完美率:10.93% 字数错误率:89.06% 总的字数:28374416 完美字数:3103178 错误字数:25271238 重点说明: 关于分词速度,这个不是绝对的,每次测试都会有些差距,而完美率是固定的,所以按行数完美类排名 上面的评估报告中没有包括Stanford分词器和Paoding分词器 当前代码已经移除了Paoding分词器,因为Paoding分词器已经7年没有维护了 当前代码升级Stanford分词器到3.5.2,速度慢的无法等待评估完成,仅用于交互式效果对比 下面是之前代码对 Paoding分词器2.0.4-beta 和 Stanford分词器 3.3.1 的评估数据 Stanford Beijing University segmentation: 分词速度:14.4612055 字符/毫秒 行数完美率:58.29% 行数错误率:41.7% 总的行数:2533709 完美行数:1477034 错误行数:1056675 字数完美率:51.36% 字数错误率:48.63% 总的字数:28374490 完美字数:14574120 错误字数:13800370 Stanford Chinese Treebank segmentation: 分词速度:13.723294 字符/毫秒 行数完美率:55.45% 行数错误率:44.54% 总的行数:2533709 完美行数:1404968 错误行数:1128741 字数完美率:47.27% 字数错误率:52.72% 总的字数:28374490 完美字数:13414926 错误字数:14959564 Paoding MAX_WORD_LENGTH_MODE: 分词速度:1343.1075 字符/毫秒 行数完美率:14.19% 行数错误率:85.8% 总的行数:2533158 完美行数:359637 错误行数:2173521 字数完美率:7.72% 字数错误率:92.27% 总的字数:28373102 完美字数:2191349 错误字数:26181753 Paoding MOST_WORDS_MODE: 分词速度:1338.9246 字符/毫秒 行数完美率:11.6% 行数错误率:88.39% 总的行数:2533158 完美行数:294011 错误行数:2239147 字数完美率:5.92% 字数错误率:94.07% 总的字数:28373102 完美字数:1680261 错误字数:26692841
效果对比:
以 我爱楚离陌 为例子: 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】 我 爱 楚离 陌 smartcn分词器 的分词结果: 1 、【smartcn】 我 爱 楚 离 陌 FudanNLP分词器 的分词结果: 1 、【FudanNLP】 我 爱楚离陌 Jieba分词器 的分词结果: 1 、【SEARCH】 我爱楚 离 陌 2 、【INDEX】 我爱楚 离 陌 Jcseg分词器 的分词结果: 1 、【简易模式】 我 爱 楚 离 陌 2 、【复杂模式】 我 爱 楚 离 陌 MMSeg4j分词器 的分词结果: 1 、【SimpleSeg】 我爱 楚 离 陌 2 、【ComplexSeg】 我爱 楚 离 陌 3 、【MaxWordSeg】 我爱 楚 离 陌 IKAnalyzer分词器 的分词结果: 1 、【智能切分】 我 爱 楚 离 陌 2 、【细粒度切分】 我 爱 楚 离 陌