中文分词技术

Table of Contents

简介

规则分词

正向最大匹配法(Maximum Match Method, MM法)

逆向最大匹配法(Reverse Maximum Match Method, RMM法)

双向最大匹配法(Bi-direction Matching Method, BM法)

统计分词

HMM

CRF

混合分词(规则+统计)

jieba

三种分词模式


简介

在语言理解中,词是最小的能够独立活动的有意义的语言成分。在英语中,单词本身就是词的表达,一篇文章就是‘单词’加分隔符来表示的。而在汉语中,词以字为基本单位,而一篇文章的语义表达却仍以词来划分。因此,在处理中文文本时,需要进行分词处理,将句子转化为词的表示,这个切词的过程就是中文分词。主要的困难在于分词歧义,此外,像未登录词、分词粒度都是影响分词效果的重要因素。众多分词方法大致可以分为规则/统计/混合分词三个流派,下面分别进行介绍。

规则分词

规则分词是最早兴起的方法,简单高效。主要是通过维护词典,在切分语句时,将语句的每个字符串与词表中的词进行逐一匹配,找到则切分。按照匹配切分方式,主要分为正向最大匹配法、逆向最大匹配法以及双向最大匹配法。

正向最大匹配法(Maximum Match Method, MM法)

基本思想:

假设词典中最长词有n个字符,则用被处理文档的当前字符串中的前n个字作为匹配字段,若在字典中匹配成功,则匹配字段被作为一个词切分出来;若匹配失败,则将匹配字段的最后一个字去掉,用剩下的字符串重新进行匹配,如此进行下去直到匹配成功。然后取下一个n个字符进行匹配处理,直到文档被扫描完为止。

逆向最大匹配法(Reverse Maximum Match Method, RMM法)

基本思想:

分词切分方向与MM法相反,从被处理文档的末端开始匹配扫描,同样取n个字符作为匹配字段。若匹配失败,则去掉匹配字段最前面一个字继续匹配。在实际处理时,先将文档进行倒排处理,生成逆序文档,然后,根据逆序词典(每个词条都是将按逆序方式存放),对逆序文档用MM法处理。由于汉语中偏正结构较多,RMM法比MM法的误差要小。

双向最大匹配法(Bi-direction Matching Method, BM法)

基本思想:

将MM法和RMM法得到的结果进行比较,选取切分词数最少的作为结果。研究表明,中文中90%左右的句子,用MM和RMM法得到的结果相同且正确;约9%的句子,得到的切分结果不同,但其中有一个是正确的(歧义检测成功);剩下不到1%的句子,得到的切分结果不同且都错误(歧义检测失败),或者切分重合但是错误。因此BM法在中文处理系统中得到广泛应用。

基于规则的分词虽然简单高效,但是维护词典是一个庞大的工程,且新词层出不穷,很难对新词进行处理。随着大规模语料库的建立和统计机器学习方法的研究和发展,基于统计的中文分词能够较好处理新词发现等场景,渐渐成为主流。

 

统计分词

把每个词看作是由各个字组成,如果相连的字在不同的文本中出现的次数越多,就证明这个相连的字很可能就是一个词。因此我们就可以利用字与字相邻出现的频率来反映成词的可靠度,当组合频度高于某个临界值时,我们便可以认为这些字会构成一个词语。

基于统计的分词,一般要做如下两步操作:

1. 建立统计语言模型

2.对句子进行单词划分,然后对划分结果进行概率计算,获得概率最大的分词方式。用到的统计学习方法有隐含马尔科夫(HMM)、条件随机场(CRF)等。

HMM

HMM 模型(详参机器学习笔记6)是由一个“五元组”组成的集合: 

  • StatusSet:状态值集合,状态值集合为 (B, M, E, S),其中 B 为词的首个字,M 为词中间的字,E 为词语中最后一个字,S 为单个字,B、M、E、S 每个状态代表的是该字在词语中的位置。

举个例子,对“中国的人工智能发展进入高潮阶段”,分词可以标注为:“中B国E的S人B工E智B能E发B展E进B入E高B潮E阶B段E”,最后的分词结果为:['中国', '的', '人工', '智能', '发展', '进入', '高潮', '阶段']。

  • ObservedSet:观察值集合,观察值集合就是所有语料的汉字,甚至包括标点符号所组成的集合。
  • TransProbMatrix:转移概率矩阵,状态转移概率矩阵的含义就是从状态 X 转移到状态 Y 的概率,是一个4×4的矩阵,即 {B,E,M,S}×{B,E,M,S}。
  • EmitProbMatrix:发射概率矩阵,发射概率矩阵的每个元素都是一个条件概率,代表 P(Observed[i]|Status[j]) 概率。
  • InitStatus:初始状态分布,初始状态概率分布表示句子的第一个字属于 {B,E,M,S} 这四种状态的概率。

将 HMM 应用在分词上,要解决的问题是:参数(ObservedSet、TransProbMatrix、EmitRobMatrix、InitStatus)已知的情况下,求解状态值序列。

解决这个问题的最有名的方法是 Viterbi 算法。

根据动态规划原理,最优路径具有这样的特性:如果最优路径从结点 i_{t}^ 到终点 i_{T}^,那么这两点之间的所有可能的部分路径必须是最优的。
依据这一原理,我们只需从时刻 t=1 开始,递推地计算在时刻 t 状态为 i 的各条部分路径的最大概率,直至得到时刻 t=T 状态为 i 的各条路径的最大概率 P^,最优路径的终结点 i_{T}^ 也同时得到。之后,为了找出最优路径的各个结点,从终结点 i_{T}^ 开始,由后向前逐步求得结点 i_{T-1}^…,i_{1}^,进而得到最优路径 I^=i_{1}^…,i_{T}^

CRF

条件随机场也是一种基于马尔科夫思想等统计模型。在隐含马尔科夫模型中,有个假设是每个状态只与它前面的状态有关。这样的假设是有偏差的,于是学者们提出了条件随机场算法,使每个状态不止与他前面的状态有关,还与后面的状态有关。

详细介绍后续

对比规则分词,统计分词方法不仅不需要人力维护词典,而且能较好的处理歧义和未登录词。但是其分词效果很依赖训练语料的质量,且计算量较于规则分词大很多。在实际工程应用中,最常用的方式是先基于词典的方式进行分词,然后再用统计分词方法进行辅助。如此,在保证词典分词的准确率基础上,对未登录词和歧义词有较好的识别。

混合分词(规则+统计)

jieba

随着NLP技术的日益成熟,中文分词工具越来越多,常见的有中科院计算所 NLPIR、哈工大 LTP、清华大学 THULAC 、斯坦福分词器、Hanlp 分词器、jieba 分词等。选取jieba进行介绍是因为它社区活跃,功能丰富,使用简单。

jieba分词结合了基于规则和基于统计这两类方法。首先,基于统计词典,构造前缀词典,基于前缀词典对句子进行切分,得到所有切分可能,根据切分位置,构造一个有向无环图(DAG);然后,基于DAG图,采用动态规划计算最大概率路径(最有可能的分词结果),根据最大概率路径分词;最后,对于新词(词库中没有的词),采用有汉字成词能力的 HMM 模型进行切分。

三种分词模式

  • 精确分词

精确分词:精确模式试图将句子最精确地切开,精确分词也是默认分词。分割效果如下:

现如今/,/机器/学习/和/深度/学习/带动/人工智能/飞速/的/发展/,/并/在/图片/处理/、/语音/识别/领域/取得/巨大成功/。

  • 全模式

全模式分词:把句子中所有的可能是词语的都扫描出来,速度非常快,但不能解决歧义。分割效果如下:

现如今/如今///机器/学习/和/深度/学习/带动/动人/人工/人工智能/智能/飞速/的/发展///并/在/图片/处理///语音/识别/领域/取得/巨大/巨大成功/大成/成功//

  • 搜索引擎模式

搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。 分割效果如下:

如今/现如今/,/机器/学习/和/深度/学习/带动/人工/智能/人工智能/飞速/的/发展/,/并/在/图片/处理/、/语音/识别/领域/取得/巨大/大成/成功/巨大成功/。

参考

一个隐马尔科夫模型的应用实例:中文分词

Python自然语言处理实战

猜你喜欢

转载自blog.csdn.net/ZJL0105/article/details/82156551
今日推荐