文章目录
汉语自动分词基本算法
1 最大匹配法(Maximum Matching , MM)
该方法是有词典切分,最大匹配法还可以分为正向最大匹配法(Forward MM,FMM)、逆向最大匹配法(Backward MM , BMM)、双向最大匹配法(Bi-directional MM)。
假设句子:
,其中
为单个字,某一个词
,
为词典中最长词的字数。下面给出FMM的算法描述。
1.1 FMM算法描述
对于一个输入语句:
- 令 ,当前指针 指向输入字串初始位置,执行以下操作:
- 计算当前指针 到字串末端的字数 ,如果 ,转4,结束算法。
- 从当前
起,取
个汉字作词
,判断:
(a)如果 是字典中的词,则在 后添加一个切分标志,转(c);
(b)如果 不是词典中的词且 的长度大于1,将 从右端去掉一个字,转(a);否则( 的长度等于1),则在 后添加一个切分标志,将 作为单字词添加到词典中,执行(c)步;
(c)根据 的长度修改指针 的位置,如果 指向字串末端,转(4),否则, ,返回(2); - 输出切分结果,结束分词程序。
1.2 例子
假设词典中最长单词的字数为8。输入字串:他是研究生物化学的一位科学家。FMM切分过程:
FMM切分结果:他/是/研究生/物化/学/的/一/位/科学家/。
1.3 优缺点
优点有:
- 程序简单易行,开发周期短;
- 仅需要很少的语言资源(词表),不需要任何词法、句法、语义资源。
弱点有:
- 歧义消解的能力差;
- 切分正确率不高,一般在95%左右。
2 最少分词法(最短路径法)
基本思想是,设待切分字串
,其中
为单个字,
为串的长度,
。建立一个节点数为
的切分有向无环图
,各节点编号依次为
。
求最短路径(贪心法或简单扩展法)
2.1 算法描述
- 相邻节点 之间建立有向变 ,边对应的词默认为 。如上图所示。
- 如果
是一个词,则节点
之间建立有向边
,边对应的词为
。如下图所示
- 重复步骤2,直到没有新路径(词序列)产生。
- 从产生的所有路径中,选择路径最短的(词数最少的)作为最终分词结果。
2.2 例子
输入字串:他只会诊断一般的疾病
- 首先准备词典
- 构建词图
- 贪婪组合
- 输出候选:(a)他/只会/诊断/一般/的/疾病/。(词个数为7)(b)他/只/会诊/断/一般/的/疾病/。(词个数为8)
- 最终结果:他/只会/诊断/一般/的/疾病/。
但是如果输入字串:他说的确实在理。通过算法也会得出两种候选:(a)他/说/的/确实/在理/。(b) 他/说/的确/实在/理/。 这两种情况的词数都是6,系统无法做出正确性判断。
2.3 优缺点
优点:
- 切分原则符合汉语自身规律;
- 需要的语言资源(词表)也不多。
弱点:
- 对许多歧义字段难以区分,最短路径有多条时,选择最终的输出结果缺乏应有的标准;
- 字串长度较大和选取的最短路径数增大时,长度相同的路径数急剧增加,选择最终正确的结果困难越来越大。
3 基于语言模型的分词方法
方法描述:设对于待切分的句子
,
是一种可能的切分。则有:
这里
就是语言模型,
就是生成模型。
优点:
- 在训练语料规模足够大和覆盖领域足够多时,可以获得较高的切分正确率。
弱点:
- 规模性能较多地依赖于训练语料的规模和质量,训练语料的规模和覆盖领域不好把握;
- 计算量较大。
4 基于HMM的分词方法
基本思想是把输入字串(句子)
作为HMM的
的输入;切分后的单词串
作为状态的输出,即观察序列
。词性序列
为状态序列,每个词性标记
对应HMM中的一个状态
,
。则:
优点:
- 在训练语料规模足够大和覆盖领域足够多时,可以获得较高的切分正确率。
弱点:
- 模型性能较多地依赖于训练语料的规模和质量,训练语料的规模和覆盖领域不好把握;
- 模型实现复杂、计算量较大。
5 由字构词(基于字标注)的分词方法
基本思想是,将分词过程看作是字的分类问题。该方法认为,每个字在构造一个特定的词语时都占据着一个确定的构词位置(即词位)。假定每个字只有4个词位:词首(B)、词中(M)、词尾(E)和单独成词(S),那么字归属一特定的词位。
该方法的重要优势在于,它能够平衡地看待词表词和未登录词的识别问题,文本中的词表词和未登录词都是用同一的字标注过程来实现的。在学习构架上,既可以不必专门强调词表词信息,也不用专门设计特定的未登录词识别模块,因此,大大地简化了分词系统的设计[黄昌宁,2006]
参考资料:《统计自然语言处理》宗成庆