数学之美 系列二 -- 谈谈中文分词

谈谈中文分词
----- 统计语言模型在中文处理中的一个应用

上回我们谈到利用统计语言模型进行语言处理,由于模型是建立在词的基础上的,对于中日韩等语言,首先需要进行分词。例如把句子 “中国航天官员应邀到美国与太空总署官员开会。”

分成一串词:
中国 / 航天 / 官员 / 应邀 / 到 / 美国 / 与 / 太空 / 总署 / 官员 / 开会。

最容易想到的,也是最简单的分词办法就是查字典。这种方法最早是由北京航天航空大学的梁南元教授提出的。

用 “查字典” 法,其实就是我们把一个句子从左向右扫描一遍,遇到字典里有的词就标识出来,遇到复合词(比如 “上海大学”)就找最长的词匹配,遇到不认识的字串就分割成单字词,于是简单的分词就完成了。这种简单的分词方法完全能处理上面例子中的句子。八十年代,哈工大的王晓龙博士把它理论化,发展成最少词数的分词理论,即一句话应该分成数量最少的词串。这种方法一个明显的不足是当遇到有二义性 (有双重理解意思)的分割时就无能为力了。比如,对短语 “发展中国家” 正确的分割是“发展-中-国家”,而从左向右查字典的办法会将它分割成“发展-中国-家”,显然是错了。另外,并非所有的最长匹配都一定是正确的。比如“上海大学城书店”的正确分词应该是 “上海-大学城-书店,” 而不是 “上海大学-城-书店”。

九十年代以前,海内外不少学者试图用一些文法规则来解决分词的二义性问题,都不是很成功。90年前后,清华大学的郭进博士用统计语言模型成功解决分词二义性问题,将汉语分词的错误率降低了一个数量级。

利用统计语言模型分词的方法,可以用几个数学公式简单概括如下:
我们假定一个句子S可以有几种分词方法,为了简单起见我们假定有以下三种:
A1, A2, A3, ..., Ak,
B1, B2, B3, ..., Bm
C1, C2, C3, ..., Cn

其中,A1, A2, B1, B2, C1, C2 等等都是汉语的词。那么最好的一种分词方法应该保证分完词后这个句子出现的概率最大。也就是说如果 A1,A2,..., Ak 是最好的分法,那么 (P 表示概率):
P (A1, A2, A3, ..., Ak) 〉 P (B1, B2, B3, ..., Bm), 并且
P (A1, A2, A3, ..., Ak) 〉 P(C1, C2, C3, ..., Cn)
因此,只要我们利用上回提到的统计语言模型计算出每种分词后句子出现的概率,并找出其中概率最大的,我们就能够找到最好的分词方法。

当然,这里面有一个实现的技巧。如果我们穷举所有可能的分词方法并计算出每种可能性下句子的概率,那么计算量是相当大的。因此,我们可以把它看成是一个动态规划(Dynamic Programming) 的问题,并利用 “维特比”(Viterbi) 算法快速地找到最佳分词。

在清华大学的郭进博士以后,海内外不少学者利用统计的方法,进一步完善中文分词。其中值得一提的是清华大学孙茂松教授和香港科技大学吴德凯教授的工作。

需要指出的是,语言学家对词语的定义不完全相同。比如说 “北京大学”,有人认为是一个词,而有人认为该分成两个词。一个折中的解决办法是在分词的同时,找到复合词的嵌套结构。在上面的例子中,如果一句话包含“北京大学”四个字,那么先把它当成一个四字词,然后再进一步找出细分词 “北京” 和 “大学”。这种方法是最早是郭进在 “Computational Linguistics” (《计算机语言学》)杂志上发表的,以后不少系统采用这种方法。

一般来讲,根据不同应用,汉语分词的颗粒度大小应该不同。比如,在机器翻译中,颗粒度应该大一些,“北京大学”就不能被分成两个词。而在语音识别中,“北京大学”一般是被分成两个词。因此,不同的应用,应该有不同的分词系统。Google 的葛显平博士和朱安博士,专门为搜索设计和实现了自己的分词系统。

也许你想不到,中文分词的方法也被应用到英语处理,主要是手写体识别中。因为在识别手写体时,单词之间的空格就不很清楚了。中文分词方法可以帮助判别英语单词的边界。其实,语言处理的许多数学方法通用的和具体的语言无关。在 Google 内,我们在设计语言处理的算法时,都会考虑它是否能很容易地适用于各种自然语言。这样,我们才能有效地支持上百种语言的搜索。

对中文分词有兴趣的读者,可以阅读以下文献:

1. 梁南元
书面汉语自动分词系统
http://www.touchwrite.com/demo/LiangNanyuan-JCIP-1987.pdf

2. 郭进
统计语言模型和汉语音字转换的一些新结果
http://www.touchwrite.com/demo/GuoJin-JCIP-1993.pdf

3. 郭进
Critical Tokenization and its Properties
http://acl.ldc.upenn.edu/J/J97/J97-4004.pdf

4. 孙茂松
Chinese word segmentation without using lexicon and hand-crafted training data
http://portal.acm.org/citation.cfm?coll=GUIDE&dl=GUIDE&id=980775 

时间: 2024-10-28 03:53:38

数学之美 系列二 -- 谈谈中文分词的相关文章

数学之美 系列二十 -自然语言处理的教父 马库斯

我们在前面的系列中介绍和提到了一些年轻有为的科学家,迈克尔·柯林斯,艾里克·布莱尔,大卫·雅让斯基,拉纳帕提等等,他们都出自宾夕法尼亚计算机系米奇·马库斯(Mitch Marcus)名下.就像许多武侠小说中描写的,弟子都成了各派的掌门,师傅一定了不得.的确,马库斯虽然作为第一作者发表的论文并不多,但是从很多角度上讲,他可以说是自然语言处理领域的教父. 马库斯教授长期当任宾夕法尼亚大学计算机系主任,直到他在几年前从 AT&T 找到皮耶尔替代他为止.作为一个管理者,马库斯显示出在自然处理和计算机科学

数学之美:平凡又神奇的贝叶斯方法

◆ ◆ ◆ 前言 这是一篇关于贝叶斯方法的科普文,我会尽量少用公式,多用平白的语言叙述,多举实际例子.更严格的公式和计算我会在相应的地方注明参考资料.贝叶斯方法被证明是非常 general 且强大的推理框架,文中你会看到很多有趣的应用. ◆ ◆ ◆ 1.历史 托马斯·贝叶斯(Thomas Bayes)同学的详细生平在这里.以下摘一段 wikipedia 上的简介: 所谓的贝叶斯方法源于他生前为解决一个"逆概"问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的.在贝叶斯写这

[python] 使用Jieba工具中文分词及文本聚类概念

        前面讲述了很多关于Python爬取本体Ontology.消息盒InfoBox.虎扑图片等例子,同时讲述了VSM向量空间模型的应用.但是由于InfoBox没有前后文和语义概念,所以效果不是很好,这篇文章主要是爬取百度5A景区摘要信息,再利用Jieba分词工具进行中文分词,最后提出文本聚类算法的一些概念知识.         相关文章:         [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒         [python爬虫] Seleni

谈谈百度最新中文分词算法说明

中文分词技术属于自然语言http://www.aliyun.com/zixun/aggregation/20795.html">处理技术范畴,对于一句话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让计算机也能理解?其处理过程就是分词算法. 现有的分词算法可分为三大类:基于字符串匹配的分词方法.基于理解的分词方法和基于统计的分词方法. 1.基于字符串匹配的分词方法 这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个"充分大的"机器词典中的词条

python 中文分词程序实例

以我的理解,最简单的分词程序,应该是先将中文文本切成最小的单位--汉字--再从词典里找词,将这些字按照最左最长原则(与正则精神暗合),合并为以词为单位的集合.这样的应该是最快的,只按照给定的数据划分合并即可,不必考虑语法元素的权重(词性:名动形数量代等等,语法:主谓宾定状补),以及上下文的出现次数. 关于源文本的切分,就参照<统计汉字/英文单词数>一文的思路,使用正则表达式r"(?x) (?: [w-]+  | [x80-xff]{3} )")来匹配即可. 关于词典,我使用

ubuntu下Mysql+sphinx+中文分词安装配置

一.编译先前条件 确认是否已经安装以下软件,有些也许不是必须的,但建议还是都装上. apt-get install autoconf automake autotools-dev cpp curl gawk gcc lftp libc6-dev linux-libc-dev make libpcre3-dev libpcrecpp0 g++ libtool libncurses5-dev aptitude install libmysql++-dev libmysqlclient15-dev c

深入NLP———看中文分词如何影响你的生活点滴 | 硬创公开课

中文分词是中文自然语言处理的一个非常重要的组成部分,在学界和工业界都有比较长时间的研究历史,也有一些比较成熟的解决方案.今天我们邀请了出门问问的两位重磅嘉宾徐博士和Jason,和大家一起来回顾一下中文分词的发展,着重谈一谈现在比较流行的一些基于机器学习的分词方法. 嘉宾简介 徐博士,约翰霍普金斯大学语言和语音实验室博士.2012年毕业后加入微软总部,先后在Bing和微软研究院从事自然语言处理和机器学习相关的研究和产品开发,是cortana语义理解和对话系统团队以及wordflow输入法团队的主要

我读经典(1):读《数学之美》有感

        一提到"数学",很多人也许就会感到头痛.确实,在大学的所有课程中,凡是与"数学"有关的课一般逃课率都比较高,当然挂科率也比较的高.可见,大家对"数学"是多么的"厌恶".         但是,我们每天的生活又离不"数学".你到农贸市场去做买卖,需要算账,这是最简单的"数学".作为软件开发人员的我们,需要设计算法,那就更离不开"数学"了."数学

ASP.NET编写简单的中文分词程序

asp.net|程序|中文 几个月之前,在网上找到了一个中文词库素材(几百K),当时便想写一个分词程序了.我对汉语分词没有什么研究,也就凭自己臆想而写.若有相关方面专家,还请多给意见. 一.词库 词库大概有5万多词语(google能搜到,类似的词库都能用),我摘要如下: 地区    82重要    81新华社    80技术    80会议    80自己    79干部    78职工    78群众    77没有    77今天    76同志    76部门    75加强    75组