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

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

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


 

转载于:https://www.cnblogs.com/mane/archive/2011/11/07/2239073.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值