中文分词算法 | 基于统计模型的三种分词算法

Hi,大家好啊!上一篇博客主要介绍了关于词表中的分词算法的内容,继续基于中文分词算法,学习统计模型中的分词算法,进一步探索自然语言处理的独特魅力!

目录

一、基于N-gram语言模型的分词方法

二、基于HMM(隐马尔科夫模型)的分词方法

三、基于CRF(条件随机场)的分词方法

CRF VS HMM


基于统计模型的分词算法的主要核心是:词是稳定的组合。我们知道,在上下文中相邻的字如果同时出现的次数越多,那么就越有可能构成一个词

结论:

字与字相邻出现的概率或者频率能较好地反映成词的可信度。我们可以对训练文本中相邻出现的各个字的组合的频度进行计算统计,得出它们之间的互现信息互现信息体现了汉字之间结合关系的紧密程度。当紧密程度高于某一个阈值时,便可以认为此字组可能构成了一个词。该方法又称为无字典分词


一、基于N-gram语言模型的分词方法

统计语言模型:

  • 今天天气很好,我们去北京玩吧。
  • 今天很好天气,我们去北京玩吧。
  • 今天我们天气,很好去北京玩吧。

如何判断一个句子是否合理,很容易想到了一种很好的统计模型来解决上述问题,只需要看它在所有句子中出现的概率就行了。第一个句子出现的概率大概是80%,第二个句子出现的概率大概是50%,第三个句子出现的概率大概是20%,第一个句子出现的可能性最大,因此这个句子最为合理。

那么,如何计算一个句子出现的概率呢,我们可以把有史以来人类说过的话都统计一遍,这样就能很方便的计算概率了。然而,你我都知道这条路走不通。

假设想知道S在文本中出现的可能性,也就是数学上所说的S的概率,既然S=w1,w2,...,wn,那么不妨把S展开表示:

利用条件概率的公式,S这个序列出现的概率等于每一个词出现的条件概率的乘积,展开为:

其中,计算P(w_{1})很容易, P(w_{2}|w_{1})也还能算出来, P(w_{3}|w_{1},w_{2})已经非常难以计算了。

偷懒的马尔科夫(Andrey Markov)

假设上面的n不取很长,而只取2个,那么就可以大大减少计算量。即在此时,假设一个词w_{i}出现的概率只与它前面的w_{i-1}有关,这种假设称为1阶马尔科夫假设。现在,S的概率就变得简单了:

 那么,接下来的问题就变成了估计条件概率P(w_{i}|w_{i-1}),根据它的定义:

当样本量很大的时候,基于大数定律,一个短语或者词语出现的概率可以用其频率来表示,即:

其中,count(i)表示词i出现的次数,count表示语料库的大小。那么:

由于歧义的存在,一段文本存在多种可能的切分结果(切分路径),而基于词表的分词算法中的FMM、BMM 这两种算法使用机械规则的方法选择最优路径,而 N-gram 语言模型分词方法则是利用统计信息找出一条概率最大的路径。下图为武汉市长江大桥的全切分有向无环图(DAG)

可以看到,可能的切分路径

  • 武汉/市/长江/大桥
  • 武汉/市/长江大桥
  • 武汉市/长江/大桥
  • 武汉市/长江大桥
  • 武汉/市长/江/大桥
  • 武汉/市长/江大桥
  • 武汉市长/江/大桥
  • 武汉市长/江大桥
  • ......

假设随机变量S为一个汉字序列,W是S上所有可能的切分路径。对于分词,实际上就是求解使条件概率P(W|S)最大的切分路径W^{*},即:

根据贝叶斯公式:

由于P(S)为归一化因子,P(S|W)恒为1,因此只需要求解P(W)


二、基于HMM(隐马尔科夫模型)的分词方法

隐马尔可夫模型(Hidden Markov Model,HMM)在语音识别、机器翻译、中文分词、命名实体识别、词性标注、基因识别等领域有广泛的使用。

首先我们转换下思维,把分词问题做个转换:分词问题就是对句子中的每个字打标注,标注要么是一个词的开始(B),要么是一个词的中间位置(M),要么是一个词的结束位置(E),还有单个字的词,用S表示。

X
YSBESBES

下面对中文分词进行形式化描述

设观察集合为:

状态集合为:

问题:已知输入的观察序列为:

求对应的状态序列:

基于HMM的分词方法:

属于由字构词的分词方法,由字构词的分词方法思想并不复杂,它是将分词问题转化为字的分类问题(序列标注问题)。从某些层面讲,由字构词的方法并不依赖于事先编制好的词表,但仍然需要分好词的训练语料。
规定每个字有4个词位:词首B、词中M、词尾E、单字成词S
由于HMM是一个生成式模型,X为观测序列,Y为隐序列。

如果大家对 HMM 隐马尔可夫模型感兴趣,详细的该模型的例子、原理、计算可以参考以下文章,链接如下:HMM隐马尔可夫模型的例子、原理、计算和应用 - 知乎 (zhihu.com)


三、基于CRF(条件随机场)的分词方法

CRF 把分词当做字的词位分类问题,通常定义字的词位信息如下:

  • 词首常用B表示;
  • 词中常用M表示;
  • 词尾常用E表示;
  • 单子词,常用S表示。

CRF 分词的过程就是词位标注后,将B和E之间的字,以及S单字构成分词

  • 原始例句:我爱北京天安门
  • CRF标注后:我/S 爱/S 北/B 京/E 天/B 安/M 门/E
  • 分词结果:我/爱/北京/天安门。

基于 CRF 的分词方法与 HMM 不同,CRF 是一种判别式模型,CRF 通过定义条件概率P(Y|X)来描述模型。基于CRF的分词方法与传统的分类模型求解很相似,即给定 feature(字级别的各种信息)输出 label(词位)

简单来说,分词所使用的是 Linear-CRF,它由一组特征函数组成,包括权重 \lambda 和特征函数 f,特征函数 f 的输入是整个句子 s、当前 pos_{i} 、前一个词位 l_{i-1},当前词位 l_{i} 。


CRF VS HMM

  • 首先,CRF,HMM都常用来做序列标注的建模,像分词、词性标注,及命名实体标注。
  • 隐马模型一个最大的缺点就是由于其输出独立性假设,导致其不能考虑上下文的特征,限制了特征的选择。
  • 最大熵隐马模型则解决了隐马的问题,可以任意选择特征,但由于其在每一节点都要进行归一化,所以只能找到局部的最优值,同时也带来了标记偏见的问题,即凡是训练语料中未出现的情况全都忽略掉。
  • 条件随机场则很好的解决了这一问题,他并不在每一个节点进行归一化,而是所有特征进行全局归一化,因此可以求得全局的最优值。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 基于规则的分词算法是一种基于语言学规则的分词方法,它使用人工设计的规则来将文本分割成词语。这种方法通常比基于统计分词方法精确,但是也需要更多的人工干预。 基于规则的分词算法模型包括规则本身以及如何使用这些规则来执行分词的过程。通常,这种模型包括一组规则,每条规则指定了在特定情况下应该如何分割文本。例如,一条规则可能会指定在两个连续的数字之间插入空格。在执行分词时,算法会扫描文本并应用规则,直到文本被完全分割为词语为止。 基于规则的分词算法通常用于自然语言处理(NLP)任务,例如机器翻译、信息检索和文本分析。这种方法可以被用来处理各种语言,但是对于每种语言都需要设计专门的规则集。 ### 回答2: 基于规则的分词算法是一种传统的中文分词方法,其模型主要基于语言学规则和规则集合。该算法通过定义一系列规则,根据这些规则对待分词的中文文本进行切分。 基于规则的分词算法模型通常由以下几个步骤组成: 1. 规则集合构建:通过语言学规则、词典等资源,构建一系列分词规则。这些规则可以包括词汇频率、词性标注、词组等信息,用于辅助分词过程。 2. 正向最大匹配:从待分词的文本的首字开始,根据规则集合进行正向最大匹配。即从最大长度的词开始匹配,如果匹配成功,则分出一个词,接着从文本的下一个位置继续匹配,直到整个文本都被处理完。 3. 逆向最大匹配:与正向最大匹配相反,从待分词的文本的末尾开始匹配,依次向前匹配,直到整个文本都被处理完。 4. 双向最大匹配:结合正向最大匹配和逆向最大匹配得到的切分结果,根据一定的规则进行合并。 基于规则的分词算法模型优点是易于理解和实现,适用于简单的语料和中文文本。同时,它不需要大规模的训练数据和复杂的模型构建过程。 然而,基于规则的分词算法也存在一些缺点。首先,它对语料的要求较高,需要根据语言学规则和词典构建规则集合。其次,对于歧义词和新词的切分容易出现错误。此外,由于规则固定,难以适应不同领域和文本类型。因此,基于规则的分词算法模型在实际应用中常常需要与其他方法进行结合,以提高分词准确性和适应性。 ### 回答3: 基于规则的分词算法是一种基于预定义规则和规则库的分词模型。该模型主要通过设定一系列规则和规则库来切分文本,从而实现中文分词的目的。 这种算法的基本思想是先根据一些统计分析和人工规则,构建一个规则库。规则库中的规则可以包括基本的词汇、词性、语法等信息。例如,根据词性标注与词性组合规则,可以将一组连续的词性标记组合切分成一个词,从而实现分词。 在进行分词时,算法会根据规则库中的规则对待切分的文本进行匹配和分析,根据匹配结果进行切分。如果文本中的某个位置与规则库中的规则匹配,算法会将匹配的字符切分成一个词。如果没有匹配的规则,算法会继续分析下一个位置的字符,直到整个文本都被切分为止。 基于规则的分词算法的优势在于可以根据任务需要定制化的构建规则库,从而增加算法的灵活性和适应性。同时,对于一些特定的领域或语种,通过构建特定的规则库可以提高分词的准确性。 然而,基于规则的分词算法也存在一些限制。首先,规则的构建需要一定的领域知识和人工标注,这需要耗费大量的时间和人力成本。其次,基于规则的算法对于一些复杂的语言现象和歧义情况的处理可能不够准确,容易出现误切分或漏切分的情况。因此,在处理一些复杂的语料时,该算法的效果可能会受到一定的限制。 综上所述,基于规则的分词算法是一种常用的中文分词模型,通过设定规则和规则库进行文本切分。它具有灵活性和适应性的优势,但同时也存在一些限制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值