作为中文信息处理的“桥头堡”,中文分词在国内的关注度似乎远远超过了自然语言处理的其他研究领域。在中文分词中,资源的重要性又不言而喻,最大匹配法等需要一个好的词表,而基于字标注的中文分词方法又需要人工加工好的分词语料库。所以想研究中文分词,第一步需要解决的就是资源问题,这里曾经介绍过“LDC上免费的中文信息处理资源”,其中包括一个有频率统计的词表,共计44405条,就可以作为一个不错的中文分词词表使用。而一个好的人工分词语料库,需要很大的人力物力投入,所以无论研究还是商用往往需要一定的费用购买,好在SIGHAN Bakeoff为我们提供了一个非商业使用(non-commercial)的免费获取途径,以下将介绍SIGHAN Bakeoff及相关的中文分词入门资源。
  SIGHAN是国际计算语言学会(ACL)中文语言处理小组的简称,其英文全称为“Special Interest Group for Chinese Language Processing of the Association for Computational Linguistics”,又可以理解为“SIG汉“或“SIG漢“。而Bakeoff则是SIGHAN所主办的国际中文语言处理竞赛,第一届于2003年在日本札幌举行(Bakeoff 2003),第二届于2005年在韩国济州岛举行(Bakeoff 2005), 而2006年在悉尼举行的第三届(Bakeoff 2006)则在前两届的基础上加入了中文命名实体识别评测。目前SIGHAN Bakeoff已成功举办了6届,其中Bakeoff 2005的数据和结果在其主页上是完全免费和公开的,但是请注意使用的前提是非商业使用(non-commercial):

  The data and results for the 2nd International Chinese Word Segmentation Bakeoff are now available for non-commercial use.

  在Bakeoff 2005的主页上,我们可以找到如下一行:“The complete training, testing, and gold-standard data sets, as well as the scoring script, are available for research use”,在这一行下面提供了三个版本的icwb2-data。下载解压后,通过README就可以很清楚的了解到它包含哪些中文分词资源,特别需要说明的是这些中文分词语料库分别由台湾中央研究院(Academia Sinica)、香港城市大学(City University of Hong Kong)、北京大学(Peking University)及微软亚洲研究院(Microsoft Research)提供,其中前二者是繁体中文,后二者是简体中文,以下按照README简要介绍icwb2-data:

1) 介绍(Introduction):
  本目录包含了训练集、测试集及测试集的(黄金)标准切分,同时也包括了一个用于评分的脚本和一个可以作为基线测试的简单中文分词器。(This directory contains the training, test, and gold-standard data used in the 2nd International Chinese Word Segmentation Bakeoff. Also included is the script used to score the results submitted by the bakeoff participants and the simple segmenter used to generate the baseline and topline data.)

2) 文件列表(File List)
  在gold目录里包含了测试集标准切分及从训练集中抽取的词表(Contains the gold standard segmentation of the test data along with the training data word lists.)
  在scripts目录里包含了评分脚本和简单中文分词器(Contains the scoring script and simple segmenter.)
  在testing目录里包含了未切分的测试数据(Contains the unsegmented test data.)
  在training目录里包含了已经切分好的标准训练数据(Contains the segmented training data.)
  在doc目录里包括了bakeoff的一些指南(Contains the instructions used in the bakeoff.)

3) 编码(Encoding Issues)
  文件包括扩展名”.utf8”则其编码为UTF-8(Files with the extension ".utf8" are encoded in UTF-8 Unicode.)
  文件包括扩展名”.txt”则其编码分别为(Files with the extension ".txt" are encoded as follows):
  前缀为as_,代表的是台湾中央研究院提供,编码为Big Five (CP950);
  前缀为hk_,代表的是香港城市大学提供,编码为Big Five/HKSCS;
  前缀为msr_,代表的是微软亚洲研究院提供,编码为 EUC-CN (CP936);
  前缀为pku_,代表的北京大学提供,编码为EUC-CN (CP936);
  EUC-CN即是GB2312(EUC-CN is often called "GB" or "GB2312" encoding, though technically GB2312 is a character set, not a character encoding.)

4) 评分(Scoring)
  评分脚本“score”是用来比较两个分词文件的,需要三个参数(The script 'score' is used to generate compare two segmentations. The script takes three arguments):
  1. 训练集词表(The training set word list)
  2. “黄金”标准分词文件(The gold standard segmentation)
  3. 测试集的切分文件(The segmented test file)
 
  以下利用其自带的中文分词工具进行说明。在scripts目录里包含一个基于最大匹配法的中文分词器mwseg.pl,以北京大学提供的人民日报语料库为例,用法如下:
  ./mwseg.pl ../gold/pku_training_words.txt < ../testing/pku_test.txt > pku_test_seg.txt
  其中第一个参数需提供一个词表文件pku_training_word.txt,输入为pku_test.txt,输出为pku_test_seg.txt。
  利用score评分的命令如下:
  ./score ../gold/pku_training_words.txt ../gold/pku_test_gold.txt pku_test_seg.txt > score.txt
  其中前三个参数已介绍,而score.txt则包含了详细的评分结果,不仅有总的评分结果,还包括每一句的对比结果。这里只看最后的总评结果:


= SUMMARY:
=== TOTAL INSERTIONS: 9274
=== TOTAL DELETIONS: 1365
=== TOTAL SUBSTITUTIONS: 8377
=== TOTAL NCHANGE: 19016
=== TOTAL TRUE WORD COUNT: 104372
=== TOTAL TEST WORD COUNT: 112281
=== TOTAL TRUE WORDS RECALL: 0.907
=== TOTAL TEST WORDS PRECISION: 0.843
=== F MEASURE: 0.874
=== OOV Rate: 0.058
=== OOV Recall Rate: 0.069
=== IV Recall Rate: 0.958
### pku_test_seg.txt 9274 1365 8377 19016 104372 112281 0.907 0.843 0.874 0.058 0.069 0.958

  说明这个中文分词器在北大提供的语料库上的测试结果是:召回率为90.7%,准确率为84.3%,F值为87.4%等。
  SIGHAN Bakeoff公开资源的一个重要意义在于这里提供了一个完全公平的平台,任何人都可以拿自己研究的中文分词工具进行测评,并且可以和其公布的比赛结果对比,是驴子是马也就一目了然了。

注:原创文章,转载请注明出处“我爱自然语言处理”:www.52nlp.cn

本文链接地址:https://www.52nlp.cn/中文分词入门之资源

作者 52nlp

《中文分词入门之资源》有34条评论
  1. 受益良多,你要是早发一周我就用上了……,上周做作业,写了一份25页的关于中文分词的综述报告.

    [回复]

    52nlp 回复:

    呵呵,写综述比写这个难多了!

    [回复]

  2. 请问在使用score脚本进行评测时有什么特别需要注意的吗?我使用时总是出现“Can't open /usr/tmp/comp012928 at score.pl line 104, line 1.”请问原因何在?

    [回复]

    52nlp 回复:

    按说是没有什么需要注意的,不过这个测试需要在Linux环境下做。你的这个情况不太清楚,看原因好像出在score的107行:
    open (T1, ">$tmp1") or die "Can't open $tmp1";
    再仔细检查一下几个输入文件是否放正确了。

    [回复]

  3. 谢谢你这么快的回复,我也觉得问题应该出在这一行。不过我是在Windows环境下用的,在Windows环境下应该可以用的,我以前用NER的评测脚本是可以的。而且用mwseg.pl也是可以的,就是score不行。

    [回复]

    52nlp 回复:

    score需要调用linux下的diff:
    $diff = "/usr/bin/diff";
    所以你要是用的话好像需要先安装一个widows下的diff。

    [回复]

    52nlp 回复:

    我找了一下,在widows下使用需做如下修改:
    Perl运行环境:为了能够在windows下运行perl,需要下载perl的解释器,我使用了ActivePerl,同时score需要GNU diffutils的支持,在score文件中有相关说明,在windows环境下,我使用diffutils-2.8.7-1.exe。请根据操作平台到文献[2]、[3]中进行相应下载。
    注:根据diffutils的实际安装目录,需要修改score中相应变量$diff = "/usr/bin/diff"的值。

    注:diffutils安装路径中不能有空格,如
    $diff = "C:/GnuWin32/bin/diff.exe";

    具体可参考下面这个网页:
    http://hi.baidu.com/%D5%D4%B7%F6%B7%E7/blog/item/e844213459f311bfd0a2d31e.html

    [回复]

    YuJD 回复:

    非常感谢!我明白了,我试一下。

    宋治勋 回复:

    你好,我在安装diffutlis的时候遇到了问题,可以加你的联系方式咨询一下吗

    [回复]

    52nlp 回复:

    抱歉,很忙,没有时间做在线咨询;如果有问题,最好google,实在不行,可以把错误信息贴在这里,有时间我会看一下,但是很多也是靠Google.

  4. 我刚运行score脚本成功了,再次感谢52NLP!

    [回复]

    52nlp 回复:

    不客气,欢迎常来看看!

    [回复]

    袁莺 回复:

    我安装了ActivePerl和diffutils-2.8.7-1.exe,也修改了score中$diff = "/usr/bin/diff"变量和$tmp1,$tmp2变量的值。执行mwseg.pl成功,但执行score时,还是报错:
    Can’t open C:/comp014140 at score.pl line 109, line 1.

    请问是什么原因?不懂Perl,还请帮忙看看。

    [回复]

    袁莺 回复:

    已经成功了
    是要修改score文件中$tmp1,$tmp2变量的值。
    $tmp1 = "comp01";

    [回复]

    52nlp 回复:

    自己动手,丰衣足食!:-)

  5. […] 在52nlp上的这篇文章介绍到了Bakeoff 2005的数据。SIGHAN是国际计算语言学会(ACL)中文语言处理小组的简称,其英文全称为“Special Interest Group for Chinese Language Processing of the Association for Computational Linguistics”,而Bakeoff则是SIGHAN所主办的国际中文语言处理竞赛,然后在Bakeoff 2005的主页上,我们可以下载到用于测试的数据,数据主要是由北京大学,微软亚洲研究院,香港城市大学,台湾中央研究院提供。 […]

  6. 在windows上应该如何执行score脚本啊? 输入了./score ../gold/pku_training_words.txt ../gold/pku_test_gold.txt pku_test_seg.txt > score.txt 无法执行识别不了score。 已经下了diff。

    [回复]

    52nlp 回复:

    可以看看上面的评论,有这个问题的讨论,score是一个perl脚本,需要你在windows下配置perl环境

    [回复]

    为之 回复:

    已经配置perl环境 ,而且也配置了diff,但是还是识别不了score,不知道怎么检测问题出在哪里,请教一下大家,谢谢
    ~~~

    [回复]

  7. 用komodo运行了,想把里面的参数改成直接输入文件名,可是好像不行诶,一直提示“系统找不到指定路径”

    [回复]

  8. 在Windows下安了ActivePerl和diffutils-2.8.7-1.exe,也修改了tmp1=“comp01”;tmp2 = “comp02$$”;可是要怎么输入参数呀,想把它改成直接输入文件名的,但是不行诶,会一直提示“系统找不到指定的路径”,怎么办

    [回复]

    52nlp 回复:

    抱歉,不太明白这个描述,不清楚哪一步出现问题

    [回复]

    储兵兵 回复:

    1.首先安装:ActivePerl,下载地址:http://www.activestate.com/activeperl/downloads,选择32或者64位
    2.然后安装:diffutils-2.8.7-1.exe和patch-2.5.9-7-setup.exe,下载地址:http://download.csdn.net/detail/naodanyihao/5321461,需要注册个账号,要严格按照步骤,特别是添加环境变量,代码不能解析“空格”,或者在安装路径的时候选择不要带空格的文件夹名称(Progarm Files就不行)
    3.然后修改score文件,diff=“diff”(需要设置环境变量)或者diff="安装diff的路径/diff.exe(路径不能有空格)",$tmp1 = "comp01";

    [回复]

    储兵兵 回复:

    $diff = "diff";$tmp1 = "comp01";

  9. 非常感谢,作为初学者收益颇多。有个问题十分困扰,麻烦大神们指点:训练集词表 pku_training_words.txt 是用来做什么的呢?我看里面的文本内容也并未分词。在中文分词器mwseg.pl和评分脚本都有这个参数。

    [回复]

    lonxz 回复:

    不好意思,刚才没注意,改用写字板程序打开pku_training_words.txt ,时才看到是一个词一行 ,哈哈。

    [回复]

  10. 打扰了!我的是win10系统,按照正文和评论里的提示操作,没有报错,但最后得到的是两个空文件,求教,求提示,已百度谷歌过,但是没找到原因!

    [回复]

    52nlp 回复:

    抱歉,不清楚

    [回复]

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注