汉语自动分词基本算法

1 最大匹配法(Maximum Matching , MM)

  该方法是有词典切分,最大匹配法还可以分为正向最大匹配法(Forward MM,FMM)、逆向最大匹配法(Backward MM , BMM)、双向最大匹配法(Bi-directional MM)。
  假设句子:S=c1c2cnS=c_1c_2\cdots c_n,其中cic_i为单个字,某一个词wi=c1c2cmw_i=c_1c_2\cdots c_mmm为词典中最长词的字数。下面给出FMM的算法描述。

1.1 FMM算法描述

  对于一个输入语句:

  1. i=0i=0,当前指针pip_i指向输入字串初始位置,执行以下操作:
  2. 计算当前指针pip_i到字串末端的字数nn,如果n=1n=1,转4,结束算法。
  3. 从当前pip_i起,取mm个汉字作词wiw_i,判断:
    (a)如果wiw_i是字典中的词,则在wiw_i后添加一个切分标志,转(c);
    (b)如果wiw_i不是词典中的词且wiw_i的长度大于1,将wiw_i从右端去掉一个字,转(a);否则(wiw_i的长度等于1),则在wiw_i后添加一个切分标志,将wiw_i作为单字词添加到词典中,执行(c)步;
    (c)根据wiw_i的长度修改指针pip_i的位置,如果pip_i指向字串末端,转(4),否则,i=i+1i=i+1,返回(2);
  4. 输出切分结果,结束分词程序。

1.2 例子

  假设词典中最长单词的字数为8。输入字串:他是研究生物化学的一位科学家。FMM切分过程:

他是研究生物化学的一位科学家
他是研究生物化学的一位科学家
他是研究生物化学的一位科学家
他是研究生物化学的一位科学家
他是研究生物化学的一位科学家
他是研究生物化学的一位科学家
他是研究生物化学的一位科学家
是研究生物化学的一位科学家
他/是研究生物化学的一位科学家

\cdots\cdots
FMM切分结果:他/是/研究生/物化/学/的/一/位/科学家/。

1.3 优缺点

  优点有:

  • 程序简单易行,开发周期短;
  • 仅需要很少的语言资源(词表),不需要任何词法、句法、语义资源。

  弱点有:

  • 歧义消解的能力差;
  • 切分正确率不高,一般在95%左右。

2 最少分词法(最短路径法)

  基本思想是,设待切分字串S=c1c2cnS=c_1c_2\cdots c_n,其中cic_i为单个字,nn为串的长度,n1n \ge 1。建立一个节点数为n+1n+1的切分有向无环图GG,各节点编号依次为v0,v1,v2,,vnv_0,v_1,v_2,\cdots,v_n
汉语自动分词基本算法

求最短路径(贪心法或简单扩展法)

2.1 算法描述

  1. 相邻节点vk1,vkv_{k-1},v_k之间建立有向变<vk1,vk><v_{k-1}, v_k>,边对应的词默认为ckc_k。如上图所示。
  2. 如果w=cici+1cj(0<i<jn)w=c_ic_{i+1}\cdots c_j(0 \lt i \lt j \le n)是一个词,则节点vi1,vjv_{i-1}, v_j之间建立有向边<vi1,vj><v_{i-1}, v_j>,边对应的词为ww。如下图所示
    汉语自动分词基本算法
  3. 重复步骤2,直到没有新路径(词序列)产生。
  4. 从产生的所有路径中,选择路径最短的(词数最少的)作为最终分词结果。

2.2 例子

  输入字串:他只会诊断一般的疾病

  • 首先准备词典
  • 构建词图
    汉语自动分词基本算法
  • 贪婪组合
    汉语自动分词基本算法
  • 输出候选:(a)他/只会/诊断/一般/的/疾病/。(词个数为7)(b)他/只/会诊/断/一般/的/疾病/。(词个数为8)
  • 最终结果:他/只会/诊断/一般/的/疾病/。
      但是如果输入字串:他说的确实在理。通过算法也会得出两种候选:(a)他/说/的/确实/在理/。(b) 他/说/的确/实在/理/。 这两种情况的词数都是6,系统无法做出正确性判断。

2.3 优缺点

  优点:

  • 切分原则符合汉语自身规律;
  • 需要的语言资源(词表)也不多。

  弱点:

  • 对许多歧义字段难以区分,最短路径有多条时,选择最终的输出结果缺乏应有的标准;
  • 字串长度较大和选取的最短路径数增大时,长度相同的路径数急剧增加,选择最终正确的结果困难越来越大。

3 基于语言模型的分词方法

  方法描述:设对于待切分的句子SSW=w1w2wk(1kn)W=w_1w_2\cdots w_k(1\le k \le n)是一种可能的切分。则有:
W=arg maxwp(WS)=arg maxwp(W)p(SW) W^*=\argmax_w p(W|S)=\argmax_w p(W)*p(S|W)
这里p(W)p(W)就是语言模型,p(SW)p(S|W)就是生成模型。
  优点:

  • 在训练语料规模足够大和覆盖领域足够多时,可以获得较高的切分正确率。

  弱点:

  • 规模性能较多地依赖于训练语料的规模和质量,训练语料的规模和覆盖领域不好把握;
  • 计算量较大。

4 基于HMM的分词方法

  基本思想是把输入字串(句子)SS作为HMM的μ\mu的输入;切分后的单词串SwS_w作为状态的输出,即观察序列Sw=w1w2wn(n1)S_w=w_1w_2\cdots w_n(n \ge 1)。词性序列ScS_c为状态序列,每个词性标记cic_i对应HMM中的一个状态qiq_iSc=c1c2cnS_c=c_1c_2\cdots c_n。则:
S^w=arg maxSwp(Swμ) \hat S_w = \argmax_{S_w} p(S_w|\mu)
  优点:

  • 在训练语料规模足够大和覆盖领域足够多时,可以获得较高的切分正确率。

  弱点:

  • 模型性能较多地依赖于训练语料的规模和质量,训练语料的规模和覆盖领域不好把握;
  • 模型实现复杂、计算量较大。

5 由字构词(基于字标注)的分词方法

  基本思想是,将分词过程看作是字的分类问题。该方法认为,每个字在构造一个特定的词语时都占据着一个确定的构词位置(即词位)。假定每个字只有4个词位:词首(B)、词中(M)、词尾(E)和单独成词(S),那么字归属一特定的词位。
  该方法的重要优势在于,它能够平衡地看待词表词和未登录词的识别问题,文本中的词表词和未登录词都是用同一的字标注过程来实现的。在学习构架上,既可以不必专门强调词表词信息,也不用专门设计特定的未登录词识别模块,因此,大大地简化了分词系统的设计[黄昌宁,2006]

参考资料:《统计自然语言处理》宗成庆

相关文章:

  • 2021-08-05
  • 2022-02-20
  • 2021-11-22
  • 2021-06-07
  • 2022-02-27
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-26
  • 2021-08-17
  • 2021-07-22
  • 2021-12-17
  • 2021-06-12
相关资源
相似解决方案