具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
正如前述,现有的同义词替换方式,通常仅采用词粒度的扩展方式,但对于短语则不能有效进行同义词的扩展。此外,采用现有的方式所扩展出的同义词较多时,需要分别针对扩展出的同义词进行组合,但显然,组合的结果将随着的扩展出的同义词的数量而倍增,从而导致对搜索语句组合的耗时较长。
故在本申请实施例中,提供一种文本处理方法,以实现对短语的同义扩展并减少扩展出的同义文本的数量。
具体而言,该方法采用如图1a所示的架构,在图1a中可见,服务器向用户提供搜索业务。
其中,所述的服务器可以是业务提供方(如:网站、电信运营商、银行、数据中心等)后台的服务器。该服务器中运行有相应的搜索引擎,用于为用户提供信息搜索业务。用户可以通过客户端(如:应用客户端、浏览器等)进行信息的搜索。当然,如图1a所示的架构仅是为了便于理解本申请实施例中的方法所示出的简单架构,在实际应用中,服务器还可能是集群式的,且面向大量用户提供信息的搜索业务。这里并不应构成对本申请的限定。
需要说明的是,本申请实施例中的文本处理方法,主要适用于中文搜索的场景下。当然,也可以用于英文(或其他文种)的搜索场景,还可用于包含数字、符号等字符的搜索场景。此外,为便于描述,在本申请实施例中,将用户进行搜索时所输入的搜索词、搜索短语和/或其组合,称之为“搜索文本”,这里并不应构成对本申请的限定。
基于如图1a所示的架构,本申请实施例提供一种文本处理过程,如图1b所示,该过程具体包括以下步骤:
S101:对用户输入的搜索文本进行分割,生成多个分割文本。
实际应用中,用户可以在相应的应用或搜索网站中进行信息的搜索操作,其输入的搜索文本可被搜索引擎获取。如前所述,搜索文本可采用中文、英文或其他文种,在一些特殊的应用场景下,搜索文本中还可以包含符号、数字等,这里并不构成对本申请的限定。
作为本申请实施例中的一种方式,当用户在相应的搜索框中输入搜索文本时,搜索引擎可实时地获取搜索文本。而作为本申请实施例中的另一种方式,搜索引擎可以在用户发出搜索指令后(如:点击了“搜索”控件),获取搜索文本。当然,可根据实际应用的需要确定是否采用以上两种方式,或是其他方式获取搜索文本。
为了实现后续过程中对搜索文本的同义文本扩展,故需要针对搜索文本进行分割。在本申请实施例中,可通过分词工具(或算法)实现对搜索文本的分割。可以理解地,针对搜索文本进行分割后,可得到若干分割文本。其中,所述的分割文本可包含:分割后得到的词、短语和/或单个文字等。
例如:对于搜索文本“口碑总交易额”而言,分割文本可以包括“口碑”、“总”、“交易额”。
这里需要说明的是,已有的分割方式通常是基于自身的词库对搜索文本进行分词,但是,其自身的词库中可能并不包含某些特定的专有词或短语,从而导致现有的分割方式无法准确地对专有文本进行分割。在此情况下,进行分割处理后所得到的多个分割文本中,就可能包含被错误划分的词或短语,这无疑将影响到搜索结果的准确性。
因此,在本申请实施例中,将针对多个分割文本进行校正,即,执行下述步骤S102。
S102:根据预先建立的自定义文本库,对所述多个分割文本进行文本校正,生成校正文本。
在本申请实施例中,自定义文本库内存储的文本至少包括:采用已有的分割方式无法正确划分的自定义的词或短语(即,自定义文本),以及在同义词库中存储的所有同义短语。其中,通过自定义文本可以实现对分割文本的校正,而同义短语文本可以实现对分割文本在短语粒度上的扩展。
这里所述的自定义文本可以是业务提供方或用户的自造词和/或短语。在实际操作时,可以采用数据挖掘、文本分析等技术实现对自定义文本的确定及获取,也可以结合操作人员手动录入的方式,这里并不构成对本申请的限定。
基于此,针对前述过程所产生的多个分割文本,便可以通过自定义文本库进行校正。具体而言,可以针对分割文本进行拼接组合,并比对自定义文本库中已存储的词或短语,以实现对分割文本的校正(该过程将在后续内容中进行详细说明,在此不过多赘述)。
S103:根据预先建立的同义文本库,确定所述校正文本所对应的目标同义文本。
在本申请实施例中,所述的同义文本库,其中至少存储有同义词、同义短语等同义文本。
这里需要说明的是,同义文本库中还存储有目标同义文本,其中,所述的目标同义文本,可包括:已存储至数据中的规范文本(如:词条)、业务提供方所定义的专有文本等。例如:某业务提供方针对总交易额,使用“整体支付金额”这一专有短语进行描述,那么,如果同义文本库中包含“总交易额”以及“整体支付金额”这两条同义短语,则“整体支付金额”为目标同义文本。在实际应用中,在同一类同义文本中,目标同义文本可能有多个,也可能有一个,这里并不作具体限定。
例如:同义文本可包括“总交易额”、“总交易金额”以及“整体支付金额”,但只有“整体支付金额”为目标同义文本。
实际上,当用户进行搜索时,用户所要搜索的目标便是上述的规范文本或专有文本。所以,在本申请实施例中,对于包含多种同义词、同义短语的同义文本库而言,只将上述的规范文本或专有文本确定为目标同义文本。
显然,在针对校正文本进行同义扩展时,采用目标同义文本的方式,能够有效减少所扩展的同义文本的数量。
经过了上述的过程,可见,采用自定义文本库的方式,能够较为准确地对分割文本进行校正,即,将分割文本转换为正确的短语。而确定同义词库中目标词的过程,可以减少确定出的同义词的数量,进而可以减少后续的组合搜索的耗时。
S104:对所述各目标同义文本进行组合,生成对应于所述搜索文本的同义搜索文本。
在本申请实施例中,在得到了校正文本所对应的目标同义文本之后,便可以将目标同义文本进行组合,以得到与搜索文本具有相同含义的同义搜索文本。
延续前述示例,针对搜索文本“口碑总交易额”而言,“口碑”为业务提供方的专有名词,故其目标同义文本为其自身,而“总交易额”的目标同义文本为“整体支付金额”。那么,便可以将目标同义文本“口碑”和“整体支付金额”进行组合,得到“口碑整体支付金额”这一同义搜索文本。
通过上述步骤,搜索引擎可针对用户所输入的搜索文本进行文本分割,生成若干个分割文本。在这些分割文本中,可能包含未正确划分的词或短语,在此情况下,可以根据预先建立的自定义文本库,对分割文本进行校正。其中,本申请的自定义文本库中存储的文本既包括同义词库中的各同义短语,也包括不能被已有分词方式正确分割的自定义文本。那么,基于自定义文本库,也就能对分割文本进行校正,得到校正文本。此后,针对校正文本,在预先建立的同义文本库中,确定与校正文本所对应的目标同义文本。在针对目标同义文本进行组合,得到与搜索文本对应的同义搜索文本。
相较于现有技术中的同义词替换方式而言,本申请实施例中的文本处理方法,采用自定义文本库可以实现在短语粒度上的同义扩展,并且,在基于同义文本库的同义扩展过程中,仅选定各校正文本所对应的目标同义文本,从而有效减少了扩展出的同义文本的数量,进一步减少了生成同义搜索文本的数量及耗时。
为了清楚地阐述本申请实施例中的上述文本处理方法,下面将结合示例进行详细说明:
一、同义文本库
本申请实施例中所述的同义文本库,可以采用关系型数据库的方式进行存储,这里并不构成本申请的限定。作为实际应用中的一种可行方式,同义文本库可以采用数据表的方式,如,下表1所示,为该方式下的同义文本库:
表1
在表1中,文本可以是字、词和/或短语。对于存储于同义文本库中的每一文本而言,都具有唯一的文本标识。在同义文本库中,表示相同或相似含义的文本,将组成同义文本集,每一同义文本集具有各自的标识(如:表1中的“1001”、“1002”等)。每一同义文本集中,有且只有一个文本具备目标文本标识,具备目标文本标识的文本,便可认为是目标同义文本。
当然,上述表1所示仅是同义文本库可能采用的一种可行方式的示例,具体实施时,同义文本库中所存储的内容可根据实际应用的需要进行设定及调整,例如:在实际应用中,一个同义文本集中,也可能包含多个目标文本标识(也就是说,包括多个目标同义文本)。同时需要说明的是,在实际应用中的目标文本标识除了可以采用表1中数字的形式之外,还可以采用诸如符号、文字等形式的标识。这里并不构成对本申请的限定。
在实际应用中,对于同义文本库中的同义文本,可以通过日常用语基础同义文本、数据挖掘技术、文本分析技术或接收用户反馈等等方式,来获取同义文本,这里并不作具体限定。
二、自定义文本库
所述的自定义文本库,同样可以采用关系型数据表的方式,作为本申请实施例中的一种可行方式,自定义文本库可如下表2所示:
表2
在表2中,如前所述,自定义文本库中的文本来源通常为两种途径:同义文本库中所有的同义短语,以及无法被正确分割的自定义文本。可以理解地,自定义文本库中所存储的文本的数量越多,在实际搜索时,这些文本被命中的概率也就越高。那么,也就能够保证对分割文本进行校正,同时提升对分割文本基于短语粒度的扩展性。
结合上述同义文本库和自定义文本库的内容,现针对校正过程进行说明:
在本申请实施例中,由于采用已有的分割方式有可能无法正确分割某些自定义文本。所以,可针对搜索文本分割所得到的多个分割文本逐一进行拼接,生成相应的拼接文本,再与自定义文本库中存储的词或短语进行比对,实现对分割文本的校正。也即,对所述分割文本进行文本校正,生成校正文本,包括:选定分割文本进行拼接,生成拼接文本,针对生成的每一拼接文本,在所述自定义文本库中查找与所述拼接文本相匹配的文本,根据查找结果,生成校正文本。
其中,选定分割文本进行拼接的过程包括:按照多个分割文本的排列顺序,从前至后依次选定相邻的分割文本进行拼接。应理解地,多个分割文本的排列顺序,应与所述搜索文本中的文本排列顺序一致。
具体例如:假设用户输入的搜索文本为“总交易额走势如何”,那么,采用已有的分割方法对该搜索文本进行分割后,可以得到如下分割文本:
总交易额走势如何
可见,经过文本分割后,得到了5个分割文本(分割文本的排列顺序与搜索文本的文本顺序一致)。这5个分割文本中,包含被错误分割的文本,故将针对这5个分割文本进行校正。这里需要注意的是,经过文本分割后所得到的多个分割文本,实质上是有序排列的(即,形成了分割文本序列),所以在进行校正时,也将基于该分割文本序列。
在本申请实施例中,从前至后依次选定相邻的分割文本进行拼接,包括:
选定起始分割文本,以所述起始分割文本为准,依次选定排列在该起始分割文本之后的相邻分割文本进行累计拼接,直到生成的拼接文本满足设定条件。
其中,所述设定条件包括:所述拼接文本全部命中所述自定义文本库中的文本,和/或所述自定义文本库中未包含所述拼接文本。
延续上例:
首先,在上述分割文本序列中,选定首个分割文本(也就是起始分割文本),即,“总”。将选定的该分割文本在自定义文本库中进行比对。在此假设,在自定义文本库中并未查找到与“总”完全相匹配的文本,但自定义文本库中包含的某些自定义文本的前缀,与“总”相同。
那么,针对分割文本序列,选定后一分割文本与首个分割文本继续进行拼接,即,选定“交易”与之前选定的“总”进行拼接,得到拼接文本“总交易”。同样的,仍在自定义文本库中进行比对,并假设,“总交易”这一拼接文本,在自定义文本库中仍未完全命中相应的文本(同样仍仅是前缀相同)。
进而,继续选定后一分割文本进行拼接,也即,选定“额”与“总交易”进行拼接,得到拼接文本“总交易额”。此时,可在自定义文本库中,查找到相匹配的文本。此时,便可认为满足了上述的设定条件,那么,便可以使用该拼接文本对上述的分割文本进行校正,得到校正文本,也即,将“总”、“交易”、“额”这三个分割文本校正为“总交易额”。
此后,将重新选定起始分割文本,在本申请实施例中,选定起始分割文本,的过程可以是:按照所述多个分割文本的排列顺序,选定首个分割文本作为起始分割文本,或,当生成的所述拼接文本满足设定条件时,选定该拼接文本的后一相邻分割文本作为起始分割文本。
显然,本示例中,将分割文本“走势”选定为新的起始分割文本,继续上述过程,实现分割文本的校正,这里便不再过多赘述。
需要说明的是,采用上述的校正方式时,对于某些分割文本而言,即使进行了拼接,也未能在自定义文本库中查找到匹配的文本。那么,针对这些分割文本,则可直接作为校正文本。
基于上述的示例内容,在本申请实施例中,对多个分割文本进行校正的过程如图2所示,具体可包括以下步骤:
S201:在多个分割文本中选定第i个分割文本。
其中,i的取值从1开始,也即,按照多个分割文本的排列顺序,从第1个多个分割文本进行选定。
S202:以选定的第i个分割文本为基准,选定第j个分割文本。
其中,j的取值从i开始,也即,若i取值为1,则j的初始取值也为1。
S203:根据选定的第i个和第j个分割文本进行文本拼接,生成拼接文本。
S204:在自定义文本库中,判断是否查找到与拼接文本完全匹配的文本,若是,则执行步骤S205;否则,则执行步骤S206。
S205:将拼接文本确定为校正文本,并将i赋值为j+1,重新执行步骤S201。
S206:判断是否在自定义文本库中查找到与拼接文本前缀匹配的文本,若是,则执行步骤S208;否则,则执行步骤207。
S207:将第i个分割文本作为校正文本,并将i的值加1后重新执行步骤S202。
S208:将j的值加1,并重新执行步骤S202。
结合前述内容,可知,根据查找结果,生成校正文本的过程可以为:
当在所述自定义文本库中查找到与所述拼接文本一致的文本时,将所述拼接文本确定为校正文本;
当所述拼接文本与所述自定义文本库中的文本前缀一致时,根据该拼接文本及后续分割文本,确定校正文本;
当在所述自定义文本库中未查找到与所述拼接文本一致的文本时,将与该拼接文本对应的起始分割文本确定为校正文本。
以上是本申请实施例中针对分割文本的校正过程。在得到了校正文本后,便可以针对校正文本进行同义扩展。下面阐述同义扩展的过程:
针对校正后的每一校正文本而言,在同义文本库中查找与该校正文本相匹配的文本,并确定查找到的文本所属的同义文本集,进一步确定出该同义文本集中携带有目标文本标识的同义文本,作为目标同义文本。
这里需要说明的是,参考如表1所示的同义文本库中,对于表征相同的含义的同义文本而言,均具备相应的同义文本集的编号。所以,也就可以根据该编号来确定文本所属的同义文本集。
沿用前述示例:经过前述的校正过程后,可以得到校正文本“总交易额”、“走势”、“如何”。其中,针对校正文本“总交易额”而言,在如表1所示的同义文本库中,可确定出该校正文本命中了表1中的文本,且该文本的所属的同义文本集的编号为“1002”。由此,在编号为“1002”的同义文本集中,可确定出携带目标文本标识(即,目标文本标识为“1”)的同义文本“整体交易金额”。从而,可将“整体交易金额”确定为目标同义文本。相应地,针对校正文本“走势”和“如何”而言,采用相同的同义扩展方法,这里便不再过多赘述。
当然,对于一些校正文本而言,可能在同义文本库中并不能查找到相同的同义文本,在此情况下,则可将该校正文本作为其自身的同义文本。
继续前例:对于校正文本“总交易额”,可确定出目标同义文本为“整体交易金额”;对于校正文本“走势”,可确定出目标同义文本为“趋势”;在此假设,对于校正文本“如何”而言,并未在同义文本库中查找到相同的同义文本,故可将该校正文本“如何”作为自身的目标同义文本。
基于此,可以针对目标同义文本进行组合,得到同义搜索文本。也即,将“整体交易金额”、“趋势”、“如何”这3个目标同义文本进行组合,得到“整体交易金额趋势如何”。该文本便是搜索文本“总交易额走势如何”的同义搜索文本。进而,搜索引擎便可以使用“整体交易金额趋势如何”进行搜索,并得到相应的搜索结果。
以上内容示出了本申请实施例中对搜索文本进行同义扩展,得到同义搜索文本的过程。在上述内容中可见,正是采用文本校正和目标同义文本扩展的方式,一方面可以校正被错误划分的文本,另一方面可以有效减少所扩展出的同义文本的数量。
以上为本申请实施例提供的文本处理方法,基于同样的思路,本申请实施例还提供一种文本处理装置,如图3所示。该装置包括:
文本分割模块301,对用户输入的搜索文本进行分割,生成分割文本;
文本校正模块302,根据预先建立的自定义文本库,对所述分割文本进行文本校正,生成校正文本;
扩展模块303,在预先建立的同义文本库中,确定所述校正文本所对应的目标同义文本;
组合模块304,组合所述目标同义文本,生成对应于所述搜索文本的同义搜索文本。
所述文本校正模块302,获取已建立的同义文本库中的各同义文本,和/或用户输入的且未存储至所述同义文本库中的同义文本,根据获取到的所述同义文本,建立所述自定义文本库。
所述文本校正模块302,选定分割文本进行拼接,生成拼接文本,针对生成的每一拼接文本,在所述自定义文本库中查找与所述拼接文本相匹配的文本,根据查找结果,生成校正文本。
所述文本校正模块302,按照多个分割文本的排列顺序,从前至后依次选定相邻的分割文本进行拼接。
其中,所述多个分割文本的排列顺序,与所述搜索文本中的文本排列顺序一致。
所述文本校正模块302,选定起始分割文本,以所述起始分割文本为准,依次选定排列在该起始分割文本之后的相邻分割文本进行累计拼接,直到生成的拼接文本满足设定条件。
其中,所述设定条件包括:所述拼接文本全部命中所述自定义文本库中的文本,和/或所述自定义文本库中未包含所述拼接文本。
所述文本校正模块302,按照所述多个分割文本的排列顺序,选定首个分割文本作为起始分割文本;或当生成的所述拼接文本满足设定条件时,选定该拼接文本的后一相邻分割文本作为起始分割文本。
所述文本校正模块302,当在所述自定义文本库中查找到与所述拼接文本一致的文本时,将所述拼接文本确定为校正文本;
当所述拼接文本与所述自定义文本库中的文本前缀一致时,根据该拼接文本及后续分割文本,确定校正文本;
当在所述自定义文本库中未查找到与所述拼接文本一致的文本时,将与该拼接文本对应的起始分割文本确定为校正文本。
所述扩展模块303,针对每一校正文本,在所述同义文本库中,确定该校正文本所匹配的同义文本,确定该同义文本所属的同义文本集,在所述同义文本集中,选择携带有目标文本标识的同义文本,作为与所述校正文本对应的目标同义文本.
所述扩展模块303,针对每一校正文本,若未在所述同义文本库中查找到匹配的同义文本,则将该校正文本确定为自身的目标同义文本。
所述文本包括:字、词和/或短语。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定事务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行事务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。