用于检索的方法和装置的制作方法

文档序号:109840阅读:207来源:国知局
专利名称:用于检索的方法和装置的制作方法
本发明一般性地涉及到直接检索一个文本或一个符号串的检索技术,以及按检索单位来检索声音和图形的方法和装置,特别涉及到适用于高速符号串检索处理的检索方法和装置。
本发明的代表性应用是文本检索,此领域的先有技术将描述如下。
随着办公室自动化的发展,把文件信息作为数据库已迅速地得到推广,同时数据库的规模也日趋增大。因此,加速数据库对文件信息的处理是一项有意义的任务。文本检索在文件信息处理中是一个重要的项目,它是从一个由字符串组成的文本中检索出一个特定的字符串模式。因此就希望能有一种快速文本检索的处理方法。
过去曾提出过各种形式的文本检索和装置。例如,“用于文本信息检索的硬件系统”(Hard Ware System for text lnformatron Retrieval)由Hollaar L.A.,ACM SIGIR 6th Conf.1983著,描述了单元阵列方法,其中字符串模式以阵列形式一个一个地存储在一寄存器中,同时模式的检测是由将文本的字符从首字符开始一个一个地输入到寄存器中进行的。在该文章中还描述了有限状态自动法,它是将文本字符从首字符开始,一个一个地送到有限状态自动机,然后参照状态转换表检测出特定的模式。这两种先有技术所采用的方法都是从文本首字符开始,一个一个地提供字符,因此对于长度为n字符的文本,必须输入所有的n个字符,这在原理上就阻碍快速处理。
另一方面,以软件为基础的文本检索方法有由Kunuth D.E等人在“Past Pattern Matching in Strings”STAM。J Comput,Vol.6,PP323-350,1977文中所描述的KMP方法以及由Boyer R.S等人在“A Fast String Seaching Algorithin”CACM,Vol.20PP 762-772,1977文中所描述的BM方法。在这些方法中,文本及模式的字符都是一个一个地取出来比较,各种处理都是根据比较的结果进行的。这些方法的缺点是软件的方法不适用于高速处理,此外,对于硬件的实现也不适合。
如上所述,先有技术的方法和手段在于算法的问题,该问题是所有的与文本长度相等的n个字符必须一个一个按顺序地输入以检测一个特定的模式。
本发明的目的是提供一种用于检索的方法和装置,它可高速地检测出一种模式,是通过减少输入文本字符或符号的数目来实现的。
根据本发明,为实现上述目的,需要有若干个存储信息的表格。利用这些表格,並参照当前的检索状态和表示输入符号(至少一个)的信息,就可容易地计算出符号串中下一个要输入的符号的地址和符号串的下一个检索状态,同时当输入了一个符号串的符号时,就根据当前的检索状态和表示输入符号的信息去存取这些表格,查找存放在表格中的数据以得到下一个检索状态和下一个要输入符号的地址。该地址的符号就接着被输入从而至少可检测到一个包含在该符号串中的予先确定的模式(所谓的关键字)。
图1是一个框图,它是根据本发明的一个实施方案给出的一种文本检索装置。
图2是根据本发明得出的文本检索的流程图。
图3到图5是用来说明本发明文本检索的图表。
图6和图7是图1实施方案中使用的例表。
图8是图1实施方案中使用的文本表的一个例子。
图9是一个表用于说明图1实施方案的操作。
图10是一个框图,它是根据本发明的另一个实施方案给出的一种符号串检索装置。
图11是根据本发明得出的符号串检索的流程图。
图12和图13是用以说明本发明符号串检索的图表。
图14是用于符号串检索所使用的检索状态表。
图15是用以说明本发明的状态转换的图表。
图16是用于符号串检索所使用的一个状态转换表。
图17是用于符号串检索所使用的跳越表。
图18是图10实施方案中所使用的状态转换表。
图19是图10实施方案中所使用的文本表。
图21是用于说明图10实施方案操作的一个表。
下面参照文本检索介绍本发明的第一个实施方案,文本检索是本发明的主要应用领域。在描述本发明的文本检索过程中有以下约定约模式的长度是m,文本长度是n,在模式中的第j个字符(1≤j≤m)用P(j)表示。在模式中从第j个字符到第k个字符的字符串用P(j∶k)表示。文本中的第i个字符(1≤i≤n),是用T(i)表示而文本中的从第i个字符到第k个字符的字符串用由T(i∶k)表示。同样,假设文本的逻辑以如图8中所示的文本表300的形式存放在随机存取存储器(RAM)中内在执行文本检索中使用。
首先定义文本的当前检索状态为(i、l),即,由一组参数i和l代表,其中i是文本中下一个要输入的字符的地址,而l是文本字符的数目,该数目等于从模式尾部开始计数的字符数目,该检索状态(i、l)如图3所示。
下面将参照图4和图5描述检索状态的转换。在当前检索状态(i、l)下,文本中下一个要输入的字符T(i)(其地址为i)如果该字符T(i)与模式中第(m-l)个字符P(l-m)相符合,则根据本发明,检索状态就转移到一个新的文本检索状态(i-l,l+1),即如图4所示i=i-1和l=l+1。如果不符合,就移动模式,一直到在模式的第(m-l)个字符P(m-l)前找到一个字符串与文本中从第i个字符到第(i+l)个字符的字符串T(i∶i+l)相符合。例如,如果在模式中的字符串P(H-l∶H)得到符合,模式最终移动了m-H。这样检索状态可转换到一个新的文本检索状态(i+m+l-H,O),即如图5中所示的i=i+m+l-H和l=0。
上面引用的参数H由下述公式确定H(l,z)=max{x1(l+1≤X≤m-1和P(x-l)=z和P(x-l+1∶x)=P(m-l+1∶m))或(1≤x≤l-1和P(1∶x)=P(m-x+1∶m)或x=0}(1≤l≤m-1)H(l,z)是一个函数,它只取决于模式,例如,取一个模式为“AABCAAABCAA”,H(1,c)是表示模式中的一个位置,当模式示符从尾部开始检索时,在此位置上第一次发现字符串“CA”,位置“10”代表字符串的终位置。用于此例的一个H(l,z)表201已如图6所示。
文本检索明确地按照图2中所示的流程图进行,首先,文本地址i设置为模式长度m,状态参数l设置为0(零)(步骤101)。然后确定i是否比代表文本长度的n小(步骤102)。如果i比n大,文本检索终止。但是如果i不比n大,那么继续文本检索。
接着采用i作为参数,取文本表以输入文本的第i个字符T(i)以替换z。然后,用一组(l,z)(即当前状态参数l及输入的文本字符z)作为地址去查寻S(l,z)表,以获得一个值,该值替换y(步骤103)。S(l,z)函数定义为。
这样,S(l,z)函数指出输入的文本地址和上一个输入的文本地址之间的差距。此差距称为跳越宽度,而S(l,z)表被称为跳越表。特别应知道,当前的文本字符z=T(i)与P(m-l)相合时,跳越宽度是“-1”。作为一个例子,对于模式为“AABCAAABCAA”的跳越表S(l,z)如图7中的200所示。再回到流程图,现在要确定y=S(l,z)是否为“-1”(步骤104)。当y等于“-1”时,状态l便置为零(步骤105)。当y等于“-1”时,说明当前的文本字符与模式字符相符合,此时如果当前状态参数l不等于m-1(步骤106、107)则l就计数到l+1。但是如果当前状态参数l等于m-1,说明找到的模式是在文本中,于是表示模式已找到的信息OUT可设置为“1”,状态参数l设置为“0”,而跳越宽度y用常数I=2m-F-1替代(步骤108)其中F=max{x1(1≤x≤m和P(1∶x)=P(m-x+1∶m)或x=0}最后考虑了跳越宽度y=S(l,z),指出了下一个输入的文本地址和上一个已输入的文本地址之间的差,所以i+y就用来取代下一个输入的文本地址i(步骤109),程序回到步骤102。
参照图9,这里专门举例说明文本检索的操作。例如,设文本为如图8所示的“AABCAAABABAABCBAABBAAABAA”,模式是“AABCAAABCAA”。对于这式模式,跳越表S(l,z)是如图7所示的。首先,设置i=m=11及l=0。在第一个循环中,输入一个文本字符T(11)=A,它替代z。然后取跳越宽度S(l,z)=S(O,A)=-1,它替代y。因为y=-1状态参数l被计数到l=1,文本的下一个地址i成为i+y=10。在第二个循环中,输入第10个字符T(10)=B並用以替换z,取跳越宽度y=S(1,B)=11。因为y≠-1,状态参数l为l=0,文本的下一字符地址为i=1+y=21。在第三和第四个循环中进行相似的操作,最后在第五个循环中文本地址i增加到30,超过了n=25。于是文本检索过程便结束了。根据本方案的文本检索对于上述例子中的25个字符的文本可保证在五个循环内完成文本检索过程。而有限状态自动法和单元阵列法均需将所有25个文本字符全部输入,因此相比之下本方案就能使处理速度加快。
现参照图1这是一个用于实施文本检索和电路的例子。电路包括RAM1是用于存放文本字符T(i)的文本表300,RAM2是用于存放跳越表200的S(l,z),文本地址寄存器6是用于存取RAM1;跳越表地址寄存器11是用于存取RAM2,存储寄存器10和12分别与RAM1和2相连。文本寄存器6,跳越表地址寄存器11,存储寄存器10和存储寄存器12逻辑上是分别负责处理文本地址i,跳越表地址(l,z),文本字符z=T(i)和跳越宽度y=S(l,z)的。在图1中也示出了用于实现流程图(图2)中虚线框图110的逻辑电路4,用于实现步骤109的加法器5以及用于实现步骤102的判断电路。此电路图是如前面已描述的那样操作,寄存器7、8、9可用于提供暂时的数据存储,数码13表示输出线。
尽管在上述的实施方案中表的查寻是以字符为单位,如需要,对于那些在本技术领域
中熟练的人很容易将其改进为以多字符为单位的查表形式,根据本发明的技术,对于多个模式的检测,诸如跳越表200的种类和数据数目的内容可相应地改变。
从上所述可看到,本发明可在软件或硬件基础上实施完成。
在上述的实施方案中主要地涉及了以文本形式的符号串,但本发明可应用到任何声音模式,图形和数字,只要它们能像符号那样能以检索单元形式予以说明。
根据本发明的第一实施方案,模式长度等于m个符号或字符,符号或文本长度等于n个符号或字符时,完成检索处理所需最小输入长度为n/m的符号或字符串,因此,与先有技术的方法(即必须输入所有n个符号或字符)比较,其处理性能得到极大的提高。而且,电路元件的数目,与诸如单元阵列法的先有技术比较有相当地减少。
本发明的第二实施方案中,是用多个模式来检索符号串的。首先说明符号串检索的算法。为此,约定文本长度是n,模式的数目是K,一个模式k具有模式长度MK,其中1≤k≤K,而文本的第i个符号是由T(i)表示的,其中1≤i≤n,並约定文本是存储RAM中的。
此算法基本上可用如下说明来解释。例如,当三个模式1、2和3分别表示为“COW”,“BULL”和CATTLE,而文本用“HOERS”任何三个模式的第一到第三个符号没有符号“R”的存在,这可用在开始时只输入第三个符号T(3)=R来证实,因此可以肯定在文本的第一到第三个符号范围内没有模式存在。相应地对此例子来说只考虑模式存在于文本的第4个及以后的符号中也是完全可以的(见图12)。这可防止文本的第一和第二符号“H”和“O”被徒劳地输入,其优越性是,要输入的文本符号数目可减少。在此例中,文本的第六个符号被作为下一个要输入的符号,相反,如果第三个符号T(3)是“B”就有模式2的“BULL”与文本相符合的可能性(在第三个符号开始),这就要考虑做进一步的检索。如果第三个符号T(3)是“W”,则文本的第一到第三符号就有可能与“COW”相对应,因此紧接在第三个符号前面的,即文本的第二个符号T(2)就需要输入以便检查(见图13)。算法基本上可作如上解释,它可用下述的方式高速地实现。
在此实施方案中,文本检索状态由l指定並如图14所限定。更详细的是状态“01”意味着第三个符号是“W”,状态“02”说明第二个符号是“O”和第三个符号是“W”等等。状态“FF”“FE”和“FD”分别指出模式1、2和3已被检测到。用异常数字的状态来指出被检测的模式,可以容易地确定模式检测的结果。这样,在这个例子中,当状态超过“FD”时,便指出模式已被寻找到。状态“00”意味着内部符号不符合,而在此状态下,输入相应于模式第三个符号通常1≤m≤K(MK)-th的文本符号z。如果输入的文本符号是“W”,状态“00”移到状态“01”,如果输入的符号是“L”,状态“00”移到状态“03”,如果输入的文本符号是“T”,状态“00”便移到状态“06”。对于其他情况,状态“00”保持不变。在“01”状态,输入相应于模式第二个符号的文本符号z。如果输入的文本符号是“0”,“01”状态移到状态“02”,在其它情况下移到“00”状态。上面所描述的状态转换在图15的状态转换图中作了说明。这种状态转换是由当前状态1和输入的文本符号z所确定,並在图16的状态转换表L(l,z)中作了说明。
当已知当前状态l和一个输入的文本符号z时,通过查找予先准备好的跳越表S(l,z)中的信息就能确定下面要输入的文本符号的数目,对于现在的例子,此跳越表已在图17中作了例示,跳越表中存放的信息指出在已知当前状态l和一个输入文本符号z时下一个要输入的文本符号的地址和已经输入的文本符号地址(当前文本符号)之间的差。这个差称为跳越宽度。例如,如果在“00”状态下输入的第三个文本符号T(3)是“R”,当前文本符号的地址“3”加上表中的跳越宽度S(OO,R)=“3”得到下一个要输入的文本符号地址“6”。如果在状态“OO”下输入的第三个文本符号T(3)是“W”,查出跳越宽度S(OO,W)=“-1”,因此,得出下一个输入的文本符号的地址是“2”。通过使用状态转换表L(l,z)和跳越表S(l,z),上述符号串检索的算法可高速地执行。
根据图11的流程图可实现符号串检索。
首先,设初始状态1=0,初始文本地址即文本符号地址
(mk)(步骤50101)。然后根据i≤n是否成立,确定符号串检索是否应结束(步骤50102)。如果i>n则过程结束(步骤50103),如果i≤n,第i个文本符号z=T(i)被输入,根据当前状态l和输入的符号z取出下一个状态l=L(l,z)和跳越宽度y=S(l,z)(步骤50104)。通过判断下一个状态l是否超出了“FD”可确定检测到那个模式(步骤50105)。当超过了“FD”,检测到的模式号码是-1并使OUT=-l(步骤50106)。然后将下一个输入的文本符号的地址i按照i=i+y(步骤50107)进行计算,程序回到步骤50102。
一个用于实现符号串检索的电路实例如图10所示。电路包括用于存储文本表T(i)的RAM501,用于存储状态转换表L(l,z)的RAM502,用于存储跳越表S(l,z)的RAM503,用于存取RAM1的文本地址寄存器5020,用于存取RAM502和503的表地址寄存器5021,分别与RAM501,502和503相连的存储寄存器5031,5032和5033。文本地址寄存器5020,存储寄存器5031,表地址寄存器5021,存储寄存器5032,存储寄存器5033逻辑上分别负责处理文本地址i,文本符号z=T(i),表地址(l,z),下一个状态l=L(l,z)和跳越宽度y=S(l,z)。在图10中还示出了用于实现图11流程中虚线框50110的判断电路5010,用于实现虚线框50111的逻辑电路,用于实现步骤50107的加法器5012及用于提供检测模式的输出线5050。寄存器5040,5041和5042可用来暂时存放数据。
此电路的工作过程可参照图21来说明。例如,模式1用“COW”代表,模式2用“BULL”代表,模式3用“CATTLE”表示,文本用“HOERS,CAT,COW,SHEEP,HEN,DOG,MONKEY”表示。在这个例子中使用了图20中示出的文本表T(i)并将其存入RAM501中。同样,采用了图18中所示的状态转换表L(l,z)和图19中所示的跳越表S(l,z)并分别将它们存到RAM502和RAM503中,首先在寄存器5042中设1=“00”。在文本地址寄存器5020中设
。在第一循环中,从文本表中取文本符号T(03)=“D9”(R)送入到文本寄存器5031,然后以“00D9”为地址存取RAM502和RAM503。之后,将状态l=L(l,z)=“00”和跳越宽度y=S(l,z)分别取到状态寄存器5032和跳越宽度寄存器5033。逻辑电路5011检查了状态寄存器5032的内容,指出没有检测到模式,因为状态没有超过“FD”。加法器5012将跳越宽度寄存器5033的内容“03”和文本地址寄存器5020内容“03”相加,将“06”送到地址寄存器5020。相似地执行第二个循环。在第三个循环中,由于T(09)=“E3”(T),以“00E3作为地址访问RAM502和503,状态l为“06”,跳越宽度y为“FF”,指出了用于第四个循环的下一个文本地址i为“08”。程序继续到第九个循环,在此期间状态l为“FF”,OUT=“01”,指出了模式1的“COW”已被检测到。程序继续进行直到第十六个循环,此时符号串检索结束。在此例中,用这种方式对34个符号的符号串的文本检索程序只用16个循环就能完成,而用先有技术的方法则需用34个循环的处理时间。
根据本发明的第二个实施方案,当多个模式中最短的一个的模式长度等于m及文本长度等于n时,完成符号串的检索最小只需要n/m个循环,而先有技术的方法需要n个循环,因此处理速度可提高m倍。此外,模式被检测到的状态用异常数码表示,这样有助于容易地确定模式检测的结果。进而,硬件元件的数目与先有技术中以单元阵列法为基础装置相比较有了相当地减少。
权利要求
1.用于检索的一种方法,其中表是为存储信息而准备的,利用这些表並参照当前的检索状态和表示输入符号(至少一个)的信息就可以容易地计算出符号串中下一个要输入的符号的地址和上述符号串的下一个状态,同时当输入上述符号串的一个符号时,根据上述的当前检索状态和该输入的符号的信息去存取上述的表,查找上述表中存储的数据以得到下一个检索状态和下一个要输入的符号的地址,该地址的符号就接着被输入,从而至少可检测到一个包含在上述符号串中的予先确定的模式。
2.根据权利要求
1的检索方法,其特征在于;上述的表是根据原先检索所查明的情况信息与上述符号串中至少一个新的输入符号来建立的,以保证排除明显的多余的检索。
3.一用于检索的设备包括用于存储信息的表装置,利用它並参照当前的文本检索状态和表示一个输入字符的信息可以容易地计算出文本中下一个要输入的字符地址和下一个文本检索状态;当输入一个文本字符时,根据上述当前文本检索状态和代表上述输入的一个文本字符的信息对上述表装置进行存取的装置;根据在上述表装置中存储的数据,来计算下一个文本检索状态和下一个要输入的文本字符的地址的装置;及用于重复输入计算地址的装置,其中至少可检测到一个包含在上述文本中的予先确定的模式。
4.根据权利要求
3的检索装置,其特征在于;上述表装置是根据原先文本检索所查明的情况信息和一个新输入的文本字符来建立的,从而保证以获得模式特征来排除多余的检索。
5.用于符号串检索的方法,其特征在于;考虑到模式的特征,表示上一次检索所查明的情况信息和表示新输入的符号或符号串的信息,以保证排除多余的检索,从而可确定包含在上述符号串中的多个予先确定的模式中的一个。
6.用于检索符号串的设备,其特征在于,包括;具有存储信息表的存储装置,按照该信息参照当前符号串的检索状态和表示上述符号串中一个输入符号的信息便知道下一个符号串的检索状态;具有存储信息表的存储装置,按照该信息可计算出上述符号串中下一个要输入的符号的地址;及当检索上述符号串时,用于查找上述表的装置。
7.根据权利要求
5的符号串的检索方法,其特征在于;说明模式已被检测到的检索状态用异常数码表示,这样可以确定上述多个模式中哪一个已被检测到。
专利摘要
建立一个跳越表,通过该表并参照一组当前符号串的检索状态和符号串中下一次要输入的一个或多个符号就可以容易地确定下一个符号串的状态和下一次要输入的一个或多个符号的地址。当执行检索符号串时,查找存储在跳越表中的数据,以保证符号串的检索只需输入符号串中少量的必要的字符。没有必要在检索时输入符号串中所有字符,这就大大提高了处理速度。可检索多个符号串。
文档编号G06F17/30GK87100829SQ87100829
公开日1987年9月9日 申请日期1987年2月14日
发明者大曾根匡, 杉本彰, 北岛弘行, 土田正士, 谷口伸博, 山下芳明 申请人:株式会社日立制作所导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1