当前位置: 首页 > 软件库 > 程序开发 > 中文分词库 >

cws_evaluation

中文分词器分词效果评估对比
授权协议 GPL
开发语言 Java
所属分类 程序开发、 中文分词库
软件类型 开源软件
地区 国产
投 递 者 余靖
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

中文分词器分词效果评估对比

使用说明:

如何建立开发环境?

如果是使用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 、【细粒度切分】  我 爱 楚 离 陌

  • cws_evaluation 是一个Java开源项目,用于对Java中文分词器分词效果进行评估。 支持的分词器有:word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器、jcseg分词器、fudannlp分词器、paoding分词器、jieba分词器、stanford分词器等9大中文分词器。 评估采用的测试文本有253 3709行,共2837 4490个字符。 最好的评

  • cws_evaluation是一个Java开源项目,用于对中文分词器的分词效果进行评估对比,目前支持9大中文分词器。分别是:word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器、jcseg分词器、fudannlp分词器、smartcn分词器、jieba分词器、stanford分词器。   在1.1中,将9大中文分词器都升级到了最新版本,并采用Maven构建项目,增加了

  • 作者:tiandi,小米AI实验室,智能问答、智能客服方向。

 相关资料
  • Genius Genius是一个开源的python中文分词组件,采用 CRF(Conditional Random Field)条件随机场算法。 Feature 支持python2.x、python3.x以及pypy2.x。 支持简单的pinyin分词 支持用户自定义break 支持用户自定义合并词典 支持词性标注 Source Install 安装git: 1) ubuntu or debian

  • 真阳性 true positives, TP 真阴性 true negatives, TN 假阳性 false positives, FP 假阴性  false negatives, FN) 准确率 分类器预测正确性的比例,可以通过LogisticRegression.score() 来计算准确率 精确率 分类器预测出的脏话中真的是脏话的比例 P=TP/(TP+FP) 召回率 也叫灵敏度。所有真的

  • 我们有一个具有以下配置的elasticsearch索引: 结果按字段“number”进行分组,并以这种方式返回每个数字的最佳匹配。但我需要的是一个自定义的评分/排序的结果的基础上的词在结果的顺序的正确性。所以对于“乔治·布什”的质疑,“乔治·布什”应该总是比“布什·乔治”得分更高。匹配短语搜索不适合我,因为我在搜索中使用模糊性。

  • 本篇文档对实验评估的使用流程进行介绍,包括实验评估的基本概念,实验评估的使用流程。 1.1. 基本概念与数据指标 优化指标 用来衡量实验效果的数据度量,优化指标跟实验设计初衷相关,是期望通过实验提高的数据度量。优化指标,典型如:提交订单的金额,支付的转化率。 UV 去重用户数,实际计算中会在所选时间段内去重。AB测试中一般跟实验版本对应,用以表示某个实验版本中参与用户数。 事件的触发次数 某一个事

  • 问题内容: 我正在ElasticSearch中实现自动完成索引,并且遇到了排序/评分问题。假设索引中包含以下字符串: 当我搜索“甜甜圈”时,我希望结果按术语位置来排序,如下所示: 我不知道如何做到这一点。字词排名未纳入默认的评分逻辑,而且我找不到找到方法。似乎很简单,尽管以前其他人也必须遇到这个问题。有人知道吗? 谢谢! 问题答案: 根据安德烈(Andrei)的答案,这是我最终得到的解决方案,并扩

  • 介绍 现阶段,应用于搜索引擎和自然语言处理的中文分词库五花八门,使用方式各不统一,虽然有适配于Lucene和Elasticsearch的插件,但是我们想在多个库之间选择更换时,依旧有学习时间。 Hutool针对常见中文分词库做了统一接口封装,既定义一套规范,隔离各个库的差异,做到一段代码,随意更换。 Hutool现在封装的引擎有: Ansj HanLP IKAnalyzer Jcseg Jieba

  • word分词是一个Java实现的分布式的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。能通过自定义配置文件来改变组件行为,能自定义用户词库、自动检测词库变化、支持大规模分布式环境,能灵活指定多种分词算法,能使用refine功能灵活控制分词结果,还能使用词频统计、词性标注、同义标注、反

  • 我一直在尝试用java编写一个简单的词法分析器。 File Token.java如下: Lexer如下:Lexer。JAVA 并且可以用Try.java测试如下: 说出输入。txt有 我期望的输出是 但我面临的问题是:它把每个数字都当作 而且它不能识别实数。我得到: 意外符号:'.' 为了达到预期的效果,需要做哪些改变?