用python实现FMM和BMM

文章介绍了自然语言处理中的基本单位——词,以及自动分词分析中的最大匹配法,包括前向最大匹配(FMM)、后向最大匹配(BMM)和双向最大匹配。通过实例展示了FMM和BMM的算法流程和代码实现,对比了两种方法在不同场景下的效果。

词是自然语言中能够独立运用的最小单位,是自然语言处理的基本单位。

自动分词分析就是利用计算机对自然语言的形态进行分析,判断词的结构和类别等。

最大匹配法(Maximum Match Method)

  • 正向最大匹配算法(Forward MM,FMM)
  • 逆向最大匹配算法(Backward MM,BMM)
  • 双向最大匹配法(Bi-directional MM)

算法流程

前向最⼤匹配算法(FMM):

(1)待切分的汉字串 s1 ,已切分的汉字串 s2(初始为空);

(2)如果 s1 为空串,转到(6);

(3)从 s1 的左边复制⼀个⼦串 w 作为候选词, w 尽可能长,但不超过最⼤词长;

(4)如果在词表中能找到 w,或者 w 的长度为2(这个数值可以自己根据情况设定,通常为词表内最短的词的长度),那么,将 w 和⼀个界词标记⼀起加到 s2 的右边,并从 s1 的左边去掉 w,转 到(2);

(5)去掉w的最后⼀个汉字,转到(4);

(6)结束。

实例

给定词表:

['他', '是', '研究', '研究⽣', '⽣物', '物化', '化学', '⽣物化学', '的', '⼀位', '科学家', '学']

待划分句⼦:

"他是研究⽣物化学的⼀位科学家"

最⼤词长:

MaxWordLength = 8 (汉字)

划分过程

FMM划分过程:

1、考虑子串 "他是研究生物化学" ,判断其不再给定词表中,因此,删除最后一个汉字,考虑子串 "他是研究生物化",再次判断其不再给定词表中,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值