数学之美 系列二 -- 谈谈中文分词
2006年4月10日 上午 08:10:00
发表者: 吴军, 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
分享到:
相关推荐
中文分词是中文信息处理中的关键技术之一,其目的是将连续的汉字序列切分成具有语义意义的词语,以方便后续的文本分析、信息检索、自然语言理解等工作。搜狗中文分词词汇是针对中文文本处理领域的一个重要资源,特别...
首先,我们来谈谈中文分词。中文分词是中文处理的基础步骤,因为中文没有像英文那样的空格或标点符号作为自然的分隔符,因此需要通过特定算法将连续的汉字序列切分成有意义的词汇。《1998年人民日报语料库全》因其...
#### 二、谈谈中文分词 **知识点概述:** 中文分词是中文自然语言处理的基础任务之一,涉及将未标注的连续文本切分成一个个有意义的词语单元。这一过程对于后续的自然语言处理任务至关重要。 **核心知识点详解:*...
接下来,我们谈谈盘古分词。盘古分词是针对中文文本处理的开源分词工具,它具有较高的分词准确率和较快的分词速度。在.NET环境中,我们可以直接使用盘古分词的DLL库,将其集成到我们的应用中。盘古分词的核心算法...
在IT行业中,搜索引擎优化(SEO)是至关重要的,而分词器在中文处理中扮演了核心角色。Solr,作为一款强大的开源搜索平台,经常被用于构建高效的全文检索系统。本篇文章将详细介绍如何在Solr中添加IK分词器以及引入...
NodeJieba "结巴"分词的Node.js版本介绍NodeJieba是"结巴"中文分词的 Node.js 版本实现,由提供底层分词算法实现,是兼具高性能和易用性两者的 Node.js 中文分词组件。特点词典载入方式灵活,无需配置词典路径也可...
在中文词分器方面,Lucene本身并不支持中文分词,但可以通过集成第三方分词库如HanLP、IK Analyzer或jieba分词来处理中文文本。这些分词器将中文句子切分成一个个有意义的词语,便于Lucene进行索引和搜索。例如,...
接着,我们来谈谈IK分词器。IK全称是Intelligent Chinese Analyzer,由国内开发者团队维护,是Elasticsearch中使用最为广泛的中文分词插件之一。它提供了标准分析器、智能分析器等多种分词模式,能够适应不同的应用...
接下来,我们谈谈IK(Intelligent Keyword)分词器。IK是专为Elasticsearch设计的一款中文分词插件,它旨在提供更准确的中文分词效果。IK分词器有两种模式:Smart模式和Extreme模式。Smart模式适合大多数场景,能...
这个词库因其全面性和准确性,在中文分词领域被广泛使用。通过使用搜狗词库,可以确保分词系统具备较高的覆盖率,减少因词汇遗漏导致的分词错误。 "去重" 这个过程是指在词库中移除了重复的词汇,避免了在实际应用...
接下来,我们来谈谈如何在SpringData Elasticsearch中配置和使用IK分词器。SpringData Elasticsearch是Spring Framework的一个模块,它简化了与Elasticsearch的集成,使得开发者可以方便地在Spring应用中操作Elastic...
在中文搜索中,分词是至关重要的一步,它将连续的汉字序列切分成具有独立意义的词语。Solr支持多种分词器,例如ikanalyzer、smartcn等,这些分词器能够对中文文本进行有效的分词处理,提高搜索的准确性和覆盖率。在...
IK Analyzer是一个开源的、高性能的中文分词器,设计目标是为Java开发人员提供一个简单易用、高度可配置的中文分词组件。在Solr中,IK Analyzer被广泛应用于文本分析和索引,以提高搜索的准确性和效率。 首先,我们...
IK Analyzer 1.9.3 是一个专门为中文分词设计的插件,它在 Elasticsearch 中起到了关键的作用,优化了对中文文本的处理和搜索性能。 Elasticsearch 的核心特性包括: 1. **分布式架构**:Elasticsearch 支持横向...
接下来,我们谈谈Paoding,这是一款针对中文的开源搜索引擎分析器。Paoding主要解决的是中文分词问题,它具有较高的准确率和性能,特别适合于中文信息检索。Paoding与Lucene的结合,可以进一步优化中文文本的索引和...
作为一款针对中文的开源分词器,IKAnalyzer在处理中文文本时表现卓越。它不仅支持标准的分词模式,还提供了基于词典的智能切词算法,能够有效识别和处理新词、网络热词等。IKAnalyzer与lukeall的结合,意味着用户...
接着,我们来谈谈Lucene。Lucene是Apache软件基金会的一个开源项目,是一个高性能、全文本搜索库。它可以用于建立搜索引擎,对文本进行索引,并能快速地进行全文搜索。Lucene支持多种语言,包括中文,它与Paoding...
Ikanalyzer是基于IK Analyzer开源项目的一个分词器,专门针对中文进行分词处理。它的主要特点是支持模糊查询、同义词扩展以及自定义词典等功能。在处理中文文本时,Ikanalyzer会将句子拆分成单词,也就是“分词”,...
接下来,我们来谈谈JE-Analysis-1.5.3。这是一个基于Java的分析器库,专门针对中文文本进行预处理。在全文检索中,分析器的作用是将输入的文本进行分词、去除停用词、词性标注等处理,以便更好地匹配用户查询。JE-...
"字典超级字典"可能是指一款专门针对中文词汇、短语乃至句子的查询和学习工具,它可能包含了丰富的词汇量、详细的释义、例句以及相关知识,旨在帮助用户提高语言理解和应用能力。在IT行业中,这样的软件或应用程序...