Python自然语言处理实战正文.indd.PDF
C H A P T E R 3
第 章
3
中文分词技术
本章将讲解中文自然语言处理的第一项核心技术:中文分词技术。在语言理解中,词
是最小的能够独立活动的有意义的语言成分。将词确定下来是理解自然语言的第一步,只
有跨越了这一步,中文才能像英文那样过渡到短语划分、概念抽取以及主题分析,以至自
然语言理解,最终达到智能计算的最高境界。因此,每个NLP 工作者都应掌握分词技术。
本章的要点包括:
中文分词的概念与分类
常用分词(包括规则分词、统计分词以及混合分词等)的技术介绍
开源中文分词工具——Jieba 简介
实战分词之高频词提取
3.1 中文分词简介
“词”这个概念一直是汉语语言学界纠缠不清而又绕不开的问题。“词是什么”(词的
抽象定义)和“什么是词”(词的具体界定),这两个基本问题迄今为止也未能有一个权威、
明确的表述,更无法拿出令大众认同的词表来。主要难点在于汉语结构与印欧体系语种
差异甚大,对词的构成边界方面很难进行界定。比如,在英语中,单词本身就是“词”
的表达,一篇英文文章就是“单词”加分隔符(空格)来表示的,而在汉语中,词以字为
中文分词技术 39
基本单位的,但是一篇文章的语义表达却仍然是以词来划分的。因此,在处理中文文本
时,需要进行分词处理,将句子转化为词的表示。这个切词处理过程就是中文分词,它
通过计算机自动识别出句子的词,在词间加入边界标记符,分隔出各个词汇。整个过程
看似简单,然而实践起来却很复杂,主要的困难在于分词歧义。以NLP 分词的经典语句
举例,“结婚的和尚未结婚的”,应该分词为“结婚/ 的/ 和/ 尚未/ 结婚/ 的”,还是“结
婚/ 的/ 和尚/ 未/ 结婚/ 的”?这个由人来判定都是问题,机器就更难处理了。此外,
像未登录词、分词粒度粗细等都是影响分词效果的重要因素。
自中文自动分词被提出以来,历经将近30 年的探索,提出了很多方法,可主要归纳
为“规则分词”“统计分词”和“混合分词(规则+ 统计)”这三个主要流派。规则分词是
最早兴起的方法,主要是通过人工设立词库,按照一定方式进行匹配切分,其实现简单
高效,但对新词很难进行处理。 随后统计机器学习技术的兴起,应用于分词任务上后,
就有了统计分词,能够较好应对新词发现等特殊场景。然而实践中,单纯的统计分词也
有缺陷,那就是太过于依赖语料的质量,因此实践中多是采用这两种方法的结合,即混
合分词。
下面将详细介绍这些方法的代表性算法。
3.2 规则分词
基于规则的分词是一种机械分词方法,主要是通过维护词典,在切分语句时,将语
句的每个字符串与词表中的词进行逐一匹配,找到则切分,否则不予切分。
按照匹配切分的方式,主要有正向最大匹配法、逆向最大匹配法以及双向最大匹配
法三种方法。
3.2.1 正向最大匹配法
正向最大匹配(Maximum Match Method ,MM 法)的基本思想为:假定分词词典中
40 第3 章
i i
的最长词有 个汉字字符,则用被处理文档的当前字串中的前 个字作为匹配字段,查找
i
字典。若字典中存在这样的一个 字词,则匹配成功,匹配字段被作为一个词切分出来。
i
如果词典中找不到这样的一个 字词,则匹配失败,将匹配字段中的最后一个字去掉,
对剩下的字串重新进行匹配处理。如此进行下去,直到匹配成功,即切分出一个词或剩
i
余字串的长度为零为止。这样就完成了一轮匹配,然后取下一个 字字串进行匹配处理,
直到文档被扫描完为止。
其算法描述如下:
m