Java实现正向最大匹配法和逆向最大匹配法

本文介绍了自然语言处理中的分词算法,重点讲解了基于规则的正向最大匹配法(MM)和逆向最大匹配法(RMM)在Java中的实现。MM算法从左到右按最长匹配进行分词,而RMM则是从右到左。两者各有优缺点,如MM简单易实现但可能忽略内部词,RMM则能一定程度上弥补这一问题。
摘要由CSDN通过智能技术生成

在自然语言处理中,词是语言中最小的能够独立运用的单位,是信息处理的基本单位。
汉语自动分词是把没有明显分界标志的字串切分为词串。包括:标点符号、数字、数学符号、各种标记、人名、地名、机构名等未登录词的识别。

分词算法

基于规则的自动分词算法
  1. 事先人工建立好分词词典和分词规则库。
  2. 原理为基于字符串匹配进行分词,这样就要求有足够大的词表为依据。
  3. 通过一定的算法来实现,如正向最大匹配法、逆向最大匹配法、双向匹配法等。
  4. 优缺点:当分词词典所收容的词较少时,显然覆盖度就有限,分词的正确率就低。
基于统计的分词方法

利用字与字间、词与词间的同现频率作为分词的依据, 可以没有建立好的词典需要大规模的训练文本, 用来训练模型参数
优点:不受应用领域的限制;
缺点:训练文本的选择将影响分词结果

正向最大匹配法(Maximum Matching Method,MM)

算法描述:
设MaxLen表示最大词长,D为分词词典
1. 从待切分语料中按正向取长度为MaxLen的字串str,令Len=MaxLen;
2. 把str与D中的词相匹配;
3. 若匹配成功,则认为该字串为词,指向待切分语料的指针向前移Len个汉字(字节),返回到(1);
4. 若不成功:如果Len>1,则将Len减2,从待切分语料中取长度为Len的字串str,返回到(2)。否则,得到长度为2的单字词,指向待切分语料的指针向前移1个汉字,返回(1)。

正向最大匹配法的优点:
1. 扫描方向从左到右,从长到短的顺序匹配
2. 原理简单,计算机程序实现容易,复杂度低

MM算法的缺点
忽视“词中有词”的现象,导致切分错误
如切分:”幼儿园地节目”
切分结果为:幼儿园/地/节目/
正确结果为:幼儿/园地/节目/
最大词长难以确定太长,匹配所花时间多,算法时间复杂度提高,太短,不能切分长度超过它的词,导致切分正确率降低

逆向最大匹配法( Reverse Maximum Matching Method,RMM )

逆向最大匹配法就是从右到左的正向最大匹配法。

算法实现:

MM:

public class MM {
    private static StringBuilder result=new StringBuilder();
    private static final int MAXLEN=3; //最大字符数
    private static</
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值