分词问题分析

题目来源,待字闺中,原创@陈利人 ,欢迎大家继续关注微信公众账号“待字闺中”

给定字符串,以及一个字典,判断字符串是否能够拆分为字段中的单词。例如,字段为{hello,world},字符串为hellohelloworld,则可以拆分为hello,hello,world,都是字典中的单词。

思想:最直接的思路就是递归,我们考虑每一个前缀,是否在字典中?如果在,则递归处理剩下的字串;如果不再,则考虑下一个前缀。写成表达式就是fun(i)=substr(i,j-i+1)
&& fun(j+1),其中i<=j<n-1,且substr(i,j-i+1)在字典中。很显然,该递归包含很多重复子问题,所以可以用动态规划,状态转移方程和上面类似,加速的原因是我们只计算一次子问题,即从后向前计算dp[i]=substr(s,j-i+1)
&& dp[j+1],具体代码如下:

bool dictionaryContain(const set<string>& strset,const string& str)
{
	set<string>::iterator iter = strset.find(str);
	if(iter != strset.end())return true;
	else return false;
}

bool wordBreak(const string& str,const set<string>& strset)
{
	int length = str.size();
	bool* dp = new bool[length+1];
	memset(dp,0,sizeof(bool)*(length+1));
	dp[length] = true;
	int i,j;
	for(i=length-1;i>=0;i--)//从后向前计算dp
	{
		for(j=i;j<=length;j++)
		{
			if(dictionaryContain(strset,str.substr(i,j-i+1)) && dp[j+1])//状态转移方程
			{
				dp[i] = true;
				break;
			}
		}
	}
	return dp[0];
}

以上只代表个人想法,如果有问题,请指出,谢谢

分词问题分析

时间: 2024-10-31 11:24:08

分词问题分析的相关文章

唐诗三百首分词词频分析

发现本博客的文章也有随意转载了,而且排名还比原文高.所以加上申明,本文不得转载. http://www.cnblogs.com/cartler ? 下面是正文,看到微博上词频分析很火,自己也试了下. 过程很简单,但结果很有趣,所以先上结果. 成果基本可以由下面这首"唐诗"概括,o(≧v≦)o~~好棒~ ? 不见万里在何处 琵琶明月尤不知 不得春风思故人 长安将军今无人 ? 出现频率最高的如下: ? 从结果还可以分析出一些东西: 比如:蜀道之难难于上青天,仅仅这一句就出现过三次,[出典]

分词技术

目录(?)[+] 我们要理解分词技术先要理解一个概念.那就是查询处理,当用户向搜索引擎提交查询后,搜索引擎接收到用户的信息要做一系列的处理.步骤如下所示: 1.首先是到数据库里面索引相关的信息,这就是查询处理. 那么查询处理又是如何工作的呢?很简单,把用户提交的字符串没有超过3个的中文字,就会直接到数据库索引词汇.超过4个中文字的,首先用分隔符比如空格,标点符号,将查询串分割成若干子查询串. 举个例子.“什么是百度分词技术” 我们就会把这个词分割成“ 什么是,百度,分词技术.”这种分词方法叫做反

用R进行文本分析初探——以《红楼梦》为例

刚刚接触R语言和文本分析,为了将二者结合,试着对<红楼梦>进行分析,首先对<红楼梦>进行分词处理,并统计词频,同时画出标签云. 其实文本分析还可以分析其它很多东西,我的下一步打算分析新浪微博.现在先写一个小的分析,作为学习用. 文本分析是指对文本的表示及其特征项的选取:文本分析是文本挖掘.信息检索的一个基本问题,它把从文本中抽取出的特征词进行量化来表示文本信息. 一.需要加载的包 需要用到rJava,Rwordseg,wordcloud 安装步骤: 1.安装java: http:/

lucene&amp;nbsp;分词的一些杂谈

找遍了网上所有的中文的分词工具,没有一个可以拿来用的,所以决定还是自己做一个分词的工具把,分词的核心功能: 1.分词基础算法(常见的有正向最大,逆向最大,最多分词,基于统计,基于理解即无词库分词等,当然一个好的搜索引擎必然是基于多种分词方式的) 2.是否支持强制一元分词:这个是商业的搜索引擎必备的. 3.同义词识别,简体中文和繁体中文的识别对应转换,中文和拼音的互转 4.支持中文分词的时候是否考虑好了英文的处理:难免会遇到英文文档,和中英混合的文档 5.特殊内容的处理: 邮箱处理.电话号码的处理

Elasticsearch拼音分词和IK分词的安装及使用

一.Es插件配置及下载 1.IK分词器的下载安装 关于IK分词器的介绍不再多少,一言以蔽之,IK分词是目前使用非常广泛分词效果比较好的中文分词器.做ES开发的,中文分词十有八九使用的都是IK分词器. 下载地址:https://github.com/medcl/elasticsearch-analysis-ik 2.pinyin分词器的下载安装 可以在淘宝.京东的搜索框中输入pinyin就能查找到自己想要的结果,这就是拼音分词,拼音分词则是将中文分析成拼音格式,可以通过拼音分词分析出来的数据进行查

ElasticSearch(四)查询、分词器

正向索引 正排表是以文档的ID为关键字,表中记录文档中每个字的位置信息,查找时扫描表中每个文档中字的信息直到找出所有包含查询关键字的文档. 这种组织方法在建立索引的时候结构比较简单,建立比较方便且易于维护;因为索引是基于文档建立的,若是有新的文档加入,直接为该文档建立一个新的索引块,挂接在原来索引文件的后面.若是有文档删除,则直接找到该文档号文档对应的索引信息,将其直接删除.但是在查询的时候需对所有的文档进行扫描以确保没有遗漏,这样就使得检索时间大大延长,检索效率低下. 尽管正排表的工作原理非常

自然语言分析工具Hanlp依存文法分析python使用总结(附带依存关系英文简写的中文解释)

最近在做一个应用依存文法分析来提取文本中各种关系的词语的任务.例如:text='新中国在马克思的思想和恩格斯的理论阔步向前': ps:这里马克思和恩格斯原来我是用的毛zd和邓xp,但是系统说这两个名字违规了........我很爱国的好不好!!!!!! 我需要提取这个text中的并列的两个关系,从文中分析可知,"马克思的思想"和"恩格斯的理论"是两个并列关系的短语,所以想要将其提取出来: 首先大致了解一下依存文法分析的前提条件,将句子分词并进行词性标注,这一步非常关键

elasticsearch term match multi_match区别

转自:http://www.cnblogs.com/yjf512/p/4897294.html match 最简单的一个match例子: 查询和"我的宝马多少马力"这个查询语句匹配的文档. { "query": { "match": { "content" : { "query" : "我的宝马多少马力" } } } } 上面的查询匹配就会进行分词,比如"宝马多少马力"

Solr开发文档

Solr 是一种可供企业使用的.基于 Lucene 的搜索服务器,它支持层面搜索.命中醒目显示和多种输出格式.在这篇文章中,将介绍 Solr 并展示如何轻松地将其表现优异的全文本搜索功能加入到 Web 应用程序中. 开发环境: System:Windows WebBrowser:IE6+.Firefox3+ JDK:1.6+ JavaEE Server:tomcat5.0.2.8.tomcat6 IDE:eclipse.MyEclipse 8 开发依赖库: JavaEE 5.solr 3.4 个