zoukankan      html  css  js  c++  java
  • 中文分词常用算法之基于词典的正向最大匹配

    算法描述:

    1. S1为带切分字符串,S2为空,MaxLen为词典中的最大词长
    2. 判断S1是否为空,若是则输出S2
    3. 从S1左边开始,取出待处理字符串str(其中str的长度小于MaxLen)
    4. 查看str是否在词典中,若是则转5,若否则转6
    5. S2+=str+”/”,S1-=str,转2
    6. 将str最右边的一个字去掉
    7. 判断str是否为单字,若是则转5,若否则转4

      Java实现代码:

       1 public static List<String> FMM(String text) {
       2         List<String> result = new ArrayList<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(0, 0 + len);
       9             while (!DIC.contains(tryWord)) {
      10                 if (tryWord.length() == 1) {
      11                     break;
      12                 }
      13                 tryWord = tryWord.substring(0, tryWord.length() - 1);
      14             }
      15             result.add(tryWord);
      16             text = text.substring(tryWord.length());
      17         }
      18         return result;
      19     }

      小结:

      正向最大匹配算法是中文分词基本算法之一,它分词速度快但是准确度并不高,比如“长春市长春节快乐”用正向最大匹配分出的来得结果是“长春市,市长,节,快乐”,这显然不符合我们的语言习惯,所以在此思想上,我们可以用逆向最大匹配算法来解决此类问题。

  • 相关阅读:
    CSS3点赞动画特效源码下载
    jQuery仿阿里云购买选择购买时间长度
    Ubuntu系统操作快捷键
    DIV+CSS颜色边框背景等样式
    HTML5翻页电子书
    淡蓝风格的手机登录HTML模板
    HTML常用符号
    SQL SERVER实例解析
    div+css页面右侧底部悬浮层
    C#引用C++代码
  • 原文地址:https://www.cnblogs.com/stardjyeah/p/4528781.html
Copyright © 2011-2022 走看看