码迷,mamicode.com
首页 > 其他好文 > 详细

[搜索]一种分词方法的实现

时间:2014-12-11 12:25:30      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:blog   ar   sp   for   on   2014   log   代码   as   

加上有一句话,thisisabook,要将之分成合适的单词,假设有一个字典,这个字典包含单词。

我刚看到这个需求,第一反应是用搜索中的分词方式,最大匹配法,后来经过高人指点,说不用,只需要遇到正确的单词就分出来,然后又想到了回溯法,再次经高人指点,回溯也不需要,只需要递归即可。下面是简单的实现代码,供参考:

char *dict[]={"a","is","book","boo","this"};
bool isword(char* wd)
{
	for(int i=0;i<sizeof(dict)/sizeof(dict[0]);i++)
	{
		if(strcmp(dict[i],wd) == 0)
			return true;
	}
	return false;
}
bool splitter(const char* src)
{
	char word[100]={0};
	int i=0;
	int nlen = strlen(src);
	if(nlen == 0)
		return true;
	for(i=0;i<nlen;i++)
	{
		strncpy(word,src,i+1);
		if(isword(word))
		{
			if(splitter(src+i+1))
			{
				printf("word=%s\n",word);
				return true;
			}
		}

	}
	if(i >= nlen)
		return false;
	return true;
}


假设调用splitter("thisisabook");则执行结果为:


word=book
word=a
word=is
word=this

有没有办法从前往后输出单词呢?



[搜索]一种分词方法的实现

标签:blog   ar   sp   for   on   2014   log   代码   as   

原文地址:http://blog.csdn.net/zhanghaiyang9999/article/details/41864169

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!