zoukankan      html  css  js  c++  java
  • 一种正向最小匹配的中文分词算法

            ///<summary>
    /// 根据字符串截取存在的词语算法(分词算法)
    ///</summary>
    ///<param name="sentence">需要操作的语句</param>
    ///<returns>所有在中文中存在的词语</returns>
    #region GetAllWords
    public ArrayList GetAllWords(string sentence, int subLength)
    {
    //截取所有字符串列表
    ArrayList wordList = new ArrayList();
    CData cd = new CData(mdbPath);

    for(int i=0;i<sentence.Length-1 ;i++)
    {
    for (int j =subLength; j >= 2; j--)
    {
    try
    {
    //正常截取
    string str = sentence.Substring(i, j);

    //对比数据库,看是否是词
    if (cd.ReadDataCount(str) > 0)//如果数据库中有这个词
    {
    wordList.Add(str);//添加到列表
    i += str.Length - 1;
    break;
    }
    }
    catch
    {
    //如果截取出界则转到下次循环
    continue;
    }
    }
    }

    return wordList;
    }
    #endregion

    上面是简单的中文分词的 正向最小截取算法,实验结果太令我失望了,虽然说搜索中文词库的次数减少了,但是,相对遍历每一个词组,搜索的时间却增长了,令我十分不解。望求高手指定迷津


     

  • 相关阅读:
    C函数调用
    C语言的起源
    使用对象流将数据以对象形式进行读写
    使用File类新建一个文本文件
    Windows下架设本机上Subversion服务器
    本地svn版本管理搭建
    ExtJs-第一讲
    找工作经历
    浅谈HashMap的实现原理(转载)
    异常
  • 原文地址:https://www.cnblogs.com/mane/p/2239073.html
Copyright © 2011-2022 走看看