发表者: 吴军, Google 研究员
谈谈中文分词
----- 统计语言模型在中文处理中的一个应用
上回我们谈到利用统计语言模型进行语言处理,由于模型是建立在词的基础上的,对于中日韩等语言,首先需要进行分词。例如把句子 “中国航天官员应邀到美国与太空总署官员开会。”
分成一串词:
中国 / 航天 / 官员 / 应邀 / 到 / 美国 / 与 / 太空 / 总署 / 官员 / 开会。
最容易想到的,也是最简单的分词办法就是查字典。这种方法最早是由北京航天航空大学的梁南元教授提出的。
用 “查字典” 法,其实就是我们把一个句子从左向右扫描一遍,遇到字典里有的词就标识出来,遇到复合词(比如 “上海大学”)就找最长的词匹配,遇到不认识的字串就分割成单字词,于是简单的分词就完成了。这种简单的分词方法完全能处理上面例子中的句子。八十年代,哈工大的王晓龙博士把它理论化,发展成最少词数的分词理论,即一句话应该分成数量最少的词串。这种方法一个明显的不足是当遇到有二义性 (有双重理解意思)的分割时就无能为力了。比如,对短语 “发展中国家” 正确的分割是“发展-中-国家”,而从左向右查字典的办法会将它分割成“发展-中国-家”,显然是错了。另外,并非所有的最长匹配都一定是正确的。比如“上海大学城书店”的正确分词应该是 “上海-大学城-书店,” 而不是 “上海大学-城-书店”。
九十年代以前,海内外不少学者试图用一些文法规则来解决分词的二义性问题,都不是很成功。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
固定链接 |
分享到:
相关推荐
文本通用处理流程:文本分词、分词向量化、文本分类、聚类、深度学习等源码.zip文本通用处理流程:文本分词、分词向量化、文本分类、聚类、深度学习等源码.zip文本通用处理流程:文本分词、分词向量化、文本分类、...
数学之美系列完整版是由吴军,Google研究员编写的一系列关于数学在自然语言处理和信息检索中的应用。这系列文章涵盖了统计语言模型、中文分词、隐含马尔科夫模型、信息论、图论、网络爬虫、有限状态机、信息指纹、...
中文分词是自然语言处理(NLP)领域中的基础任务,它是将连续的汉字序列切分成具有语义意义的词语序列。在这个“中文分词词库整理.7z”压缩包中,包含的可能是一个精心整理的中文词汇集合,用于支持各种中文分词算法...
Java开源项目cws-evaluation:中文分词器分词效果评估对比.zip
首先,中文分词是将连续的汉字序列切分成有意义的词语单元,这是中文信息处理的基础。由于中文没有明显的空格分隔,因此分词具有一定的挑战性。cws_evaluation项目的目标就是提供一个公正的平台,通过标准的数据集和...
《中文分词与百度词典:深入理解与应用》 中文分词是自然语言处理(NLP)领域的一项基础任务,对于中文文本的理解至关重要。它涉及到将连续的汉字序列切分成具有语义意义的词语单元,是信息检索、机器翻译、情感...
在中文信息处理领域,分词是至关重要的一步,它将连续的汉字序列切分成有意义的词语,为后续的文本分析、自然语言理解和信息检索提供基础。盘古中文分词因其优秀的表现和开源特性,受到了广大开发者的好评。 该工具...
在自然语言处理领域,中文分词是一项基础且关键的任务,它涉及到将连续的汉字序列分割成有意义的词语。本篇实战教程主要讲解如何使用隐马尔可夫模型(Hidden Markov Model,简称HMM)进行中文分词。 首先,我们要...
中文分词是将连续的汉字序列切分成具有语义的词语的过程,是自然语言处理(NLP)中的基础步骤。在Lucene.NET中,为了支持中文分词,通常需要结合第三方分词器,如IK Analyzer、HanLP、jieba.NET等。这些分词器具备...
在IT领域,中文分词是自然语言处理(NLP)中的关键步骤,它涉及到将连续的汉字序列分割成有意义的词语单元,以便计算机能够理解和分析文本。本项目以"matlab中文分词——最大正向匹配法.rar"为主题,重点讨论了如何...
### 中文分词词库大全词库解析 #### 标题与描述概述 标题:“中文分词词库大全词库” 描述重复强调了一个词典的来源及其格式(TXT)。这表明该词库是为了中文自然语言处理(NLP)任务中的分词而准备的资源。中文...
中文分词是自然语言处理中的基础步骤,它的目标是将连续的汉字序列切分成具有语义的词语。在这个Java程序中,分词任务被分为两个阶段:Map阶段和Reduce阶段。 在Map阶段,原始的中文文本数据被分割成多个小块,每个...
中文分词是将连续的汉字序列切分成具有独立语义的词语单元,它是中文文本处理的基础,对于信息检索、机器翻译、情感分析等应用至关重要。 易语言应用中文分词源码通常包括以下几个核心部分: 1. **词典构建**:一...
中文分词是自然语言处理中的一个基础任务,它是指将连续的汉字序列切分成具有语义意义的词汇序列的过程。与英文等其他语言相比,中文没有明显的单词界限,因此中文分词是进行后续自然语言处理任务(如文本分类、情感...
Lucene是一个高性能、全文检索库,而“lucene中文分词工具包”则为Lucene提供了一个专门针对中文分词的解决方案。这个工具包的核心是IKAnalyzer,它是一个开源且基于Java语言开发的轻量级中文分词工具,旨在提升中文...
汇总的中文分词词库,分为两个目录: 1、中文分词词库汇总。包含10个词库,文件名字表示里面词的数量(单位是千),如150.txt,表示包含15万词。 2、主流分词工具的词库。包含word/jieba/mmseg/IK分词工具的最近词库...
中文分词是自然语言处理(NLP)领域中的基础任务,它是将连续的汉字序列切分成具有实际语义的词语单元的过程。在这个“中文分词工具包.zip”中,我们很可能会找到一系列针对中文文本进行分词处理的软件、库或者算法...
中文分词是自然语言处理(NLP)领域中的基础任务,它是将连续的汉字序列切分成具有语义的单个词汇。在这个“中文分词算法程序”中,开发者使用C++编程语言实现了一种方法来处理这个任务。C++是一种高效、灵活且强大...
这些分词器专门针对中文的特点进行了优化,能够准确地将连续的汉字序列切分成具有实际意义的词语,这一过程称为中文分词。 ikanalyzer和IK Analyzer是基于字典的分词器,它们维护了大规模的中文词汇库,通过查找...
【数学之美系列】是由Google研究员吴军撰写的一系列文章,主要探讨了数学在信息处理、自然语言处理(NLP)和搜索引擎技术中的应用。该系列文章涵盖了多个关键知识点,包括统计语言模型、中文分词、隐含马尔可夫模型...