标签:
算法描述:
Java实现代码:
1 public static List<String> BMM(String text) { 2 Stack<String> result = new Stack<String>(); 3 while (text.length() > 0) { 4 int len = MAX_LENGTH; 5 if (text.length() < len) { 6 len = text.length(); 7 } 8 String tryWord = text.substring(text.length() - len); 9 while (!DIC.contains(tryWord)) { 10 if (tryWord.length() == 1) { 11 break; 12 } 13 tryWord = tryWord.substring(1); 14 } 15 result.push(tryWord); 16 text = text.substring(0, text.length() - tryWord.length()); 17 } 18 int len = result.size(); 19 List<String> list = new ArrayList<String>(len); 20 for (int i = 0; i < len; i++) { 21 list.add(result.pop()); 22 } 23 return list; 24 }
小结:
逆向最大匹配也是中文分词基本算法之一,因为是机械切分,所以它也有分词速度快的有点,最大逆向匹配比起正向最大匹配更符合人们的语言习惯,在上篇提到的“长春市长春节快乐”这句话它能完美的切分,但是它还是有局限性比如在切分“长春药店”、“画上荷花和尚画”这类句字时它的表现就没有正向最大匹配好,所以在此基础上我们可以使用双向最大匹配来解决此类问题。
标签:
原文地址:http://www.cnblogs.com/stardjyeah/p/4528782.html