首先感谢52nlp的系列博文(http://www.52nlp.cn/),提供了自然语言处理的系列学习文章,让我学习到了如何实现一个基于隐含马尔可夫模型HMM的中文分词器。

在编写一个中文分词器前,第一步是需要找到一些基础的词典库等资源,用以训练模型参数,并进行后续的结果评测,这里直接转述52nlp介绍的“中文分词入门之资源”:

原文地址:http://www.52nlp.cn/%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D%E5%85%A5%E9%97%A8%E4%B9%8B%E8%B5%84%E6%BA%90

这里我从http://sighan.cs.uchicago.edu/bakeoff2005/下载icwb2-data.zip词库做模型训练与后续评测使用。

作为中文信息处理的“桥头堡”,中文分词在国内的关注度似乎远远超过了自然语言处理的其他研究领域。在中文分词中,资源的重要性又不言而喻,最大匹配法等需要一个好的词表,而基于字标注的中文分词方法又需要人工加工好的分词语料库。所以想研究中文分词,第一步需要解决的就是资源问题,这里曾经介绍过“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公开资源的一个重要意义在于这里提供了一个完全公平的平台,任何人都可以拿自己研究的中文分词工具进行测评,并且可以和其公布的比赛结果对比,是驴子是马也就一目了然了。

下面是我自己实现的中文分词器在msra的测试集上的分词效果:

=== SUMMARY:
=== TOTAL INSERTIONS:   7303
=== TOTAL DELETIONS:    4988
=== TOTAL SUBSTITUTIONS:        15988
=== TOTAL NCHANGE:      28279
=== TOTAL TRUE WORD COUNT:      106873
=== TOTAL TEST WORD COUNT:      109188
=== TOTAL TRUE WORDS RECALL:    0.804
=== TOTAL TEST WORDS PRECISION: 0.787
=== F MEASURE:  0.795
=== OOV Rate:   0.026
=== OOV Recall Rate:    0.402
=== IV Recall Rate:     0.815
###     msr_test_result.txt     7303    4988    15988   28279   106873  109188  0.804   0.787   0.795   0.026   0.402   0.815

分词效果如下,个人感觉对于一个花三小时实现的程序来说,效果还不错 

而/大量/“/看/图学/计算机/”/教材/的/出现/,/和/蔡志忠/的/漫画/诸子/相映/成趣/,/掀起/了/一股/成人/“/看/图识/字/”/的/出版潮/,/到/后/来竟/说/不清/是/谁/影响/了/谁/。/
words.length=38   timecost:0
在/日常/生活/中/,/像/“/软件/”/、/“/硬件/”/、/“/死/循环/”/一类/的/新词/充实/了/我们/的/语言库/。/
words.length=74   timecost:0
而/计算/机造/词/功能/的/运用/,/形成/了/一种/被/称为/“/语词/传染/”/的/新/现象/:/如果/有人/在/电脑/里/造出/了/一个/错误/的/词/,/所有/使用/该/电脑/的/人/都/会出/现同/一/错误/,/而且/防不/胜防/。/
words.length=35   timecost:0
至于/计算机/的/使用/对/学生/书法/、/笔顺/、/发音/的/影响/,/更/是/教育/学家/关心/的/话题/。/
words.length=56   timecost:0
再往/远些/看/,/随着/汉字识别/和/语音识别技术/的/发展/,/中文/计算/机用/户/将/跨越/语言/差异/的/鸿沟/,/在/录入/上/走向/中西/文求/同/的/道路/。/
words.length=35   timecost:0
而/计算机/翻译/系统/与/现代/汉语/分析/相辅/相成/,/正/推动/着/人工/智能/科学/的/前进/…/…/
words.length=68   timecost:0
每/跨过/一道/障碍/,/人们/都会/发现/一片/新/的/开阔/地/,/每/经过/一次/剧烈/的/碰撞/,/都/将/激起/一团/耀眼/的/火花/,/这/就/是/崭新/的/计算机/技术/和/古老/的/中华/文化/的/对话/。/

从头开始编写基于隐含马尔可夫模型HMM的中文分词器之一 - 资源篇相关推荐

  1. 转:从头开始编写基于隐含马尔可夫模型HMM的中文分词器

    http://blog.csdn.net/guixunlong/article/details/8925990 从头开始编写基于隐含马尔可夫模型HMM的中文分词器之一 - 资源篇 首先感谢52nlp的 ...

  2. 隐含马尔可夫模型HMM的中文分词器 入门-1

    <pre name="code" class="sql">http://sighan.cs.uchicago.edu/bakeoff2005/ ht ...

  3. python地图匹配_基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法

    1. 摘要 本篇博客简单介绍下用隐马尔科夫模型(Hidden Markov Model, HMM)来解决地图匹配(Map-Matching)问题.转载请注明网址. 2. Map-Matching(MM ...

  4. m基于隐马尔科夫模型(HMM)的手机用户行为预测(MMUB)算法matlab仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 隐马尔可夫模型(Hidden Markov Model,HMM)是一种统计模型,广泛应用在语音识别, ...

  5. 基于隐马尔科夫模型的道路匹配

    随着导航定位.移动互联网等技术的快速发展,手机.车载定位装置等设备都可以进行地理空间数据采集.这些不同类型的地理空间数据往往能反映出某种规律.以时空轨迹为例,这些新形式的泛在地理空间数据,能够反映个体 ...

  6. 数学之美-隐含马尔可夫模型-笔记

    <数学之美>吴军 著 第二版 --读书笔记 原理 通信模型: Created with Raphaël 2.1.2信息.上下文信息.上下文传递的信息传递的信息接收的信息接收的信息(s1,s ...

  7. 北京大学生物信息学学习(6)隐含马尔可夫模型

    北京大学生物信息学学习(6)隐含马尔可夫模型 马尔可夫链(时间和状态都离散的状态组合) https://www.bilibili.com/video/BV13t411G7oh?p=14 隐含马尔可夫模 ...

  8. 隐含马尔可夫模型——Hidden Markov models (HMM)

    本文首发于 算法社区 dspstack.com,转载请注明出处,谢谢. 写在前面# 统计学是个好东东,说它是个好东东,因为统计学不像其他有些学科,它不仅在科研领域应用广泛,在平常的生活中我们也会经常碰 ...

  9. 简述隐含马尔可夫模型

    隐含马尔可夫模型常用于解决自然语言处理的问题.例如语音识别.机器翻译等. 目录 通信模型 隐含马尔可夫模型 延伸阅读:隐含马尔可夫的训练 小结 通信模型 在通信模型中,如何根据观察数据o1,o2,o3 ...

最新文章

  1. 一个毕业生初入社会的历程 (四)一次简单的面试...
  2. leetcode算法题--最长湍流子数组
  3. 为什么matplotlib显示opencv图像不正常
  4. 可动态扩展的数据库模型设计
  5. Linux网络服务之DNS(1)
  6. CMS系统模版引擎设计(3):Label基类的设计
  7. windows和linux下的文件路径表示
  8. 上海新中考体育考试方案公布:总分30分不变
  9. 关于JDK中的集合总结(二)
  10. MAC环境配置SDK
  11. Graph Embedding:Node2Vec
  12. 关于将网易有道词典单词本导出到必应词典生词本的尝试
  13. 再传喜讯,鸿雁中标杭州地铁3号线配电工程
  14. 台式计算机如何定时关机,台式电脑如何设置每天定时关机
  15. bzoj 3730 震波 —— 动态点分治+树状数组
  16. 生日提醒功能-提前三天
  17. 知识管理文档协同不一定要用语雀和石墨,用它效果更好
  18. 使用MfgTool工具进行系统烧写
  19. 【转】Mac突然连不上WiFi解决步骤
  20. 经纬恒润智能驾驶创新之路

热门文章

  1. 深度剖析E680G开发四.移植OPIE操作系统(中)-交叉编译Qte
  2. 正则表达式常用规则:js正则 匹配 汉字、数字、英文字母、下划线 的 正则表达式
  3. 先有鸿钧后有天,陆压道君还在前
  4. 安可目录入围产品名单(安可目录入围产品名单 服务器)
  5. 服务器虚拟化软件的结构组成和各组件的主要功能与作用
  6. Pandas之文件读取与存储
  7. phonegap(cordova) 自定义插件代码篇(三)----支付宝支付工具整合
  8. C++入门——实现推箱子游戏
  9. PicGo使用中遇到的问题
  10. 虚拟机内存cache使用不起来,pagecache命中率低