CN103383699A - 字符串检索方法及系统 - Google Patents

字符串检索方法及系统 Download PDF

Info

Publication number
CN103383699A
CN103383699A CN201310270390XA CN201310270390A CN103383699A CN 103383699 A CN103383699 A CN 103383699A CN 201310270390X A CN201310270390X A CN 201310270390XA CN 201310270390 A CN201310270390 A CN 201310270390A CN 103383699 A CN103383699 A CN 103383699A
Authority
CN
China
Prior art keywords
node
retrieval
character
result
score
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201310270390XA
Other languages
English (en)
Other versions
CN103383699B (zh
Inventor
石峰
吴维昊
郏全
史峰
路雪玲
张磊
聂小林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Anhui Toycloud Technology Co Ltd
Original Assignee
iFlytek Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by iFlytek Co Ltd filed Critical iFlytek Co Ltd
Priority to CN201310270390.XA priority Critical patent/CN103383699B/zh
Publication of CN103383699A publication Critical patent/CN103383699A/zh
Application granted granted Critical
Publication of CN103383699B publication Critical patent/CN103383699B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种字符串检索方法及系统,该方法包括:接收用户输入的检索信息;将所述检索信息中的字符串逐个字符进行拼音转换,并确定所述字符的相似发音集合;依次将所述字符的拼音及其相似发音集合中的相似发音进入多叉前缀树进行检索;在检索到与所述拼音或所述相似发音相匹配的节点时,将所述节点记录为激活状态,并记录激活路径,在下一个字符的拼音及其相似发音进入所述多叉前缀树后,对所有处于激活状态下的节点继续进行检索,直到检索到终止节点;获取所述激活路径上的终止节点保存的关键词信息;将所述关键词信息作为检索结果展现给所述用户。利用本发明,可以在保证容错能力下提高检索性能,降低运算量及对资源的占用率。

Description

字符串检索方法及系统
技术领域
本发明涉及信息检索技术领域,具体涉及一种字符串检索方法及系统。
背景技术
在当前的互联网时代,信息检索被运用在几乎所有的行业中,而不同的服务商,包括搜索厂商、电信厂商等,已经不再满足于单纯地向用户提供检索信息,更多的是在提供检索信息的同时,提供用户需求的服务,提升产品的体验度。这就需要检索信息具有很高的准确性,为此,对用户输入信息的准确性及检索结果的准确性都提出了较高的要求。
目前,主流的信息输入方式主要有:拼音输入法、手写输入法、五笔输入法和智能语音输入法,其中语音输入法在一些语音软件和电信厂商的无线语音业务增值服务中应用广泛。可见,用户的输入方式中与发音相关的就有拼音输入法和语音输入法。而在日常的使用中,由于用户拼音输入的错误,这点在目前非常流行的移动终端设备的T9键盘上尤为突出,或者语音识别的错误,这些错误有一个相同的特性,即发音相同或相似但文字错误,这就引起服务商获取到的实际信息与用户的期望信息存在差异,导致检索错误,提供了用户不需要的服务,也降低了产品体验度。
针对这种情况,业界多采用发音容错的方式,提升识别效果。相比于精确检索,容错识别由于未知性的结果扩大,运算量增大,降低了检索性能,而且会大大增加资源的占用率。
发明内容
本发明提供一种字符串检索方法及系统,在保证容错能力下提高检索性能,降低运算量及对资源的占用率。
为此,本发明提供如下技术方案:
一种字符串检索方法,包括:
接收用户输入的检索信息,所述检索信息包括字符串;
将所述字符串逐个字符进行拼音转换,并确定所述字符的相似发音集合;
依次将所述字符的拼音及其相似发音集合中的相似发音进入多叉前缀树进行检索;
在检索到与所述拼音或所述相似发音相匹配的节点时,将所述节点记录为激活状态,并记录激活路径,在下一个字符的拼音及其相似发音进入所述多叉前缀树后,对所有处于激活状态下的节点继续进行检索,直到检索到终止节点;
获取所述激活路径上的终止节点保存的关键词信息;
将所述关键词信息作为检索结果展现给所述用户。
优选地,所述检索信息为拼音输入或语音输入得到的字符串。
优选地,所述方法还包括:
按以下方式建立所述多叉前缀树:
将预先设定的关键词对应的字符串进行拼音转换,得到发音串;
根据所述发音串建立所述多叉前缀树,所述多叉前缀树的终止节点上保存所述发音串对应的关键词信息。
优选地,所述方法还包括:
如果所述多叉前缀树中一个节点的子节点数小于设定值,则采用顺序存储方式保存该节点及其子节点;
如果所述多叉前缀树中一个节点的子节点数大于或等于所述设定值,则采用HASH存储方式保存该节点及其子节点。
优选地,所述方法还包括:
如果根据所述字符串的拼音在所述多叉前缀树中检索得到的多个检索结果在用户输入的检索信息中存在完全包含关系,则将所述检索结果分等级输出;
如果根据所述字符串的拼音在所述多叉前缀树中检索得到的多个检索结果在用户输入的检索信息中不存在完全包含关系,则将所述多个精确字符串作为相同等级输出。
优选地,所述确定所述字符的相似发音集合包括:
根据预先建立的相似发音表确定所述字符的相似发音集合。
优选地,所述方法还包括:
在获取所述激活路径上的终止节点保存的关键词信息之前,计算所述激活路径的得分;
滤除所述得分小于或等于设定的分值门限的激活路径。
优选地,按以下公式计算所述激活路径的得分:
激活路径的得分=∑激活路径上每个字符的相似度/激活路径上的字符个数。
优选地,所述方法还包括:
在所述激活路径到达一个节点后,计算所述节点的可信度;
如果所述可信度小于设定的可信度门限,则将所述节点转为未激活状态。
优选地,按以下公式计算所述节点的可信度:
节点的可信度=(激活路径的得分+min(节点最大高度,剩余字数))/(激活路径当前字数+min(节点最大高度,剩余字数));
节点最大高度=max(所有子节点高度)+1。
优选地,所述方法还包括:
在将所述关键词信息作为检索结果展现给所述用户之前,计算每个检索结果的匹配得分;
按得分高低对所述检索结果进行排序输出。
优选地,按以下公式计算检索结果的匹配得分:
检索结果的匹配得分=(∑检索结果中每个字符的匹配度)*检索结果对应的激活路径的得分。
一种字符串检索系统,包括:
接收模块,用于接收用户输入的检索信息,所述检索信息包括字符串;
转换模块,用于将所述字符串逐个字符进行拼音转换,并确定所述字符的相似发音集合;
检索模块,用于依次将所述字符的拼音及其相似发音集合中的相似发音进入多叉前缀树进行检索;在检索到与所述拼音或所述相似发音相匹配的节点时,将所述节点记录为激活状态,并记录激活路径,在下一个字符的拼音及其相似发音进入所述多叉前缀树后,对所有处于激活状态下的节点继续进行检索,直到检索到终止节点;
信息获取模块,用于获取所述激活路径上的终止节点保存的关键词信息;
展现模块,用于将所述关键词信息作为检索结果展现给所述用户。
优选地,所述系统还包括:
多叉前缀树构建模块,用于将预先设定的关键词对应的字符串进行拼音转换,得到发音串,并根据所述发音串建立所述多叉前缀树,所述多叉前缀树的终止节点上保存所述发音串对应的关键词信息。
优选地,所述展现模块,具体用于在根据所述字符串的拼音在所述多叉前缀树中检索得到的多个检索结果在用户输入的检索信息中存在完全包含关系时,将所述检索结果分等级输出;在根据所述字符串的拼音在所述多叉前缀树中检索得到的多个检索结果在用户输入的检索信息中不存在完全包含关系时,将所述多个精确字符串作为相同等级输出。
优选地,所述转换模块根据预先建立的相似发音表确定所述字符的相似发音集合。
优选地,所述系统还包括:
计算模块,用于在所述信息获取模块获取所述激活路径上的终止节点保存的关键词信息之前,计算所述激活路径的得分;
过滤模块,用于滤除所述得分小于或等于设定的分值门限的激活路径。
优选地,所述计算模块按以下公式计算所述激活路径的得分:
激活路径的得分=∑激活路径上每个字符的相似度/激活路径上的字符个数。
优选地,所述计算模块,还用于在所述激活路径到达一个节点后,计算所述节点的可信度;
所述检索模块,还用于在所述可信度小于设定的可信度门限时,将所述节点转为未激活状态。
优选地,所述计算模块按以下公式计算所述节点的可信度:
节点的可信度=(激活路径的得分+min(节点最大高度,剩余字数))/(激活路径当前字数+min(节点最大高度,剩余字数));
节点最大高度=max(所有子节点高度)+1。
优选地,所述计算模块,还用于在将所述关键词信息作为检索结果展现给所述用户之前,计算每个检索结果的匹配得分;
所述展现模块,具体用于按得分高低对所述检索结果进行排序输出。
优选地,所述计算模块按以下公式计算检索结果的匹配得分:
检索结果的匹配得分=(∑检索结果中每个字符的匹配度)*检索结果对应的激活路径的得分。
本发明实施例提供的字符串检索方法及系统,对接收到的用户检索信息中的字符串,不仅对字符串中每个字符进入多叉前缀树进行检索,得到精确的检索结果,而且对所述字符的相似发音,也进入所述多叉前缀树进行检索,得到与所述检索信息中的字符串相似的发音字符串。从而可以针对用户可能的错误输入,进行发音容错识别,保证了检索的全面性,使服务商获取到的信息(即需要检索的信息)与用户的实际期望信息尽可能保持一致,进而为用户提供其真正所需要的服务。
与现有技术相比,本发明实施例提供的字符串检索方法及系统,在大规模字符串数据量下拥有较高性能,可以在保证容错能力下提高检索性能,降低运算量及对资源的占用率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本发明实施例字符串检索方法的流程图;
图2是本发明实施例中多叉前缀树的示意图;
图3是本发明实施例字符串检索系统的一种结构示意图;
图4是本发明实施例字符串检索系统的另一种结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例的方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
本发明实施例的字符串检索方法及系统,采用多叉前缀树的方式保存字符串数据集,将字符串信息保存在多叉前缀树的终止节点上,父节点与子节点间采用发音而不是字符相互关联,由于汉字中相同发音字较多,所以相比较使用汉字多叉树,内存占用较小。
在检索时,通过多叉树上节点路径的激活与非激活状态,来继续或者终止一条检索路径,在检索到终止节点时,得到激活路径,进而获得激活路径上的终止节点保存的关键词信息,即检索结果。而且,在利用多叉前缀树进行检索时,不仅用户输入的每个字符都要依次进入多叉前缀树进行检索,而且所述字符的相似发音集合中的每个相似发音也要进入多叉前缀树进行检索,从而不仅得到精确检索结果,而且还可以得到相似发音字符串。
如图1所示,是本发明实施例字符串检索方法的流程图,包括以下步骤:
步骤101,接收用户输入的检索信息,所述检索信息包括字符串。
具体地,所述检索信息可以是拼音输入或语音输入得到的字符串,当然,也可以是用户采用其它输入法输入的字符串,比如手写输入法、五笔输入法等,对此本发明实施例不做限定。
步骤102,将所述字符串逐个字符进行拼音转换,并确定所述字符的相似发音集合。
比如,用户输入的字符串为“春天里”,则将其进行拼音转换,得到对应每个字符的拼音,即chun1-tian1-li3,其中的数字表示拼音的音调。
对于每个拼音,都会有与其相似的发音,为了实现发音容错检索,需要得到每个字符对应的拼音的所有相似发音,这些相似发音组成对应该字符的相似发音集合。
具体地,在本发明实施例中,可以根据预先建立的相似发音表确定所述字符的相似发音集合。
汉字拼音分为声母、韵母和声调三个要素,通过对大量录音数据的采集,可以计算出拼音发音间的相似度。
由于汉字拼音的发音一共存在约1200个,如果以此建立两两对应关系的键值表,可以看出一共会存在1200*1200=1440000的键值对。考虑到在实际使用中,此数据量大且不利于查找,而且,例如“li1-ni1”,“yin1-ying1”等相似度较高,而“wo1-hao3”,“lai2-yao4”等相似度太低,所以在建立所述相似发音表时,对于一个拼音,可以只保存与其相似较高的发音,作为该拼音的相似发音,并且进行有序保存。
步骤103,依次将所述字符的拼音及其相似发音集合中的相似发音进入多叉前缀树进行检索。
在本发明实施例中,所述多叉前缀树保存了关键词对应的字符串信息,父节点与子节点间采用发音而不是字符相关联。由于汉字中相同发音字较多,所以相比较使用汉字关联方式的多叉树,本发明实施例中的多叉前缀树内存占用较小,可以有效地节省内存资源。
所述多叉前缀树可以根据预先采集的整个关键词列表来建立,具体地,可以将预先设定的关键词对应的字符串进行拼音转换,得到发音串;然后根据所述发音串建立所述多叉前缀树,所述多叉前缀树的终止节点上保存所述发音串对应的关键词信息。
例如,关键词列表如下表1所示:
表1:
序号 关键词
1 小白菜
2 小城故事
3 春天
4 春天里
其对应的多叉前缀树如图2所示,其中,节点0为根节点,即多叉前缀树的初始节点;节点5、8、7、9为终止节点,在这些终止节点上分别保存了对应的关键词信息。
需要说明的是,由于不同节点的子节点数可能不同,所以,为了有效节省内存占用,并提升检索速度,可以对不同节点采用不同的存储方式,比如顺序存储和HASH模式存储。具体地,当一个节点的子节点数较少时,可以使用顺序存储的方式,此时由于数量较少,在检索时进行顺序的遍历即可,对整体性能影响较小;当一个节点的子节点数较多时,可以采用HASH模式存储,需要检索某一个子节点时,使用HASH方式查找,性能较快。
在根据所述多叉前缀树进行检索时,需要将字符串中逐个字符的拼音进入到多叉前缀树。当一个字符的拼音进入多叉前缀树的根节点后,即产生一条以节点0为起始节点的激活路径。
步骤104,在检索到与所述拼音或所述相似发音相匹配的节点时,将所述节点记录为激活状态,并记录激活路径,在下一个字符的拼音及其相似发音进入所述多叉前缀树后,对所有处于激活状态下的节点继续进行检索,直到检索到终止节点。
前面提到,对于一个字符,不仅有与该字符对应的拼音,而且还可以得到与其对应的相似发音,为了使检索结果与用户的实际期望信息尽可能保持一致,在本发明实施例中,不仅可以依据字符的拼音从所述多叉前缀树中得到精确的检索结果,而且还可以根据字符的相似发音从所述多叉前缀树中得到拼音容错的检索结果。具体的检索过程将在后面举例详细说明。
步骤105,获取所述激活路径上的终止节点保存的关键词信息。
步骤106,将所述关键词信息作为检索结果展现给所述用户。
下面举例进一步详细说明本发明实施例中利用多叉前缀树实现字符串精确检索及相似发音字符串容错检索的过程。
一、字符串精确检索
例如,用户输入的检索信息是:“我想查找春天里”,则逐个字符进入图2所示多叉前缀树的检索过程如下:
a)当第一个字符,即“我”字,进行拼音转换为“wo3”后,进入多叉前缀树,此时只存在一条以节点0为首节点的激活路径。对节点0的子节点进行检索(此时,会根据节点0的子节点数量,采用hash检索,或是顺序检索方式),由于节点0并不存在“wo3”的子节点,所以当“我”字进入多叉前缀树后,没有出现新的激活路径,因此由“我”字进入多叉前缀树而产生的激活路径转入未激活状态。
b)将第二个字符“想”字进行拼音转换进入多叉前缀树后,可以看出,仍旧没有新的激活路径产生。
c)将汉字依次进入,直到“春”字,由于节点0存在由发音“chun1”关联的子节点,所以,节点2被激活。此时同时存在两个处于激活状态的节点,并进行记录。
d)当“天”字进入多叉前缀树后,需对所有的处于激活状态下的节点(即节点0和节点2)进行检索。可以看到,检索结果为节点0不存在发音为“tian1”的子节点,因为节点0为根节点,所以各状态保持不变。同时,节点2存在发音为“tian1”的子节点,即节点5,此时,节点2将激活状态移交到节点5上,节点2进入了未激活状态。所以此时仍旧共有两个处于激活状态下的节点,即节点0和节点5。
e)由于节点5为终止节点,所以记录下节点5上的字符串信息,即“春天”。由于用户输入内容“春天”与节点5上保存的“春天”,内容完全一致,此时为精确检索结果。
f)由于字符串还没有完全进入多叉前缀树中,所以继续检索。当“里”字进入多叉前缀树后,发现节点5存在由“li3”相关联的节点8,由于节点8为终止节点,且输入内容“里”与节点8保存的内容一致,因此,“春天里”也为精确检索结果。
至此,所有字符已经进入多叉前缀树,检索结束。共获得“春天”和“春天里”两个检索结果。
需要说明的是,由于得到的精确检索结果有时会有多个,因此,对这些精确检索结果,可以按照以下的方式进行输出:如果根据所述字符串的拼音在所述多叉前缀树中检索得到的多个检索结果在用户输入的检索信息中存在完全包含关系,则将所述检索结果分等级输出;如果根据所述字符串的拼音在所述多叉前缀树中检索得到的多个检索结果在用户输入的检索信息中不存在完全包含关系,则将所述多个精确字符串作为相同等级输出。
比如,上例中用户输入的检索信息为“我想查找春天里”,得到的精确检索结果有两个,分别为:“春天”和“春天里”,其中,“春天里”完全包含了“春天”,所以“春天里”可以作为第一优先级结果输出,“春天”作为第二优先级结果输出。
再比如,如果用户输入的检索信息为“我想找春天,我想找春天里”,得到的精确检索结果有两个,分别为:“春天”和“春天里”,这两个检索结果在用户的输入中不存在完全的包含关系,则“春天”与“春天里”同作为第一优先级输出。
当然,在实际应用中,对不同的检索结果还可以采用其他不同的输出方式,对此本发明实施例不做限定。
二、相似发音字符串容错检索
与上面描述的字符串精确检索一样,针对用户输入的检索信息,需要将检索信息包含的字符串中逐个字符的拼音进入到多叉前缀树。当一个字符的拼音进入多叉前缀树的根节点后,即产生一条以节点0为起始节点的激活路径。
与字符串精确检索不同的是,每条“激活”路径都有一个初始值为1的得分,激活路径要能够到达终止节点。进一步地,为了保证检索结果的质量,避免过多的无关检索结果,还可以要求激活路径在终止节点处的得分大于设定的分值门限,也就是说,滤除得分小于或等于设定的分值门限的激活路径,只获取得分大于所述分值门限的激活路径上的终止节点保存的关键词信息。
具体地,可以按以下公式计算所述激活路径的得分:
当然,还可以采用其他方式确定激活路径的得分,对此本发明实施例不做限定。
另外一点与字符串精确检索不同的是,当一个字符进入多叉前缀树后,并不是直接对该字符转换的拼音进行检索,而是计算并查找符合当前检索要求所有可能发音,即该字符的相似发音集合中的所有发音。
例如,用户输入的检索信息是:“笑城故事”,并且设定的分值门限为0.9,则逐个字符进入图2所示多叉前缀树的检索过程如下:
a)首先当“笑”字进入后,其拼音为“xiao4”。相似发音为“xiao1”,“xiao3”,“jiao4”…等。根据其相似发音,对激活路径进行相应检索。可以看到,由于节点0存在“xiao3”的子节点,即节点1,所以节点1被激活,假设“xiao3”与“xiao4”的相似度为0.8,则此条“激活路径”得分为0.8。
b)继续后续检索,不难看出,后续的检索并没有出现出错的情况,所以当这条激活路径到达终止节点9时,通过上述得分公式计算,得到该激活路径的得分为(0.8+1+1+1=3.8)/4=0.95分,满足门限要求,此时记录结果,即获取终止节点9保存的关键词“小城故事”。
为了防止激活路径的数量过于庞大,导致运算量过大而影响检索效率,在本发明另一实施例中,还可以在激活路径每到达一个节点后,对该节点进行可信度判断,如果可信度大于设定的可信度门限,则继续,否则将该节点转为未激活状态。
具体地,可以按以下公式计算所述节点的可信度:
Figure BDA00003433203000111
节点最大高度=max(所有子节点高度)+1   (3)
树是n个节点的有限集,在任意一棵非空树中,满足以下条件:
(1)有且仅有一个特定的根(Root)节点;
(2)当n>1时,其余节点可分为m(m>0)个互不相交的有限集合T1,T2….Tm,其中每一个集合本身又是一棵树,并且称为根的子树。
例如:图2中,节点0是根节点,其余节点分成两个互不相交的子集,T1={1,3,4,6,7,9},T2={2,5,8};T1和T2都是根“0”的子树,且本身也是一棵树。
节点的层次:是指从根开始定义起,根为第一层,根的子节点为第二层。依次类推。在本发明实施例中,节点高度是指以此节点为根节点的子树的最大层次。例如图2中节点1的最大层次为4,节点2的最大层次为3,节点0的最大层次为5,也就是说,节点1、节点2、节点0的高度分别为4、3、5。
需要说明的是,当一个节点没有子节点时,其高度为0。
通过上述对可信度的判断,可以有效降低无效的激活路径过度膨胀引起的性能下降。
另外,由于针对每个字符串,会得到一定数量的检索结果。因此,在实际应用中,可以对这些检索结果进行排序输出,并展现给用户。具体地,可以对检索结果进行字符匹配判断,得到每个检索结果的匹配得分,然后根据得分高低进行排序输出。
检索结果的匹配得分可以按以下公式计算:
检索结果的匹配得分=(∑检索结果中每个字符的匹配度)*检索结果对应的激活路径的得分   (4)
需要说明的是,利用本发明实施例字符串检索方法,不仅可以进行字符串精确检索,得到与用户输入的检索信息中字符串相匹配的检索结果,而且还可以进行相似发音字符串容错检索,得到与用户输入的检索信息中字符串发音相似的检索结果。在实际应用中,可以根据用户需要,由用户来选择进行哪种方式的检索,比如,选择其中任一种或同时进行上述两种方式的检索。如果同时进行上述两种方式的检索,则可以对字符的拼音和相似发音分别按照上述两种方式进行检索,得到相应的检索结果;也可以将字符的拼音和相似发音同等对等,采用上述第二种方式进行检索。对此本发明实施例不做限定。
可见,本发明实施例提供的字符串检索方法,可以针对用户可能的错误输入,进行发音容错识别,保证了检索的全面性,使服务商获取到的信息(即需要检索的信息)与用户的实际期望信息尽可能保持一致,进而为用户提供其真正所需要的服务。
相应地,本发明实施例还提供一种字符串检索系统,如图3所示,是该系统的一种结构示意图。
在该实施例中,所述系统包括:
接收模块301,用于接收用户输入的检索信息,所述检索信息包括字符串。
具体地,所述检索信息可以是拼音输入或语音输入得到的字符串,当然,也可以是用户采用其它输入法输入的字符串,比如手写输入法、五笔输入法等,对此本发明实施例不做限定。
转换模块302,用于将所述字符串逐个字符进行拼音转换,并确定所述字符的相似发音集合。
对于每个拼音,都会有与其相似的发音,为了实现发音容错检索,需要得到每个字符对应的拼音的所有相似发音,这些相似发音组成对应该字符的相似发音集合。
具体地,在本发明实施例中,转换模块302可以根据预先建立的相似发音表确定所述字符的相似发音集合。具体可参照本发明实施例字符串检索方法中的描述,在此不再赘述。
检索模块303,用于依次将所述字符的拼音及其相似发音集合中的相似发音进入多叉前缀树进行检索;在检索到与所述拼音或所述相似发音相匹配的节点时,将所述节点记录为激活状态,并记录激活路径,在下一个字符的拼音及其相似发音进入所述多叉前缀树后,对所有处于激活状态下的节点继续进行检索,直到检索到终止节点。
对于一个字符,不仅有与该字符对应的拼音,而且还可以得到与其对应的相似发音,为了使检索结果与用户的实际期望信息尽可能保持一致,在本发明实施例中,不仅可以依据字符的拼音从所述多叉前缀树中得到精确的检索结果,而且还可以根据字符的相似发音从所述多叉前缀树中得到拼音容错的检索结果。具体的检索过程可参照本发明实施例字符串检索方法中的描述,在此不再赘述。
信息获取模块304,用于获取所述激活路径上的终止节点保存的关键词信息。
展现模块305,用于将所述关键词信息作为检索结果展现给所述用户。
由于通常会得到多个检索结果,因此,在实际应用中,展现模块305在展现这些检索结果时,可以采取不同的展现方式,比如:可以在根据所述字符串的拼音在所述多叉前缀树中检索得到的多个检索结果在用户输入的检索信息中存在完全包含关系时,将所述检索结果分等级输出;在根据所述字符串的拼音在所述多叉前缀树中检索得到的多个检索结果在用户输入的检索信息中不存在完全包含关系时,将所述多个精确字符串作为相同等级输出。
需要说明的是,在实际应用中,所述多叉前缀树可以预先构建,为此,在本发明实施例的系统中,还可进一步包括:多叉前缀树构建模块(未图示),用于将预先设定的关键词对应的字符串进行拼音转换,得到发音串,并根据所述发音串建立所述多叉前缀树,所述多叉前缀树的终止节点上保存所述发音串对应的关键词信息。多叉前缀树的结构及具体构建过程可参照本发明实施例字符串检索方法中的描述,在此不再赘述。
另外,需要说明的是,为了保证检索结果的质量,避免过多的无关检索结果,还可以要求激活路径在终止节点处的得分大于设定的分值门限,也就是说,滤除得分小于或等于设定的分值门限的激活路径,只获取得分大于所述分值门限的激活路径上的终止节点保存的关键词信息。
为此,如图4所示,在本发明字符串检索系统的另一实施例中,所述系统还包括:
计算模块401,用于在信息获取模块304获取所述激活路径上的终止节点保存的关键词信息之前,计算所述激活路径的得分;
过滤模块402,用于滤除所述得分小于或等于设定的分值门限的激活路径。
具体地,计算模块401可以按以下公式计算所述激活路径的得分:
激活路径的得分=∑激活路径上每个字符的相似度/激活路径上的字符个数。
另外,计算模块401还可用于在所述激活路径到达一个节点后,计算所述节点的可信度。具体可以按以下公式计算所述节点的可信度:
节点的可信度=(激活路径的得分+min(节点最大高度,剩余字数))/(激活路径当前字数+min(节点最大高度,剩余字数));
节点最大高度=max(所有子节点高度)+1。
相应地,在该实施例中,检索模块303还用于在所述可信度小于设定的可信度门限时,将所述节点转为未激活状态。
另外,计算模块401还可用于在将所述关键词信息作为检索结果展现给所述用户之前,计算每个检索结果的匹配得分。具体可以按以下公式计算检索结果的匹配得分:
检索结果的匹配得分=(∑检索结果中每个字符的匹配度)*检索结果对应的激活路径的得分。
相应地,在该实施例中,展现模块305可以按检索结果的匹配得分的高低对所述检索结果进行排序输出。
本发明实施例提供的字符串检索系统,可以针对用户可能的错误输入,进行发音容错识别,保证了检索的全面性,使服务商获取到的信息(即需要检索的信息)与用户的实际期望信息尽可能保持一致,进而为用户提供其真正所需要的服务。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (22)

1.一种字符串检索方法,其特征在于,包括:
接收用户输入的检索信息,所述检索信息包括字符串;
将所述字符串逐个字符进行拼音转换,并确定所述字符的相似发音集合;
依次将所述字符的拼音及其相似发音集合中的相似发音进入多叉前缀树进行检索;
在检索到与所述拼音或所述相似发音相匹配的节点时,将所述节点记录为激活状态,并记录激活路径,在下一个字符的拼音及其相似发音进入所述多叉前缀树后,对所有处于激活状态下的节点继续进行检索,直到检索到终止节点;
获取所述激活路径上的终止节点保存的关键词信息;
将所述关键词信息作为检索结果展现给所述用户。
2.根据权利要求1所述的方法,其特征在于,所述检索信息为拼音输入或语音输入得到的字符串。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
按以下方式建立所述多叉前缀树:
将预先设定的关键词对应的字符串进行拼音转换,得到发音串;
根据所述发音串建立所述多叉前缀树,所述多叉前缀树的终止节点上保存所述发音串对应的关键词信息。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
如果所述多叉前缀树中一个节点的子节点数小于设定值,则采用顺序存储方式保存该节点及其子节点;
如果所述多叉前缀树中一个节点的子节点数大于或等于所述设定值,则采用HASH存储方式保存该节点及其子节点。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
如果根据所述字符串的拼音在所述多叉前缀树中检索得到的多个检索结果在用户输入的检索信息中存在完全包含关系,则将所述检索结果分等级输出;
如果根据所述字符串的拼音在所述多叉前缀树中检索得到的多个检索结果在用户输入的检索信息中不存在完全包含关系,则将所述多个精确字符串作为相同等级输出。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述确定所述字符的相似发音集合包括:
根据预先建立的相似发音表确定所述字符的相似发音集合。
7.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
在获取所述激活路径上的终止节点保存的关键词信息之前,计算所述激活路径的得分;
滤除所述得分小于或等于设定的分值门限的激活路径。
8.根据权利要求7所述的方法,其特征在于,按以下公式计算所述激活路径的得分:
激活路径的得分=∑激活路径上每个字符的相似度/激活路径上的字符个数。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在所述激活路径到达一个节点后,计算所述节点的可信度;
如果所述可信度小于设定的可信度门限,则将所述节点转为未激活状态。
10.根据权利要求9所述的方法,其特征在于,按以下公式计算所述节点的可信度:
节点的可信度=(激活路径的得分+min(节点最大高度,剩余字数))/(激活路径当前字数+min(节点最大高度,剩余字数));
节点最大高度=max(所有子节点高度)+1。
11.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在将所述关键词信息作为检索结果展现给所述用户之前,计算每个检索结果的匹配得分;
按得分高低对所述检索结果进行排序输出。
12.根据权利要求11所述的方法,其特征在于,按以下公式计算检索结果的匹配得分:
检索结果的匹配得分=(∑检索结果中每个字符的匹配度)*检索结果对应的激活路径的得分。
13.一种字符串检索系统,其特征在于,包括:
接收模块,用于接收用户输入的检索信息,所述检索信息包括字符串;
转换模块,用于将所述字符串逐个字符进行拼音转换,并确定所述字符的相似发音集合;
检索模块,用于依次将所述字符的拼音及其相似发音集合中的相似发音进入多叉前缀树进行检索;在检索到与所述拼音或所述相似发音相匹配的节点时,将所述节点记录为激活状态,并记录激活路径,在下一个字符的拼音及其相似发音进入所述多叉前缀树后,对所有处于激活状态下的节点继续进行检索,直到检索到终止节点;
信息获取模块,用于获取所述激活路径上的终止节点保存的关键词信息;
展现模块,用于将所述关键词信息作为检索结果展现给所述用户。
14.根据权利要求12所述的系统,其特征在于,所述系统还包括:
多叉前缀树构建模块,用于将预先设定的关键词对应的字符串进行拼音转换,得到发音串,并根据所述发音串建立所述多叉前缀树,所述多叉前缀树的终止节点上保存所述发音串对应的关键词信息。
15.根据权利要求13或14所述的系统,其特征在于,
所述展现模块,具体用于在根据所述字符串的拼音在所述多叉前缀树中检索得到的多个检索结果在用户输入的检索信息中存在完全包含关系时,将所述检索结果分等级输出;在根据所述字符串的拼音在所述多叉前缀树中检索得到的多个检索结果在用户输入的检索信息中不存在完全包含关系时,将所述多个精确字符串作为相同等级输出。
16.根据权利要求13或14所述的系统,其特征在于,
所述转换模块根据预先建立的相似发音表确定所述字符的相似发音集合。
17.根据权利要求13或14所述的系统,其特征在于,所述系统还包括:
计算模块,用于在所述信息获取模块获取所述激活路径上的终止节点保存的关键词信息之前,计算所述激活路径的得分;
过滤模块,用于滤除所述得分小于或等于设定的分值门限的激活路径。
18.根据权利要求17所述的系统,其特征在于,所述计算模块按以下公式计算所述激活路径的得分:
激活路径的得分=∑激活路径上每个字符的相似度/激活路径上的字符个数。
19.根据权利要求17所述的系统,其特征在于,
所述计算模块,还用于在所述激活路径到达一个节点后,计算所述节点的可信度;
所述检索模块,还用于在所述可信度小于设定的可信度门限时,将所述节点转为未激活状态。
20.根据权利要求19所述的系统,其特征在于,所述计算模块按以下公式计算所述节点的可信度:
节点的可信度=(激活路径的得分+min(节点最大高度,剩余字数))/(激活路径当前字数+min(节点最大高度,剩余字数));
节点最大高度=max(所有子节点高度)+1。
21.根据权利要求17所述的系统,其特征在于,
所述计算模块,还用于在将所述关键词信息作为检索结果展现给所述用户之前,计算每个检索结果的匹配得分;
所述展现模块,具体用于按得分高低对所述检索结果进行排序输出。
22.根据权利要求21所述的系统,其特征在于,所述计算模块按以下公式计算检索结果的匹配得分:
检索结果的匹配得分=(∑检索结果中每个字符的匹配度)*检索结果对应的激活路径的得分。
CN201310270390.XA 2013-06-28 2013-06-28 字符串检索方法及系统 Active CN103383699B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310270390.XA CN103383699B (zh) 2013-06-28 2013-06-28 字符串检索方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310270390.XA CN103383699B (zh) 2013-06-28 2013-06-28 字符串检索方法及系统

Publications (2)

Publication Number Publication Date
CN103383699A true CN103383699A (zh) 2013-11-06
CN103383699B CN103383699B (zh) 2016-11-09

Family

ID=49491489

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310270390.XA Active CN103383699B (zh) 2013-06-28 2013-06-28 字符串检索方法及系统

Country Status (1)

Country Link
CN (1) CN103383699B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268203A (zh) * 2014-09-23 2015-01-07 深圳市中兴移动通信有限公司 一种移动终端及其有效过滤垃圾信息的方法和装置
CN106503033A (zh) * 2016-09-14 2017-03-15 国网山东省电力公司青岛供电公司 一种配电网工单地址的检索方法和装置
CN107025300A (zh) * 2017-04-24 2017-08-08 杭州迪普科技股份有限公司 一种数据查询的方法及装置
CN108228657A (zh) * 2016-12-22 2018-06-29 沈阳美行科技有限公司 一种关键字检索的实现方法及装置
CN108334491A (zh) * 2017-09-08 2018-07-27 腾讯科技(深圳)有限公司 文本分析方法、装置、计算设备及存储介质
CN108549493A (zh) * 2018-04-04 2018-09-18 科大讯飞股份有限公司 候选词筛选方法及相关设备
CN108630210A (zh) * 2018-04-09 2018-10-09 腾讯科技(深圳)有限公司 语音解码、识别方法、装置、系统和机器设备
CN109308126A (zh) * 2017-07-27 2019-02-05 北京搜狗科技发展有限公司 一种候选词展示方法和装置
CN110597800A (zh) * 2018-05-23 2019-12-20 杭州海康威视数字技术股份有限公司 一种注释信息确定、前缀树构建方法及装置
CN111061829A (zh) * 2019-12-16 2020-04-24 北京软通智慧城市科技有限公司 一种树型检索方法及装置
CN113094470A (zh) * 2021-04-08 2021-07-09 蔡堃 文本搜索方法和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567406A (zh) * 2010-12-22 2012-07-11 北京新媒传信科技有限公司 拼音搜索方法
CN102609545A (zh) * 2012-03-14 2012-07-25 福建榕基软件股份有限公司 树型结构中快速搜索定位树结点的方法
US20120317101A1 (en) * 2006-07-14 2012-12-13 Chacha Search, Inc. Method and system for qualifying keywords in query strings
CN102867512A (zh) * 2011-07-04 2013-01-09 余喆 自然语音识别方法和装置
CN103064928A (zh) * 2012-12-21 2013-04-24 北京二六三企业通信有限公司 基于关键词的垃圾文档过滤方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120317101A1 (en) * 2006-07-14 2012-12-13 Chacha Search, Inc. Method and system for qualifying keywords in query strings
CN102567406A (zh) * 2010-12-22 2012-07-11 北京新媒传信科技有限公司 拼音搜索方法
CN102867512A (zh) * 2011-07-04 2013-01-09 余喆 自然语音识别方法和装置
CN102609545A (zh) * 2012-03-14 2012-07-25 福建榕基软件股份有限公司 树型结构中快速搜索定位树结点的方法
CN103064928A (zh) * 2012-12-21 2013-04-24 北京二六三企业通信有限公司 基于关键词的垃圾文档过滤方法和装置

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104268203A (zh) * 2014-09-23 2015-01-07 深圳市中兴移动通信有限公司 一种移动终端及其有效过滤垃圾信息的方法和装置
CN104268203B (zh) * 2014-09-23 2016-09-14 努比亚技术有限公司 一种移动终端及其有效过滤垃圾信息的方法和装置
CN106503033A (zh) * 2016-09-14 2017-03-15 国网山东省电力公司青岛供电公司 一种配电网工单地址的检索方法和装置
CN106503033B (zh) * 2016-09-14 2021-03-19 国网山东省电力公司青岛供电公司 一种配电网工单地址的检索方法和装置
CN108228657A (zh) * 2016-12-22 2018-06-29 沈阳美行科技有限公司 一种关键字检索的实现方法及装置
CN108228657B (zh) * 2016-12-22 2022-05-27 沈阳美行科技股份有限公司 一种关键字检索的实现方法及装置
CN107025300A (zh) * 2017-04-24 2017-08-08 杭州迪普科技股份有限公司 一种数据查询的方法及装置
CN109308126A (zh) * 2017-07-27 2019-02-05 北京搜狗科技发展有限公司 一种候选词展示方法和装置
CN108334491B (zh) * 2017-09-08 2020-07-31 腾讯科技(深圳)有限公司 文本分析方法、装置、计算设备及存储介质
CN108334491A (zh) * 2017-09-08 2018-07-27 腾讯科技(深圳)有限公司 文本分析方法、装置、计算设备及存储介质
CN108549493A (zh) * 2018-04-04 2018-09-18 科大讯飞股份有限公司 候选词筛选方法及相关设备
CN108549493B (zh) * 2018-04-04 2022-10-04 科大讯飞股份有限公司 候选词筛选方法及相关设备
CN108630210A (zh) * 2018-04-09 2018-10-09 腾讯科技(深圳)有限公司 语音解码、识别方法、装置、系统和机器设备
CN108630210B (zh) * 2018-04-09 2023-06-30 腾讯科技(深圳)有限公司 语音解码、识别方法、装置、系统和机器设备
CN110597800A (zh) * 2018-05-23 2019-12-20 杭州海康威视数字技术股份有限公司 一种注释信息确定、前缀树构建方法及装置
CN111061829A (zh) * 2019-12-16 2020-04-24 北京软通智慧城市科技有限公司 一种树型检索方法及装置
CN113094470A (zh) * 2021-04-08 2021-07-09 蔡堃 文本搜索方法和系统
CN113094470B (zh) * 2021-04-08 2022-05-24 蔡堃 文本搜索方法和系统

Also Published As

Publication number Publication date
CN103383699B (zh) 2016-11-09

Similar Documents

Publication Publication Date Title
CN103383699A (zh) 字符串检索方法及系统
US11322153B2 (en) Conversation interaction method, apparatus and computer readable storage medium
US10216725B2 (en) Integration of domain information into state transitions of a finite state transducer for natural language processing
US11403288B2 (en) Querying a data graph using natural language queries
CN109036391B (zh) 语音识别方法、装置及系统
US8959014B2 (en) Training acoustic models using distributed computing techniques
CN102479191B (zh) 提供多粒度分词结果的方法及其装置
US9431009B2 (en) System and method for tightly coupling automatic speech recognition and search
CN103268313B (zh) 一种自然语言的语义解析方法及装置
US8589163B2 (en) Adapting language models with a bit mask for a subset of related words
CN102866782B (zh) 一种提高整句生成效率的输入法和输入法系统
CN102768681B (zh) 一种用于搜索输入的推荐系统及方法
CN110019647B (zh) 一种关键词搜索方法、装置和搜索引擎
US20150279360A1 (en) Language modeling in speech recognition
CN103971684B (zh) 一种添加标点的方法、系统及其语言模型建立方法、装置
CN106202153A (zh) 一种es搜索引擎的拼写纠错方法及系统
CN111090727B (zh) 语言转换处理方法、装置及方言语音交互系统
CN111739514B (zh) 一种语音识别方法、装置、设备及介质
KR20220054587A (ko) 음성 인식 방법 및 관련 제품
CN111462748B (zh) 语音识别处理方法、装置、电子设备及存储介质
CN109767758B (zh) 车载语音分析方法、系统、存储介质以及设备
Tur et al. Exploiting the semantic web for unsupervised natural language semantic parsing
CN104199825A (zh) 一种信息查询方法和系统
CN104143331A (zh) 一种添加标点的方法和系统
CN102478968B (zh) 中文拼音输入方法和中文拼音输入系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 230088 No. 666 Wangjiang West Road, hi tech Development Zone, Anhui, Hefei

Applicant after: Iflytek Co., Ltd.

Address before: 230088 No. 666 Wangjiang West Road, hi tech Development Zone, Anhui, Hefei

Applicant before: Anhui USTC iFLYTEK Co., Ltd.

COR Change of bibliographic data
C14 Grant of patent or utility model
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Yan Yalu

Inventor after: Zhang Jidong

Inventor after: Jia Quan

Inventor after: Shi Feng

Inventor after: Lu Xueling

Inventor after: Zhang Lei

Inventor after: Nie Xiaolin

Inventor before: Shi Feng

Inventor before: Wu Weihao

Inventor before: Jia Quan

Inventor before: Lu Xueling

Inventor before: Zhang Lei

Inventor before: Nie Xiaolin

CB03 Change of inventor or designer information
TR01 Transfer of patent right

Effective date of registration: 20200305

Address after: 230031 Nine Floors, Building 1, Tianyuan Dike Science Park, 66 Diving East Road, Hefei High-tech Zone, Anhui Province

Patentee after: Anhui namoyun Technology Co., Ltd.

Address before: Wangjiang Road high tech Development Zone Hefei city Anhui province 230088 No. 666

Patentee before: IFLYTEK Co.,Ltd.

TR01 Transfer of patent right
CP03 Change of name, title or address

Address after: 230001 6th and 23rd floors of scientific research building, building 2, zone a, China sound Valley, 3333 Xiyou Road, high tech Zone, Hefei, Anhui Province

Patentee after: Anhui taoyun Technology Co.,Ltd.

Address before: 230031 9th floor, building 1, tianyuandike science and Technology Park, 66 Qianshui East Road, high tech Zone, Hefei City, Anhui Province

Patentee before: ANHUI TAOYUN TECHNOLOGY Co.,Ltd.

CP03 Change of name, title or address