在自然语言处理中,词是语言中最小的能够独立运用的单位,是信息处理的基本单位。
汉语自动分词是把没有明显分界标志的字串切分为词串。包括:标点符号、数字、数学符号、各种标记、人名、地名、机构名等未登录词的识别。
分词算法
基于规则的自动分词算法
- 事先人工建立好分词词典和分词规则库。
- 原理为基于字符串匹配进行分词,这样就要求有足够大的词表为依据。
- 通过一定的算法来实现,如正向最大匹配法、逆向最大匹配法、双向匹配法等。
- 优缺点:当分词词典所收容的词较少时,显然覆盖度就有限,分词的正确率就低。
基于统计的分词方法
利用字与字间、词与词间的同现频率作为分词的依据, 可以没有建立好的词典需要大规模的训练文本, 用来训练模型参数
优点:不受应用领域的限制;
缺点:训练文本的选择将影响分词结果
正向最大匹配法(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</