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

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


     

  • 相关阅读:
    负外边距--转载
    研究Dropbox Server端文件系统
    Bluetooth Profile for iPhone from the functional perspectives
    Somebody That I Used to Know
    复合查询
    聚合查询
    Filter查询
    ES基本查询
    ES版本控制
    ES基本操作
  • 原文地址:https://www.cnblogs.com/mane/p/2239073.html
Copyright © 2011-2022 走看看