一种正向最小匹配的中文分词算法

        ///<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

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


 

posted @ 2011-11-07 12:13  Yao,Mane  阅读(1150)  评论(0编辑  收藏  举报