[原创]中文分词器分词效果的评测方法

2013年8月27日 由 learnhard留言 »

转载请注明出处:http://www.codelast.com/

现在有很多开源的中文分词器库,如果你的项目要选择其一来实现中文分词功能,必然要先评测它们的分词效果。如何评测?下面详细叙述。

【1】黄金标准/Golden standard

所谓的黄金标准是指:评价一个分词器分词结果的好坏,必然要有一份“公认正确”的分词结果数据来作为参照。
通常,我们使用一份人工标注的数据作为黄金标准。但是,就算是人工标注的数据,每个人对同一句话的分词结果恐怕也持有不同的意见,例如,有一句话“科学技术是第一生产力”,有人说应该这样分词:“科学技术 是 第一 生产力”,又有人说应该这样分词:“科学 技术 是 第一 生产力”。那么,到底哪种才是对的呢?
因此,要找有权威的分词数据来做为黄金标准。
大家可以使用SIGHAN(国际计算语言学会(ACL)中文语言处理小组)举办的国际中文语言处理竞赛Second International Chinese Word Segmentation Bakeoff(http://sighan.cs.uchicago.edu/bakeoff2005/)所提供的公开数据来评测,它包含了多个测试集以及对应的黄金标准分词结果。
文章来源:http://www.codelast.com/
【2】评价指标
精度(Precision)、召回率(Recall)、F值(F-mesure)是用于评价一个信息检索系统的质量的3个主要指标,以下分别简记为P,R和F。同时,还可以把错误率(Error Rate)作为分词效果的评价标准之一(以下简记为ER)。
直观地说,精度表明了分词器分词的准确程度;召回率也可认为是“查全率”,表明了分词器切分正确的词有多么全;F值综合反映整体的指标;错误率表明了分词器分词的错误程度。
P、R、F越大越好,ER越小越好。一个完美的分词器的P、R、F值均为1,ER值为0。
通常,召回率和精度这两个指标会相互制约。

例如,还是拿上面那句话作为例子:“科学技术是第一生产力”(黄金标准为“科学技术 是 第一 生产力”),假设有一个分词器很极端,把几乎所有前后相连的词的组合都作为分词结果,就像这个样子:“科学 技术 科学技术 是 是第一 第一生产力 生产力”,那么毫无疑问,它切分正确的词已经覆盖了黄金标准中的所有词,即它的召回率(Recall)很高。但是由于它分错了很多词,因此,它的精度(Precision)很低。

因此,召回率和精度这二者有一个平衡点,我们希望它们都是越大越好,但通常不容易做到都大。
文章来源:http://www.codelast.com/
为了陈述上述指标的计算方法,先定义如下数据:
:黄金标准分割的单词数
:分词器错误标注的单词数
:分词器正确标注的单词数

则以上各指标的计算公式如下:

文章来源:http://www.codelast.com/
【3】正确及错误标注的计数算法

如上所述,我们要先计算出e和c,才能计算出各指标值。是按如下算法来统计的:
在“黄金标准”和“待评测的结果”中,理论上,除了分词后添加的空格之外,它们所有的文字都是相同的;唯一的不同就在于那些有差异的分词结果的位置上。例如,“计算机 是个 好东西”(黄金标准)与“计算机 是 个 好东西”(待评测的结果)的差异就在于“是个”与“是 个”的差异,其余分词结果都是相同的。因此,只需要找到这种差异的个数,就可以统计出分词器正确标注了多少个词、错误标注了多少个词。
 
以下面的分词结果为例:
“计算机 总是 有问题”——黄金标准
“计算机 总 是 有问题”——待评测的结果
 
给分出来的每个词都做位置的标记(位置从1开始):
(1,4),(4,6),(6,9) ——黄金标准
(1,4),(4,5),(5,6),(6,9) ——待评测的结果
文章来源:http://www.codelast.com/
那么我们会发现,(1,4)和(6,9)这两个词是相同的(即“计算机”和“有问题”),而差异在于(4,6)和(4,5),(5,6)(即“总是”和“总 是”),因此,我们只需要比较这两个标注结果中的差异数,就可以知道分词器正确、错误地标注了多少个单词。在此例中,正确的标注的单词数为2,错误标注的单词数为2。
 
需要说明的是:在此例中,也可以认为错误标注的单词数为1(即“总是”与“总 是”的差异),按照最大错误数来算会使错误率升高(在分词精度很差的情况下,可能会导致ER>100%),不过,在所有分词器都使用同一标准来评测的情况下,也就会很公平,并不会影响到最终的结论。

有了上面的算法,就很容易写出一个评测程序了。这里就不把程序放上来了。
文章来源:http://www.codelast.com/
【4】参考文献
① Word Segmentation: Quick but not Dirty.

Timothy Gambell 1814 Clover Lane Fort Worth, TX 76107, timothy.gambell@aya.yale.edu
Charles Yang* Department of Linguistics, Yale University New Haven, CT 06511, charles.yang@yale.edu

② Chinese Segmentation and New Word Detection using Conditional Random Fields
Fuchun Peng, Fangfang Feng, Andrew McCallum, Computer Science Department, University of Massachusetts Amherst, 140 Governors Drive, Amherst, MA, U.S.A. 01003, {fuchun, feng, mccallum}@cs.umass.edu
③ A Compression-based Algorithm for Chinese Word Segmentation

W. J. Teahan, The Robert Gordon University
Rodger McNab, University of Waikato
Yingying Wen, University of Waikato
Ian H. Witten, University of Waikato

中文分词器分词效果的评测方法相关推荐

  1. 公司开源的java分词,Java开源项目cws_evaluation:中文分词器分词效果评估

    通过对前文<word分词器.ansj分词器.mmseg4j分词器.ik-analyzer分词器分词效果评估>中写的评估程序进行重构改进,形成了一个新的Java开源项目cws_evaluat ...

  2. word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器分词效果评估(转)

    转自:http://yangshangchuan.iteye.com/blog/2056537(有代码可下载) word分词器.ansj分词器.mmseg4j分词器.ik-analyzer分词器分词效 ...

  3. word分词器、ansj分词器、mmseg4j分词器、ik-analyzer分词器分词效果评估

    2019独角兽企业重金招聘Python工程师标准>>> word分词是一个Java实现的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义. 能准确识别英文. ...

  4. ik中文分词器分词原则、原理

    转自:https://blog.csdn.net/lala12d/article/details/82776571 仅供学习 1.IK分词器也是基于正向匹配的分词算法. 2.IK分词器,基本可分为两种 ...

  5. ik分词器 分词原理_Solr7.7.2中文分词器

    中文分词器的配置 1.7版本之后solr内置了中文分词器所以可以使用solr内置的分词器进行配置 1.在解压的目录内找到分词器包 2.将包放在solr项目的lib下 3.修改配置文件修改他下面的con ...

  6. ik分词器 分词原理_ElasticSearch 集成Ik分词器

    1 . 由于 ElasticSearch 默认的分词器不支持中文分词,所以我们需要集成IK 分词器. 2. 集成步骤 https://github.com/medcl/elasticsearch-an ...

  7. 中文文字检测与识别的评测方法

    评测代码github地址 如果对您有所帮助请star一下,谢谢 这是我将下面介绍的两种方法的代码合并了,并且该了一些原有的bug,如-p参数不能用等,还加了end to end的识别结果的评测方法. ...

  8. r与python自然语言处理_Python自然语言处理实践: 在NLTK中使用斯坦福中文分词器 | 我爱自然语言处理...

    斯坦福大学自然语言处理组是世界知名的NLP研究小组,他们提供了一系列开源的Java文本分析工具,包括分词器(Word Segmenter),词性标注工具(Part-Of-Speech Tagger), ...

  9. ElasticSearch最全分词器比较及使用方法

    介绍:ElasticSearch 是一个基于 Lucene 的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口.Elasticsearch 是用 Java 开 ...

最新文章

  1. kvm虚拟机vnc配置
  2. java 折半_折半算法
  3. C++ 判断某个变量是某一种类型
  4. 2090. 「ZJOI2016」旅行者 分治,最短路
  5. python中异常和错误是同一个概念吗_Python 错误与异常
  6. PyTorch Cookbook by Eric
  7. python求两组同学的平均成绩_Python学习心得2:求平均值
  8. 【02】制作第一个zblog模板第二期,熟悉模板所有的开发运行和调试机制·提前做好所有纯html页面
  9. 如何制作微软原版Win10安装盘
  10. 绘制盐沼植被图的混合方法-文献阅读
  11. oracle用户常见job权限不足,JOB调用的权限问题
  12. 第十五章 Caché WebSocket
  13. 关键词搜图、截图小助手——有了它妈妈再也不用担心我数据集啦
  14. 【数值分析×机器学习】以SVD的分解形式进行深度神经网络的训练(逐渐熟练)
  15. 基于MATLAB的BPSK和QPSK调制的性能比较
  16. 吴恩达推荐好文:中国人工智能的崛起
  17. Android蓝牙问题
  18. arduino 步进电机驱动库_Arduino第三方库_步进电机控制
  19. 指尖轻舞桌面:Slide On Desk - 更多功能与独特体验
  20. 利用1394线实现双机互连

热门文章

  1. 浅谈Linux服务器究竟设置多大交换分区合适
  2. linux下find命令用法
  3. leetcode算法题--完美数
  4. leetcode算法题--二叉搜索树的第k大节点
  5. linux虚拟网络设备--虚拟机网卡和linux bridge上tap设备的关系(七)
  6. SQL Select语句完整的执行顺序:
  7. 区块链软件公司:区块链运用在金融上运用的优点有哪些?
  8. Linux设备模型(热插拔、mdev 与 firmware)
  9. 用一个实际例子理解Docker volume工作原理
  10. python解释器的下载和安装