为输入数据搜索匹配候选项的方法以及数据库创建方法与流程

文档序号:11233703阅读:392来源:国知局
为输入数据搜索匹配候选项的方法以及数据库创建方法与流程
本申请涉及计算机
技术领域
,特别涉及一种用于为输入数据搜索匹配候选项的方法和装置,以及一种用于创建数据库的方法及装置。
背景技术
:为用户输入寻找匹配是有普遍适用性的技术问题,在例如输入法领域、搜索引擎领域、人工智能领域、自动翻译领域等都有广泛适用。以输入法为例,拼音输入法是目前主要的一种中文输入方法。因为汉语中存在同音字、多音字现象,所以在使用拼音输入法时可能会出现由于上述问题而导致的输入的汉字错误,例如,将“清华大学”误输入为“青华大学”,将“优惠券(quàn)”误输入为“优惠卷(juàn)”,将“传(zhuàn)记”误输入为“穿(chuān)记”等等。然而,随着用户对速度和准确率的要求越来越高,现有的匹配技术也需要不断的改进。例如,针对用户的中文输入,现有的中文纠错方法不能够有效地处理和纠正因同音字、多音字或错别字等引起的中文输入错误。因此,需要一种能够有效对因拼音相同或相近或类似原因而导致的输入错误进行纠正的技术。技术实现要素:本申请的一个目的在于提供一种用于为输入数据搜索匹配候选项的方法、装置和计算机程序产品,以及一种用于创建数据库的方法、装置和计算机程序产品,以解决现有技术中数据匹配搜索效率较低和占用存储空间过大的问题。在本申请的一个方面,提供了一种用于为输入数据搜索匹配候选项的方法,包括下述步骤:(1)获取输入数据的特征信息;(2)基于所述输入数据的特征信息,生成与所述输入数据对应的特征dfa(确定有限状态自动机);(3)用所述输入数据对应的特征dfa去搜索包括多个目标状态的预设数据库dfa,以确定与所述输入数据对应的特征dfa相匹配的目标状态,其中,所述预设数据库dfa中的每个目标状态对应于基于一个目标数据的特征信息生成的特征dfa的终止状态;以及(4)输出与搜索得到的匹配的目标状态相关联的目标数据,作为与所述输入数据对应的匹配候选项。在本申请的另一方面,还提供了一种用于创建数据库dfa的方法,所述数据库dfa包括多个目标状态,用于与外部dfa的终止状态进行搜索匹配,所述方法包括:(a)获取目标数据;(b)获取所述目标数据的特征信息;(c)基于所述目标数据的特征信息,生成与所述目标数据对应的特征dfa;(d)将所生成的目标数据对应的特征dfa的终止状态与所述目标数据关联起来;以及(e)将相互关联的目标数据及其对应的特征dfa添加到所述数据库dfa中,其中,所述目标数据对应的特征dfa的终止状态被作为所述数据库dfa中的一个目标状态。在本申请的另一些方面,还提供了一种用于为输入数据搜索匹配候选项的装置和计算机程序产品,以及一种用于创建数据库dfa的装置和计算机程序产品。对于本申请的方法和装置,通过将待搜索的输入数据转换为dfa的形式,输入数据特征信息的各种变化可以被dfa有效涵盖,从而使得搜索过程简化且更有效。此外,所创建的数据库dfa对系统存储空间和处理资源的占用少,这使得搜索匹配的处理速度和效率大大提高。本申请的用于为输入数据搜索匹配候选项的方法和基于本申请的方法创建的数据库dfa可用于多种不同的应用领域,例如,输入数据的纠错应用、中文字符的输入法应用、语音翻译应用、语音识别应用、人工智能中的决策树算法优化,等等。本发明提出了如何利用dfa来解决匹配用户输入的问题。通过预先创建数据库dfa,然后进行dfa求交运算,来大大提高搜索匹配的速度、效率和准确率。以上为本发明的概述,必然有简化、概括和省略细节的情况,因此本领域的技术人员应该认识到,该部分仅是例示说明性的,而不旨在以任何方式限定本发明范围。本概述部分既非旨在确定所要求保护主题的关键特征或必要特征,也非旨在用作为确定所要求保护主题的范围的辅助手段。附图说明通过下面说明书和所附的权利要求书并与附图结合,将会更加充分地清楚理解本
发明内容的上述和其他特征。可以理解,这些附图仅描绘了本
发明内容的若干实施方式,因此不应认为是对本
发明内容范围的限定。通过采用附图,本
发明内容将会得到更加明确和详细地说明。图1示出了根据本申请一个实施例的用于为输入数据搜索匹配候选项的方法100;图2a和图2b示出了一个输入数据被转换为对应的特征dfa的例子;图2c示出了图2a的输入数据被转换为另一特征dfa的例子;图3示出了根据本申请一个实施例的用于创建数据库dfa的方法300;图4a和图4b示出了一个目标数据被转换为对应的特征dfa的例子;图5示出了以拓扑逆序方式将“券惠优哺呷哺呷”添加到示例性中间数据库dfa中的例子;图6示出了根据本申请一个实施例的计算机系统600;图7示出了根据本申请一个实施例的用于创建数据库dfa的装置700。具体实施方式在下面的详细描述中,参考了构成其一部分的附图。在附图中,类似的符号通常表示类似的组成部分,除非上下文另有说明。详细描述、附图和权利要求书中描述的例示说明性实施方式并非旨在限定。在不偏离本申请的主题的精神或范围的情况下,可以采用其他实施方式,并且可以做出其他变化。可以理解,可以对本文中一般性描述的、在附图中图解说明的本申请内容的各个方面进行多种不同构成的配置、替换、组合,设计,而所有这些都在明确设想之中,并构成本申请内容的一部分。汉字输入中存在很多因多音字或形近字导致的输入错误,因而汉字的输入纠错可以利用输入汉字的拼音来实现。例如,用户输入一词条为“柙脯柙脯优惠卷”,其对应的拼音如下表1所示,其中包含了多音字“柙”和“脯”以及错别字“卷”。柙脯柙脯优惠卷jiafujiafuyouhuigunxiapuxiapujuanjunquan表1可以理解,用户实际希望输入的正确词条应为“呷哺呷哺优惠券”。该词条对应的拼音如下表2所示,其中包含了多音字“呷”、“哺”和“券”。呷哺呷哺优惠券jiafujiafuyouhuiquanxiabuxiabuxuangaga表2由于这两个词条的拼音至少都包括拼音序列(jia)(fu)(jia)(fu)(you)(hui)(quan)或(xia)(fu)(xia)(fu)(you)(hui)(quan)。因此,基于这两个共享的拼音序列,“呷哺呷哺优惠券”和“柙脯柙脯优惠卷”可以相互关联起来,进一步地,可以利用“呷哺呷哺优惠券”来代替用户输入的错误词条“柙脯柙脯优惠卷”以实现输入纠错。简言之,上述的中文纠错方法需要将用户输入的中文词条还原为拼音,然后用一个拼音相同的已知正确词语代替错误的中文词条。然而,当被纠错的词条中包括较多的多音字或错别字时,为了准确纠错,需要将这些多音字或错别字还原为对应的多个拼音,这会导致所还原的拼音组合急剧增长。正如表1所示,“呷哺呷哺优惠券”对应的拼音组合有72种,而“柙脯柙脯优惠卷”对应的拼音组合有64种;如果再考虑到仅利用拼音中的声母或韵母来标记中文字符的情况,上述的拼音组合可能会继续成倍的增加。这种拼音组合的“数量爆炸”有可能会导致无法高效地进行输入纠错。尤其是考虑到服务器需要处理海量的用户输入时,数量爆炸的问题会导致服务器难以提供满意的匹配结果,也导致部署服务器的成本过于高昂。另一方面,发明人发现,由于正则表达式可以用运算符来描述字符或字符串集合之间的逻辑关系,并且中文词条是以确定顺序(线性的)排列的中文字符的组合,因此如果用正则表达式描述中文词条对应的拼音组合或其他英文字符组合,则这些组合的描述可以被极大地简化。举例说明,基于表1,可以得到用户输入的错误中文词条“柙脯柙脯优惠卷”对应的正则表达式(1)(xia|jia)(fu|pu)(xia|jia)(fu|pu)(you)(hui)(gun|juan|jun|quan)(1)而基于表2,可以得到正确的中文词条“呷哺呷哺优惠券”对应的正则表达式(2)(ga|xia|jia)(bu|pu)(ga|xia|jia)(bu|pu)(you)(hui)(quan|xuan)(2)这两个正则表达式所定义的字符串集合存在交集(也即相互匹配),则说明可以用“呷哺呷哺优惠券”来纠错“柙脯柙脯优惠卷”。可以理解,在一些情况下,“柙脯柙脯优惠卷”可能存在多个匹配的中文词条。可选地,在获得匹配结果后,如果需要纠错,可以将所有匹配的中文词条都作为“柙脯柙脯优惠卷”的纠错候选结果提供给用户。用户可以再从中选择希望的纠错结果。通常来说,正则表达式是由字符串构成的一个表达式,用来描述符合特定规则的字符串的集合。正则表达式包括常量和运算符,其中,常量表示字符串集合,运算符表示作用于字符串集合之上的运算。为了能够被计算机读取并处理,词条的正则表达式可以被转换为等价的确定有限状态自动机(deterministicfiniteautomaton,简称dfa),并且利用dfa来实现数据处理过程。基于上述发明构思,本申请额外地提供了一种用于创建数据库dfa的方法,以及利用所创建的数据库dfa来为一输入数据搜索匹配候选项的方法。利用上述方法,可以高效、快速地对输入的中文字符进行纠错,并且这种方法对系统的处理资源占用少。在实际应用中,本申请还可以用于多种其他的应用领域,例如,中文字符的输入法应用、语音翻译应用、语音识别应用、人工智能中的决策树算法优化,等等。在下文中,以对输入中文字符进行拼音纠错为例对本申请的方法和装置进行说明,但是可以理解,这种说明和描述仅仅是示例性而非限制性的。可以理解,在一些实施例中,数据库dfa可以被集成在用户使用的个人终端上,例如手机、平板电脑、个人计算机或其他智能电子设备;相应地,可以由个人终端来执行为输入数据搜索匹配候选项的方法。在另一些实施例中,数据库dfa可以被设置在服务器等远程处理设备上,而输入数据可以是用户使用个人终端发送到该远程处理设备的数据;相应地,可以由该远程处理设备来执行为输入数据搜索匹配候选项的方法。图1示出了根据本申请一个实施例的用于为输入数据搜索匹配候选项的方法100。在图1所示的实施例中,该方法100被用于进行中文字符的拼音纠错,也即输入数据为中文字符串,例如搜索关键词等。可以理解,在一些其他的应用场合中,输入数据也可以为拼音字符串(例如汉语拼音)、外文字符串(例如英语单词)、语音输入,或者其他由顺序排列的多个数据项构成的序列。如图1所示,在步骤s102,获取输入数据的特征信息。具体地,输入数据是中文字符串,其可以是用户在使用搜索应用时输入的搜索关键词。例如,该搜索关键词可以是主要由多个汉字构成的中文字符串,或者还可以包括其他类型的字符,例如数字、拼音或外语单词。可选地,在步骤s102中,可以仅处理搜索关键词中包括的中文字符,或者一并处理搜索关键词中包括的中文字符以及数字字符、拼音字符和/或外语字符。例如,搜索关键词可以为“柙脯柙脯youhuiquan”,其中包含中文字符串“柙脯柙脯”和拼音字符串“youhuiquan”。在一些例子中,在搜索匹配候选项时,可以仅处理搜索关键词中包括的中文字符串“柙脯柙脯”,而不处理拼音字符串“youhuiquan”。而在另一些例子中,在搜索匹配候选项时,可以同时处理搜索关键词中包括的汉字词条“柙脯柙脯”以及拼音字符“youhuiquan”。优选地,可以将汉字词条“柙脯柙脯”以及拼音字符“youhuiquan”共有的特征信息提取出来,以进行后续匹配处理。例如,可以将汉字词条“柙脯柙脯”对应的拼音提取出来。可选地,在一些实施例中,输入数据的特征信息可以是中文字符串中的中文字符或相邻多个中文字符对应的汉语拼音、特征字形或外语单词。其中,中文字符串中包括的每个中文可以对应于一个或多个拼音,或者相邻的两个或更多个中文字符可以对应于一个或多个外语单词。需要说明的是,中文字符或字符串的特征信息可以是符合常用字典定义或语法标准的,但也可以是对应于常见错误或明显错误的而预先定义。例如,对于中文词条“柙脯柙脯优惠卷”,其中每个汉字的拼音参见表1,这些拼音都是在多音字字典中定义的。此外,对于相邻的汉字“优惠卷”,其还可以对应于英语单词“coupon”,虽然汉英词典中通常包括的词条是“优惠券-coupon”,但是“优惠卷”显然是“优惠券”的错误输入,因此出于纠错的目的,可以将“优惠卷”与英语单词“coupon”关联起来。需要说明的是,在此所述的拼音包括汉字的全拼,也可以仅包括汉字全拼中的声母。例如,根据表1,对于汉字“柙”的全拼为“xia”和“jia”,则其对应的拼音可以为“xia”和“jia”或“x”和“j”。此外,拼音还可以包括汉字易读错的拼音,例如,对于汉字“女”的全拼为“nv”,其容易被错读成“lv”,因此,其对应的拼音可以包括“nv”和“lv”。在另一些例子中,输入数据的特征信息也可以是搜索关键词中各个汉字字符的特征字形。例如,对于中文词条“柙脯柙脯”中的“柙”,其特征字形可以为“甲”,而“脯”的特征字形可以为“甫”。在一些实施例中,可以通过预设的特征信息数据库来确定输入数据的特征信息。具体地,特征信息数据库可以是一汉语字典、易错字字典、汉语-外语字典或其他类似的数据库。特征信息数据库可以预先创建。根据具体应用的不同,特征信息数据库中包括的特征信息的量可以增多或减少。例如,对于拼音纠错而言,为了避免遗漏,可以将每个汉字的所有可能拼音全部都包括在特征信息数据库中。具体地,特征信息数据库存储有多个数据项,并且特征信息数据库相互关联地存储数据项及与其对应的特征信息,其中数据项的数据类型与输入数据的数据类型相同。例如,汉语字典中包括汉字以及每个汉字可能采用的拼音;易错字字典包括汉字以及与每个汉字同音、近音或字形相似的汉字;汉语-外语字典包括汉语词条以及对应的外语单词,例如英语单词。对于输入数据中包括的每个数据项或多个相邻的数据项,可以搜索特征信息数据库以确定与其匹配的特征信息。接着,在步骤s104中,基于输入数据的特征信息,生成与输入数据对应的特征确定有限状态自动机(dfa)。图2a和图2b示出了一个输入数据被转换为对应的特征dfa的例子。如图2a所示,输入数据“柙脯柙脯优惠卷”是一个汉字字符串,其包括顺序排列的“柙”、“脯”、“柙”、“脯”、“优”、“惠”和“卷”。相应地,当采用dfa形式时,该输入数据可以表示为具有八个状态的线性dfa,其中每个汉字字符是使得该线性dfa发生状态转移的状态转移字符或符号。结合表1所示的“柙脯柙脯优惠卷”的拼音,“柙脯柙脯优惠卷”可以被转换为对应的特征dfa,图2b是特征dfa对应的nfa(非确定有限状态自动机),其可用正则表达式(1)表示。该nfa具有等价的dfa,并且一个dfa和一个正则表达式存在一一对应关系。在实际应用中,可以基于输入数据中的数据项或多个相邻数据项的特征信息,分别地创建对应的子特征dfa。例如,由于汉语拼音通常包括一串拼音字符,因此,每个拼音实质上对应于一个子dfa。例如,对于汉字“柙”,可以用其拼音“jia”和“xia”创建对应的子特征dfa,该子特征dfa可以由正则表达式(xia|jia)表示。接着,可以将所创建的全部子特征dfa连接起来,例如用ε转移将这些子特征dfa连接起来,形成与输入数据对应的dag(有向无环图)形状的非确定有限状态自动机(nfa),所得到的nfa即为输入数据对应的特征nfa。之后,可以将该特征nfa转化为特征dfa。将nfa转换为dfa可以采用现有方法,例如幂集构造法,在此不再赘述。图2c示出了图2a的输入数据被转换为另一特征dfa的例子。如图2c所示,不同于图2b所示的dfa,图2c所示的特征nfa中还包括了词条“优惠卷”对应的英语单词“coupon”,其与“优惠卷”的汉语拼音正则表达式(you)(hui)(gun|juan|jun|quan)并列。相应地,图2c所示的特征nfa可由正则表达式(3)表示。(xia|jia)(fu|pu)(xia|jia)(fu|pu)(((you)(hui)(gun|juan|jun|quan))|(coupon))(3)可以理解,每个特征dfa都是包括多个状态的自动机,其能够基于状态转移字符实现这些状态之间的状态转移。每个特征dfa都包括终止状态(也称作接受状态)。该终止状态对应于接受给定字符串的状态,例如图2b所示的特征nfa的终止状态可以是接受了字符串(jia)(fu)(jia)(fu)(you)(hui)(quan)或(xia)(fu)(xia)(fu)(you)(hui)(quan)后的状态。在得到输入数据对应的特征dfa之后,在步骤s106中,用输入数据对应的特征dfa去搜索包括多个目标状态的预设数据库dfa,以确定与输入数据对应的特征dfa相匹配的目标状态。其中,预设数据库dfa中的每个目标状态是基于一个目标数据的特征信息生成的特征dfa的终止状态。所确定的匹配的目标状态应与输入数据对应的特征dfa的终止状态相匹配。具体地,预设数据库dfa中存储有多个目标数据,并且每个目标数据关联于一个对应的特征dfa。在一些实施例中,目标数据可以与输入数据具有相同的数据类型,例如在中文字符的纠错应用中,目标数据通常也是中文字符串,其与输入数据(中文字符串)的数据类型相同。举例来说,输入数据可以是“柙脯柙脯优惠卷”,而目标数据可以是“呷哺呷哺优惠券”或其他具有类似拼音的中文词条。可以理解,取决于具体应用场合的不同,目标数据可以与输入数据具有不同的数据类型。例如,对于拼音输入法应用,输入数据可以是拼音字符串(可以包括或不包括将相邻拼音分隔开的分隔符),其特征信息则是拼音字符串对应的拼音特征(该拼音字符串被根据汉语拼音语法分隔开来)。举例来说,输入数据可以是“xiabuxiabuyouhuiquan”,而目标数据可以是“呷哺呷哺优惠券”,可以理解,预设数据库dfa中的目标数据也可以用目标数据的标识来代替,例如唯一地标识目标数据的标识码或标识符等。通过该标识码或标识符,可以唯一地确定目标数据(例如通过一由标识码或标识符索引的目标数据数据库)。可以看出,目标数据通常是预先确定的正确数据。正如前述,每个目标数据均具有与其对应的特征dfa。该特征dfa是基于目标数据的特征信息生成的。在一些实施例中,与目标数据相关联的特征dfa的生成方式可以相同于或相似于与输入数据对应的特征dfa的生成方式。例如,目标数据可以是中文字符串“呷哺呷哺优惠券”,其对应的特征dfa可以由正则表达式(2)表示。关于目标数据对应的特征dfa的创建和生成可以参考输入数据对应的特征dfa的生成方式,在此不再赘述。目标数据对应的特征dfa也具有终止状态,也即预设数据库dfa中的目标状态。在一些实施例中,在预设数据库dfa中,目标数据和与其对应的特征dfa可以通过分隔符来连接,从而使得目标数据对应的特征dfa的终止状态与目标数据相互关联。可以理解,目标数据(例如中文字符串)也可以被看作为一个线性dfa,其可以以dfa形式存储在数据库dfa中。该线性dfa包括多个状态,每两个状态之间的状态转移取决于目标数据中的各个数据项。分隔符可以使得目标数据对应的特征dfa的终止状态与dfa形式的目标数据的状态相关联,例如与其起始状态相关联。这样,当一个匹配的字符串输入使得目标数据对应的特征dfa转移到其终止状态后,通过识别该分隔符并进一步地进行后续状态转移,即可得到相应的目标数据。例如,由分隔符连接的中文字符串“呷哺呷哺优惠券”以及其所对应的dfa(正则表示式(2)表示)可以由正则表达式(4)表示:(ga|xia|jia)(bu|pu)(ga|xia|jia)(bu|pu)(you)(hui)(quan|xuan)\t呷哺呷哺优惠券(4)其中,分隔符连接“\t”连接了特征dfa与目标数据。在实际应用中,分隔符可以是任何不属于目标数据和特征信息的标记符号,例如,分隔符还可以采用其他标记符号(例如“\n”,“#”,“$”等)。当与特征dfa连接在一起时,目标数据的字符串相当于一个线性dfa。优选地,特征dfa的终止状态被设置在dfa形式的目标数据之前,正如正则表达式(4)所示。实质上来说,通过分隔符连接的特征dfa与目标数据仍然是一个dfa。可以看出,当输入数据对应的特征dfa中存在一条与一个dfa条目相同的路径时,例如正则表达式4表示的dfa与输入数据“柙脯柙脯优惠卷”对应的特征dfa均包含拼音序列(jia)(fu)(jia)(fu)(you)(hui)(quan)或(xia)(fu)(xia)(fu)(you)(hui)(quan),则可以认为目标状态同输入数据对应的特征dfa的终止状态相匹配。在这种情况下,目标数据“呷哺呷哺优惠券”即可作为与输入数据“柙脯柙脯优惠卷”匹配的一个匹配候选项。在一些实施例中,步骤s106的匹配操作可以通过将输入数据对应的特征dfa与预设数据库dfa进行求交运算进行。可以基于求交运算的结果,确定一个或多个匹配候选项。特征dfa与预设数据库dfa的求交,其实质上是将两个dfa的状态转移集合按照对应的状态转移字符进行求交,从而确定相匹配的状态。具体地,求交操作可以以下述方式进行。首先,可以将特征dfa的初始状态(s0)与预设数据库dfa的初始状态(d0)(整个数据库dfa可以看作为一个大的dfa,其仅具有一个初始状态)配对。之后,将特征dfa初始状态(s0)的至少一个状态转移字符与数据库dfa初始状态(d0)的所有状态转移字符进行比较,如果状态s0的至少一个状态转移字符中存在与状态d0的状态转移字符相同的状态转移字符,则将状态s0对于该相同的状态转移字符的下一个状态(s1)与状态d0对于该相同状态转移字符的下一个状态(d1)配对,则采用相同的方法,继续比较特征dfa的状态s1的状态转移字符和数据库dfa的状态d1的状态转移字符,以得到特征dfa的状态(s2)和数据库dfa的状态(d2)的新的配对。经多次比较后,直至得到特征dfa的终止状态(st)为止,此时,数据库dfa的状态(dt)与特征dfa的终止状态st相配对,可选地,将数据库dfa的状态(dt)对于状态转移字符为分隔符时的下一状态确定为与特征dfa匹配的目标状态。之后,在步骤s108中,输出与搜索得到的匹配的目标状态相关联的目标数据,作为与输入数据对应的匹配候选项。例如,可以将字符串“呷哺呷哺优惠券”输出,作为字符串“柙脯柙脯优惠卷”的匹配候选项。可以理解,在实际应用中,当检索到一个输入数据存在多个匹配的目标状态时,可以将这些目标状态关联的目标数据全部输出。用户可以根据自己的需求从这些目标数据中选择需要的数据。可选地,在一些实施例中,在步骤s108之后,还可以包括步骤s110,接收用户的选择输入,以及步骤s112,基于用户的选择输入,从多个匹配候选项中选择一个匹配项。上述步骤执行后,用户提供的输入数据即可被转换为匹配的目标数据。这种搜索匹配过程较为简化且更有效。此外,所创建的数据库dfa对系统存储空间和处理资源的占用少,这使得搜索匹配的处理速度和效率大大提高。图3示出了根据本申请一个实施例的用于创建数据库dfa的方法300。通过方法300所创建的数据库dfa可以用于输入数据的匹配搜索,正如图1所示的方法中的步骤s106所述。其中,数据库dfa中包括多个目标状态,每个目标状态用于与外部dfa进行搜索匹配,并且每个目标状态实质上都是一个目标数据对应的特征dfa的终止状态。可以理解,该数据库dfa中每个目标状态的添加方式通常是相同或相似的。因此,在下面的描述中,仅以创建和添加一个目标状态为例进行说明,但是本领域技术人员可以理解,多个目标状态的添加可以通过重复地执行下述方法中的全部或部分步骤来实现。如图3所示,首先,在步骤s302中,获取目标数据。具体地,根据数据库dfa具体应用场合的不同,目标数据的类型也不同。在一些实施例中,数据库dfa被用于中文字符串的纠错,则目标数据可以是关键词(汉语词条)。在另一些实施例中,数据库dfa被用于拼音输入法应用,则目标数据也可以是汉语词条。在又一些实施例中,数据库dfa被用于语音识别,则目标数据可以是文字词条,例如汉语或英语词条。接着,在步骤s304中,获取目标数据的特征信息。为了创建目标状态,还需要获取目标数据的特征信息。目标数据的特征信息通常取决于数据库dfa的应用场合,以及目标数据的数据类型。在一些实施例中,数据库dfa被用于输入数据的纠错应用,目标数据包括中文字符串,则特征信息包括中文字符串中的中文字符或相邻多个中文字符对应的汉语拼音、外语单词或特征字形。在另一些实施例中,数据库dfa被用于输入法应用,目标数据包括中文字符,则目标数据的特征信息包括中文字符对应的拼音特征,例如汉语拼音。在又一些实施例中,数据库dfa被用于语言翻译应用,目标数据包括中文词条,则目标数据的特征信息包括中文词条对应的外文单词特征。在一些实施例中,数据库dfa被用于语音识别应用,目标数据包括文字字符,则目标数据的特征信息包括文字字符对应的发音特征,例如汉语拼音或外语音标。此外,正如结合图1所示的实施例所说明,可以通过预设的特征信息数据库来确定输入数据的特征信息。类似地,目标数据中各个目标数据项对应的特征信息也可由预设的特征信息数据库来确定,其中该特征信息数据库可以是一汉语字典、易错字字典、汉语-外语字典或其他类似的数据库。在此不再赘述。之后,在步骤s306中,基于目标数据的特征信息,生成与目标数据对应的特征dfa。图4a和图4b示出了一个目标数据被转换为对应的特征dfa的例子。如图4a所示,目标数据“呷哺呷哺优惠券”是一个汉字字符串,其包括顺序排列的“呷”、“哺”、“呷”、“哺”、“优”、“惠”和“券”。相应地,当采用dfa形式时,该目标数据可以表示为具有八个状态的线性dfa,并且这八个状态是按照目标数据中的各个目标数据项的排列顺序进行状态转移的,其中每个汉字字符是使得该线性dfa发生状态转移的状态转移字符或符号。结合表2所示的“呷哺呷哺优惠券”的拼音,图4a所示的“呷哺呷哺优惠券”dfa可以被转换为图4b所示的特征nfa,该特征nfa可以由正则表达式(2)表示。进一步地,可以将特征nfa转换为对应的特征dfa。其中,该特征dfa具有一个终止状态(也称作接受状态)接着,在步骤s308中,将所生成的目标数据对应的特征dfa的终止状态与目标数据关联起来。具体地,目标数据和与其对应的特征dfa可以通过分隔符来连接,从而使得目标数据对应的特征dfa的终止状态与dfa形式的目标数据的状态相互关联。这样,当一个匹配的字符串输入使得目标数据对应的特征dfa转移到其终止状态后,通过识别该分隔符并进一步地进行后续状态转移,即可确定相应的目标数据。例如,由分隔符连接的中文字符串“呷哺呷哺优惠券”以及其所对应的dfa(正则表示式(2)表示)可以由正则表达式(4)表示。当与特征dfa连接在一起时,目标数据的字符串相当于一个线性dfa。优选地,特征dfa的终止状态被设置在dfa形式的目标数据之前,正如正则表达式(4)所示。实质上来说,通过分隔符连接的特征dfa与目标数据仍然是一个dfa。之后,在步骤s310中,将相互关联的目标数据及其对应的特征dfa添加到数据库dfa中,其中,目标数据对应的特征dfa的终止状态被作为数据库dfa中的一个目标状态。例如,可以通过将所得到的dfa与数据库dfa中已有的dfa的集合求并的方式,来将该dfa添加到数据库dfa中。在一些实施例中,可以通过增量方式将相互关联的目标数据及其对应的特征dfa添加到数据库dfa中。然而,将正则表达式(4)表示的dfa直接添加到数据库dfa中可能会使得生成数据库dfa的过程中消耗过多的内存,为了解决这个问题,在步骤s310中可以使用下述步骤来创建数据库dfa:首先,对步骤s308得到的关联的目标数据及其特征dfa进行翻转。例如,翻转后,正则表达式(4)对应的dfa可以示例性地由下述正则表达式(5)表示。券惠优哺呷哺呷\t(naux|nauq)(iuh)(uoy)(uf|up)(aij|aix)(uf|up)(aij|aix)(5)需要说明的是,由于汉字包括两个字节,翻转汉字实际上需要把将每个汉字包括的所有字节都反过来,但是按字节反过来之后就是乱码了,上面的例子中以汉字为单位翻转只是为了便于理解。其中,正则表达式(5)中,分隔符“\t”之前的正则表达式“券惠优哺呷哺呷”称为为前缀,分隔符之后的正则表达式“(naux|nauq)(iuh)(uoy)(uf|up)(aij|aix)(uf|up)(aij|aix)”称为后缀。之后,先在中间数据库dfa中加入前缀“券惠优哺呷哺呷”(这个过程中可能创建也可能不创建新的状态),然后在该前缀的目标状态上创建一个新的“\t”的状态转移。这个状态转移的目标状态是正则表达式(5)中的后缀对应的dfa(\t之后的部分)的根状态,最后按拓扑逆序依次将正则表达式(5)对应的dfa合并到中间数据库dfa中,合并过程中会消除等价状态。其中,中间数据库dfa是创建数据库dfa过程中的一个临时性数据库,而拓扑逆序是拓扑排序的逆序。当以拓扑逆序方式添加状态时,正则表达式(5)对应的dfa中的各个状态被逆序地排序,以得到拓扑逆序排列状态序列。之后,依次以拓扑逆序排列状态序列中的每个状态在数据库dfa中进行搜索,以确定数据库dfa中是否存在该状态的等价状态:如果不存在等价状态,则将该状态添加到数据库dfa中;如果存在等价状态,则不添加该状态到数据库dfa中,但将该状态之后的状态关联到已有的等价状态之后。这使得很多dfa可以共用前缀,并且使得很多等价状态被合并,因此采用拓扑逆序方式生成的数据库dfa可以是最小化的。最小化的数据库dfa可以大大减小对存储空间的占用。图5示出了以拓扑逆序方式将“券惠优哺呷哺呷”添加到中间数据库dfa中的例子。如图5所示,假设原有的中间数据库dfa中存在“券惠优王大和永”dfa(翻转后的“永和大王优惠券”),但是不存在例如“券惠优哺呷”或类似的dfa。在添加“券惠优哺呷哺呷”的过程中,先添加前缀“券惠优哺呷哺呷”,其中“券惠优”在中间数据库dfa中已存在,不需要创建新状态,而需要为“哺呷哺呷”创建新状态(b4,b5,b6,b7),再将状态b7用分隔符\t链接到状态b8(也即b7通过\t状态转移到b8)。由于分隔符\t之后紧接着特征dfa,因而状态b8实质上是特征dfa的初始状态(即根状态)。经过整个特征dfa的状态转移字符后(图上省略了很多拼音dfa的中间状态),状态b8转移到状态b9,其是特征dfa的终止状态。接下来,可以从状态b9开始,用拓扑逆序依次消除1到b9中的所有与现有中间数据库dfa等价的状态。等价状态的消除可以使得中间数据库dfa最小化。在将翻转后的所有dfa均添加到中间数据库dfa后,继续对得到的中间数据库dfa再进行一次翻转操作(整体地翻转操作),从而得到数据库dfa。该翻转操作使得每个目标数据对应的特征dfa的终止状态位于目标数据之前,正如正则表达式(4)所示。经过上述步骤后,即可得到所需的数据库dfa。可以看出,由于很多dfa共用了前缀,并且消除了很多等价状态,这使得数据库dfa最小化。最小化的数据库dfa大大减小了内存用量。在进行搜索匹配时,该数据库dfa中每个关联的目标数据及其特征dfa都是从特征dfa的状态开始进行搜索的。这样,当该数据库dfa被用于与输入数据进行搜索匹配时,输入数据对应的特征dfa可以与目标数据对应的特征dfa进行匹配,以确定与输入特征dfa的终止状态匹配的目标状态。当确定匹配的目标状态后,该目标状态所关联的目标数据即可被输出,作为匹配候选项提供给用户。图6示出了根据本申请一个实施例的计算机系统600的框图。该计算机系统600包括了用于为输入数据搜索匹配候选项的装置620。如图6所示,计算机系统600包括用户终端610和用于为输入数据搜索匹配候选项的装置620,其可以通过网络(例如有线网络或无线网络)相互连接以交互数据。其中,装置620可以被设置在服务器端,作为网络服务器向用户端的用户终端610提供数据处理服务。用户终端610可以是任何类型的具有数据输入/输出和/或数据处理功能的设备,例如,移动终端、pc、路由器、无线通信设备或者另一台服务器等等。装置620通过输入/输出端口622连接到网络,进而与用户终端610进行数据交互,例如获取用户终端610提供的输入数据,并且向用户终端610提供目标数据。具体地,装置620包括:特征信息获取装置624,用于获取输入数据的特征信息;特征dfa生成装置626,用于基于所述输入数据的特征信息,生成与所述输入数据对应的特征dfa;搜索装置628,用于用所述输入数据对应的特征dfa去搜索包括多个目标状态的预设数据库dfa640,以确定与所述输入数据对应的特征dfa相匹配的目标状态,其中,所述预设数据库dfa中的每个目标状态是基于一个目标数据的特征信息生成的特征dfa的终止状态;以及目标数据输出装置630,用于输出与搜索得到的匹配的目标状态相关联的目标数据,作为与所述输入数据对应的匹配候选项。在图6所示的实施例中,数据库dfa640可以被设置在装置620的外部。但是在一些实施例中,数据库dfa640也可以被与装置620集成在一起。例如,数据库dfa640、装置620以及输入/输出端口622都可以被集成在服务器中。可以理解,服务器可以是任何类型的服务器或者实现服务器功能的计算机设备。除了图6所示的装置620、数据库dfa640,服务器还可以包括其他模块,例如数据存储装置,用于为服务器保存所需要的数据以及处理后得到的数据。数据存储装置可以是任何类型的数据存储设备,例如,硬盘存储器、磁带存储器、ram/rom、flash存储器等等。在一个实施例中,数据存储装置保存服务器对数据进行处理后得到中间结果或者最终结果。此外需要说明的是,在一些实施例中,本申请所示的用于为输入数据搜索匹配候选项的装置也可以被集成在用户终端,例如个人计算机或移动终端上。相应地,数据库dfa可以被集成在用户终端上,或者被设置在服务器端。具体结构框图在本说明书中不再赘述,本领域技术人员应该可以清楚地了解对应的实现方式。图7示出了一种用于创建数据库dfa的装置700,所述数据库dfa包括多个目标状态,用于与外部dfa进行搜索匹配。如图7所示,该装置700包括:目标数据获取装置702,用于提供目标数据;特征信息获取装置704,用于获取所述目标数据的特征信息;特征dfa生成装置706,用于基于所述目标数据的特征信息,生成与所述目标数据对应的特征dfa;特征dfa及目标数据关联装置708,用于将所生成的目标数据对应的特征dfa的终止状态与所述目标数据关联起来;以及特征dfa及目标数据添加装置710,用于将相互关联的目标数据及其对应的特征dfa添加到所述数据库dfa中,其中,所述目标数据对应的特征dfa的终止状态被作为所述数据库dfa中的一个目标状态。关于图6和图7所示的本申请的装置实施例,其运行可以参考图1和图3所示的方法实施例,在此不再赘述。需要说明的是,图6和图7所示的结构方框图仅仅为了示例的目的而示出的,并非是对本发明的限制。在一些情况下,可以根据需要添加或者减少其中的一些模块。在一些实施例中,本申请还提供了一些计算机程序产品,其包括非暂态计算机可读存储介质。该非暂态计算机可读存储介质包括计算机可执行的代码,用于执行图1或图3所示的方法实施例中的步骤。在一些实施例中,计算机程序产品可以被存储在图6或图7所示的系统或装置中。本发明的实施例可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、cd或dvd-rom的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。应当注意,尽管在上文详细描述中提及了若干装置或子装置,但是这种划分并非强制性的。实际上,根据本发明的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。那些本
技术领域
的一般技术人员可以通过研究说明书、公开的内容及附图和所附的权利要求书,理解和实施对披露的实施方式的其他改变。在权利要求中,措词“包括”不排除其他的元素和步骤,并且措辞“一”、“一个”不排除复数。在发明的实际应用中,一个零件可能执行权利要求中所引用的多个技术特征的功能。权利要求中的任何附图标记不应理解为对范围的限制。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1