汉语自动分词基本算法

汉语自动分词基本算法

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

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

1.1 FMM算法描述

  对于一个输入语句:

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

1.2 例子

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

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

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

1.3 优缺点

  优点有:

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

  弱点有:

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

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

  基本思想是,设待切分字串 S = c 1 c 2 c n S=c_1c_2\cdots c_n ,其中 c i c_i 为单个字, n n 为串的长度, n 1 n \ge 1 。建立一个节点数为 n + 1 n+1 的切分有向无环图 G G ,各节点编号依次为 v 0 , v 1 , v 2 , , v n v_0,v_1,v_2,\cdots,v_n
在这里插入图片描述

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

2.1 算法描述

  1. 相邻节点 v k 1 , v k v_{k-1},v_k 之间建立有向变 < v k 1 , v k > <v_{k-1}, v_k> ,边对应的词默认为 c k c_k 。如上图所示。
  2. 如果 w = c i c i + 1 c j ( 0 < i < j n ) w=c_ic_{i+1}\cdots c_j(0 \lt i \lt j \le n) 是一个词,则节点 v i 1 , v j v_{i-1}, v_j 之间建立有向边 < v i 1 , v j > <v_{i-1}, v_j> ,边对应的词为 w w 。如下图所示
    在这里插入图片描述
  3. 重复步骤2,直到没有新路径(词序列)产生。
  4. 从产生的所有路径中,选择路径最短的(词数最少的)作为最终分词结果。

2.2 例子

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

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

2.3 优缺点

  优点:

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

  弱点:

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

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

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

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

  弱点:

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

4 基于HMM的分词方法

  基本思想是把输入字串(句子) S S 作为HMM的 μ \mu 的输入;切分后的单词串 S w S_w 作为状态的输出,即观察序列 S w = w 1 w 2 w n ( n 1 ) S_w=w_1w_2\cdots w_n(n \ge 1) 。词性序列 S c S_c 为状态序列,每个词性标记 c i c_i 对应HMM中的一个状态 q i q_i S c = c 1 c 2 c n S_c=c_1c_2\cdots c_n 。则:
S ^ w = arg max S w p ( S w μ ) \hat S_w = \argmax_{S_w} p(S_w|\mu)
  优点:

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

  弱点:

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

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

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

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

发布了32 篇原创文章 · 获赞 53 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_39378221/article/details/103694806
今日推荐