专利名称:基于字符分类检索字符串的装置和方法
技术领域:
本发明涉及字符串检索装置和方法,用于在事先关于字符串检索的数组中记录诸如中文字符等多个字符串,并判断给定的字符串是否被记录。
本发明还涉及关于关键字检索技术的字符代码记录检索装置和方法,特别地,用于在作为数据结构一维数组的双数组结构中记录作为使用关键字被检索的目标的诸如汉字代码的字符串。
近来计算机网络、电子邮件等已广为流行,由个人处理的电子文档(数字文档)的数量已迅速增加。例如,许多人一天要接收几百上千个电子邮件。一天常常要存储1兆字节(MB)的文档数据,而一年要存储几百兆字节到一吉字节(GB)。
为了处理这样大量的数据,必须通过消除数据中的冗余并对数据量进行压缩,来降低必要的存储容量并加速数据的传输。鉴于上述近来的趋势,数据压缩技术已成为必不可少的了,并为了以一种方法压缩各种数据,已经提出一种通用编码。
然而,当以单词为单位压缩诸如电子化的日文、中文等文档数据时,首先必须以高速判断从文档输入的字符串是否是在词典中事先记录的一个词。而且,由于这些语言中有大量的词要记录在词典中,于是词典必须进行编辑,使得尽可能不产生无用的存储区。在已知的线索(trie)方法中,作为关键字的多个词存储在树结构的线索词典中,并通过逐字符对比字符串与树结构的每一结点而检索包含在输入字符串中的词。
在以下的说明中,使用信息理论中所使用的它们原来的名称,即一个词单元的数据被称为符号或字符,任意数目的连接数据被称为串或字符串。此外,代码串或字符串中由几个前导符号和字符组成的序列称为前缀,而由几个结尾的符号和字符组成的序列称为后缀。例如,字符串abc的前缀为∈(空),a,ab及abc,而后缀为∈(空),c,bc及abc。
在语言代码压缩中重要的是以具有尽可能小的存储容量的数据结构存储诸如词等的串,并发展以高速检索串的算法。特别地,在词典存储词的情形下,要被记录的关键字集合体是事先已知的,且常常通过后来适当添加关键字来扩充词典。因而,同样重要的是能够易于添加关键字。这种数据结构称为准静态数据结构。
Aoe已提出作为以高速对多个关键字进行模式匹配的数据结构的双数组(Junichi Aoe”A High-speed Digital Retrieval Algorithm byDouble-array”,in Proceedings of Papers D of The ElectronicsInformation and Communications Institute,Vol.J71-D,No.9,pp.1,592-1600.1988)。
图1A示出双数组的一例。这一双数组包括两个一维数组BASE和CHECK,且由这些数组存储的数据对应于图1B所示的线索结构。图1b的线索表示五个英文词baby#,bachelor#,badger#,badge#,和jar#,每一结点的索引对应于图1B中所示的BASE和CHECK数组的下标。BASE和CHECK的记录值为0的位置对应于结点还没有被记录的空白位置。
这一线索包括图1C所示的结点父子关系的重复,且父结点的索引n和子结点的索引m分别对应于BASE和CHECK的下标。换言之,这一父子关系指示状态转换的类型,并当字符a在父结点n状态输入时,进行从父结点n状态向子结点m状态的转换。
当使用双数组检索对应于跟随父结点n的字符a的子结点的索引时,如图1D所示,首先参照对应于BASE上的下标n的位置,并获得内容d。这一值d指示对于CHECK的下标的一种原点位移量(位移量)。
然后假设以CHECK上的下标d为起始点,通过字符a的内部表示值所移动的位置的下标为m(=d+字符a的内部表示值)。如果对应于CHECK上的下标m的位置内容与父结点的索引n重合,则字符a存储在结点n的下面,并发现对应的子结点的下标为m。这时,使用对树上的关键字规定状态转换的goto功能g,子结点的索引m被表示为m=g(n,a)。
一般来说,一个或更多的子结点跟随一个父结点,并在正规线索结构中,子结点的检索速度按跟随同一父结点的亲缘结点的数目而降低。另一方面,在双数组树结构中,不论亲缘结点目如何,能够获得高速的检索。
然而,上述传统的字符串检索有以下问题。
当双数组用于日文、中文等的汉字(kanji)词典时,跟随一个父结点的子结点的数目与英文等的字母排列词典相比,由于汉字成语的多样性而趋于增加。
图1示出以汉字“电”(电)开始的五个汉字成语的情形,即“电压”(电压)、“电气”(电气)、“电车”(电车)、“电脑”(计算机)、和“电话”(电话)记录在双数组中。这种情形下,对应于“电”之后的每一字符的汉字代码值,即“压”(压)、“气”(气)、“车”(车)、“脑”(脑)和“话”(话),及相对的位置关系在CHECK上根据内部表示值保持不变。另一方面,在CHECK上标有0的位置已经由其它汉字字符占据,并且“电”之后的各汉字不一定可以同时匹配空位置。
因而,为了以所保持的相对位置关系在CHECK上记录这些汉字字符,如图1F所示,必须扩展BASE和CHECK两者的数组。这种情形下,计算能够适应所有这些汉字字符的最小位移量(平行位移量)d,并且这一d值写入BASE上的“电”的代码值n的位置中。这里,对数组的新下标p,q,r,s,和t指定通过向这一位移量d添加“电”之后的每一汉字字符的内部表示值所获得的值。然后,“电”的父结点的索引n写入CHECK上p,q,r,s,和t的位置中。
图1G表示这一线索树结构。图1G中,“电”记录在根结点下,并且“压”、“气”、“车”、“脑”和“话”分别对应于结点p,q,r,s,和t记录在结点n之下。这里,n=g(root,电),p=g(n,压),q=g(n,气),r=g(n,车),s=g(n,脑),及t=g(n,话)。
这里,问题在于,与字母表的字母情形不同,在汉字字符的情形下,大量的字符跟随一个字符,并且如果这些字符以所保持的相对位置关系记录在CHECK中,数组常常必须被扩展。如果数组被扩展,则已经记录的字符之间的空间不被占据而为空的。如果重复数组的这种扩展,这种空间的数目明显增加。因而,在小存储容量中很难存储大量的汉字成语。
本发明的目的是要提供一种用于降低词典的闲置空间数而又不失去检索的高速度、并使用压缩词典检索串的串检索装置和方法。
本发明的另一目的是提供一种字符代码记录检索装置和方法,通过进一步发展通常的高速低容量词典数据结构而获得的双数组结构提出一种新的数据结构,并对于频繁出现的字符代码引入一种不同于传统的双数组的新的数据结构,以尽可能地被抑制的数组扩展记录大量字符代码。
在本发明的第一方面,串检索装置包括第一数组单元、第二数组单元、第三数组单元和检索单元,并检索记录串之外给定的串。
第一数组单元在等同于后跟多个字符的前缀的索引的下标位置记录对应于前缀的序号信息。第二数组单元在基于等同于对应于前缀的序号信息的下标和对应于字符代码的另一下标的位置,记录对应于对跟随前缀的多个字符分类而获得的多组的每一个的位移量。第三数组单元在等同于位移量与跟随前缀的字符的内部表示值的和的下标位置,记录前缀的索引。检索单元使用第一、第二、和第三数组单元检索给定的串。
通过采用这种串检索装置,跟随前缀的字符被分类为多个组,并向每一组指定位移量。由于包含在每一组中的字符数小于跟随前缀的字符总数,故与所有字符一次被记录的情形比较,数组单元中的空位置能够易于被使用。这样,能够以较小的位移量记录字符,并能够保持高速检索而抑制第一和第三数组单元两者的扩展。
在本发明的第二方面,串检索装置包括记录单元和检索单元,并从记录串中检索给定的串。记录单元对跟随前缀的多个字符分类并记录,且检索单元使用记录单元检索给定的串。
通过采用这种串检索装置,如同第一方面那样,记录单元中的空区域可被有效地使用,且在保持检索的高速度的同时所记录的串的数据结构能够被压缩。
本发明第三方面的装置是一种字符代码记录检索装置,用于在作为数据结构一维数组的双数组结构中记录使用关键字被检索的字符代码串,并用于检索串,并包括平行位移量计算器单元,用于计算记录使用关键字被检索的每一串字符所需的平行位移量;第一数组单元,以使用关键字被检索的每一字符串的前缀索引作为下标;用于判定第一数组单元中记录值的识别单元;第二数组单元,记录关于跟随第一数组单元中所指示的串的前缀的特定字符的信息;关键字候选点计算器单元,用于计算记录在第一和第二数组单元的平行位移量与作为对应于跟随串的前缀的字符的内部表示值之和;以及第三数组单元,以通过关键字候选点计算器单元获得的和作为下标,记录串的前缀的索引。
通过引入进一步发展作为传统的高速低容量词典数据结构的一维数组的双数组结构所获得的新的数据结构,一种新的数据结构具有以使用关键字被检索的每一串的前缀的索引作为下标的第一数组、跟随第一数组中所示的串的前缀的特定字符上记录信息的第二数组、以及记录串的前缀的索引的第三数组,由平行位移量计算器单元计算的在第一和第二数组中记录使用关键字被检索的每一串字符所需的平行位移量与作为对应于跟随串的前缀的字符的内部表示值的和用作为下标,这种字符代码记录检索装置能够向每一字符代码提供一种记录位置,使得字符代码在对应于第三数组的CHECK数组上可以彼此重叠。其结果是,所有作为关键字的字符代码能够一次被记录在CHECK数组上的各空间中,CHECK数组的扩展尽可能地受到抑制,所有作为关键字的字符代码能够记录在CHECK数组上,跟随一定的字符代码的字符代码之间的相对位置关系被保持且CHECK数组的扩展尽可能地受到抑制,并进而能够把闲置空间(稀疏区域)的出现降低到可能的最低水平。这样,能够产生存储准静态关键字集合,即预定关键字集合,作为检索目标的词典,并从而能够把具有可通过后来适当添加并记录关键字而被扩展的线索数组结构的存储器容量降低到最小。
本发明的第四方面的装置是第三方面的一字符代码记录检索装置,并包括列表单元,用于产生频繁用于成语的字符代码列表并输出从字符代码列表选择的字符代码;频繁出现字符代码选择器单元,用于输出关于字符代码频率级别数应当选择到何种程度的频率阈值;频繁出现字符代码存储单元,用于存储从列表单元选择的频繁出现的字符代码并输出选择的频繁出现字符代码和频繁出现字符代码的索引;作为记录由字符代码组成的成语的字符代码词典的词典单元,用于基于频繁出现的字符代码根据关注的字符是否为成语的前缀对作业进行分类,并输出通过对跟随频繁出现的前缀字符的字符进行分类所获得的每一组;组存储单元,用于存储通过对跟随由词典单元输入的频繁出现的前缀字符的字符进行分类所获得的每一组;作为第一数组单元的第一BASE数组单元,用于计算频繁出现的字符的序号信息并在第一BASE数组上内部表示值的索引位置存储该序号信息;对跟随频繁出现的前缀字符的字符进行分类的代码分类单元,用于使用第二字符代码的几位对成语的第二字符进行分类;平行位移量计算器单元,用于计算最小平行位移量,诸如通过向每一组中的每一字符的内部表示值添加一任意平行位移量所获得的任何值可能指示CHECK数组上一空位;平行位移量存储单元,用于存储从平行位移量计算单元输入的平行位移量并把该平行位移量输出到第二BASE数组单元;关键字候选点计算器单元,用于记录作为CHECK数组中下标位置处字符父辈的等同于组的每一字符的内部表示值和平行位移量之和的前缀索引,并对由(前缀+当前字符)组成的下一个前缀的索引指定该和的值;作为第二数组单元的第二BASE数组单元,用于对由平行位移存储单元基于由代码分类单元输入的代码值和由列表单元输入的序号信息所输出的每一组存储平行位移量;以及作为第三数组单元的CHECK数组单元,用于在对应于和的值的位置记录前缀的索引。
在这种字符代码记录检索装置中,通过引入一种新的数据结构,能够对每一字符代码提供一个使得字符代码在CHECK数组上可以彼此重叠的记录位置,这种数据结构是作为由进一步发展传统的跟随低容量词典数据结构的一维数组的双数组结构所获得新的数据结构,这种数据结构具有作为第一数组单元的CHECK数组单元,用于在对应于平行位移量和字符代码内部表示值之和的下标位置记录前缀的索引;第一BASE数组单元,用于计算选择的字符的序号信息并同时在第一BASE数组单元上的字符的索引位置存储序号信息;及第二BASE数组,用于存储由平行位移量存储单元基于从代码分类单元输出的代码值和由列表单元输出的序号信息输入的每一组的平行位移量,通过产生将要记录在第一BASE数组的两类值并分别向非频繁使用的字符和频繁出现的字符施加作为传统的平行位移量(低使用频率)和第二BASE数组的下标之一的这两类值,并根据跟随频繁出现的字符代码的字符代码值把第二BASE数组的下标分类为三组,并对每一组提供唯一的平行位移量。其结果是,作为关键字的所有字符代码能够同时记录在CHECK数组上的空间中,使CHECK数组的扩展尽可能被抑制,每一字符代码能够记录在CHECK数组中,使跟随一定的字符的字符之间的相对位置关系被保存,并使CHECK数组的扩展尽可能地被抑制,并进而能够把闲置空间的出现降低到尽可能低的水平。这样,能够产生存储准静态关键字集合,即作为检索目标的预定关键字集合,并从而通过后来适当添加并记录关键字而能够被扩展的带有线索数组结构的存储器容量能够被极小化。
本发明第五方面的装置是一第三方面的字符代码记录检索装置,并包括文档输入单元,用于首先指定线索结构的根作为前缀,并同时在前缀中设置结束记号,然后指示输入被检索的字符的字符代码并检测输入的字符代码的前缀;第一BASE数组单元,用于从对应于前缀或字符代码索引的位置输出一数值;记录值判定单元,用于判定从第一BASE数组单元输入的数值是为前缀字符的序号信息还是一平行位移量,当数值是在组成线索的索引范围之外时则输出作为前缀字符代码的序号信息的数值,并当数值在索引范围之内时则输出作为平行位移量的数值;代码分类单元,用于当从第一BASE数组单元输入的数值是频繁出现的前缀字符代码的序号信息时使用几位的字符代码对输入的字符代码进行分类;第二BASE数组单元,用于从对应于从记录值判定单元输出的前缀的序号信息和字符代码的分类的位置输出平行位移量;平行位移量存储单元,当从第一BASE数组单元输入的数值是平行位移量时,用于存储平行位移量;关键字候选点计算器单元,用于计算平行位移量和输入字符的内部表示值之和;CHECK数组单元,用于从对应于由关键字候选点计算器单元计算的位置输出关键字;以及关键字/前缀校对单元,用于判定由CHECK数组单元输入的关键字是否与前缀字符代码索引或前缀的索引一致,并当关键字与前缀字符代码索引或前缀的索引一致时,判定成语记录在词典中。
在这种字符代码记录检索装置中,能够产生存储准静态关键字集合,即预定关键字集合作为检索目标的词典,并从而通过引入一种新的数据结构,能够把后来通过适当添加和记录关键字而能够被扩展的带有线索数组结构的存储器容量极小化,这种数据结构是通过进一步发展作为传统的高速低容量词典数据结构的一维数组的双数组结构而获得的,这种新的数据结构具有CHECK数组单元,用于从对应于从关键字候选点计算器单元输入的和的位置输出关键字;第一BASE数组,用于从对应于前缀或字符代码索引的位置输出一数值;以及第二BASE数组,用于从对应于从记录值判定单元输出的前缀字符代码的序号信息和字符代码的分类这两者的位置输出平行位移量。其结果是,通过以作为一维数组的双数组结构(即线索数组结构)存储数据,使存储器容量降低到尽可能的最低水平,并使用这种树数组结构作为检索关键字,而能够实现高速模式匹配。
图1A表示一双数组。
图1B表示对应于双数组的线索结构。
图1C表示线索中的父子关系。
图1D表示使用双数组的检索。
图1E表示汉字的添加记录。
图1F表示扩展的双数组。
图1G表示扩展的线索。
图2表示本发明的字符串检索装置的原理。
图3A表示7位代码的一区域。
图3B表示8位代码的一区域。
图4表示分类方法A。
图5表示分类方法B。
图6表示分类方法C。
图7表示分类方法D。
图8表示分类方法E。
图9表示分类方法F。
图10表示分类方法G。
图11表示分类方法H。
图12表示字符间隔宽的情形。
图13表示在记录时字符串检索装置的配置。
图14表示前缀寄存器单元的记录内容的一例。
图15表示BASE的一例。
图16表示组αγ。
图17表示组β。
图18表示组γ。
图19表示每一组位移量的计算过程。
图20表示BASE’的一例。
图21是表示记录过程的流程图。
图22是表示分类过程的流程图。
图23表示在检索时字符串检索装置的配置。
图24是表示检索过程的流程图。
图25表示7位代码情形下的第二BASE数组。
图26表示8位代码情形下的第二BASE数组。
图27表示到CHECK数组的记录。
图28表示第一字符代码记录检索装置的配置。
图29是说明第一字符代码记录方法的流程图。
图30表示第二字符代码记录检索装置的配置。
图31是说明第二字符代码记录方法的流程图。
图32表示信息处理装置的配置。
图33表示存储介质。
以下参照附图详细说明本发明的实施例。
图2表示本发明的字符串检索装置的原理。图2中所示字符串检索装置包括第一数组单元1、第二数组单元2、第三数组单元3和检索单元4,并检索记录字符串之外给定的字符串。
数组单元1在等同于由多个字符跟随的前缀索引下标位置处记录对应于前缀的序号信息(一序列号码)。
在等同于对应于前缀的序号信息的下标位置处,数组单元2记录对应于通过对跟随前缀的多个字符分类获得的多个组的每一个的位移量。
在等同于位移量与跟随前缀的字符的内部表示值之和的下标位置处,数组单元3记录前缀的索引。
检索单元4使用数组单元1、2和3检索给定的字符串。
前缀意即字符串的前导部分,并通常由一个或多个字符组成。例如,图1E中,汉字“电”是前缀,并后跟多个汉字字符,“压”、“气”、“车”、“脑”和“话”。例如,前缀的索引对应于线索中结点的索引。例如,数组单元1对应于上述的BASE,并对数组单元2存储序号信息作为对应于前缀索引的记录值。
跟随前缀的多个字符按预定方法被分类,且数组单元2在等于记录在数组单元1中的序号信息的下标位置对每一组存储位移量。数组单元3例如对应于上述的CHECK,并在等于每一位移量与每一字符内部表示值之和的下标位置处存储前缀的索引。字符的内部表示值对应于字符代码值或者基于字符代码计算出的适当的值。
当给定的字符串包含上述的前缀并相继输入下一个字符时,检索单元4使用记录在数组单元1中的序号信息从数组单元2抽取对应于下一个字符所属的组的位移量。然后,它校验前缀的索引是否记录在数组单元3中等于抽取的位移量和下一个字符值之和的下标位置。
如果对应的前缀索引被记录,则下一个字符作为跟随前缀的字符被识别,而如果没有被记录,则判定下一个字符没有与前缀链接。这样,能够检验出给定的字符串是否记录在数组1、2或3中。
通过采用这种字符串检索装置,跟随前缀的字符能够分类为多个组,且向每一组指定一位移量。由于每一组中的字符数目小于跟随前缀的字符总数,故与所有字符一次被记录的情形比较,能够易于使用数组单元3中的空位。这样,字符能够以较低数目的位移量被记录,且能够抑制数组单元3的扩展。
如果跟随前缀的字符没有分类而被记录,则数组单元1在等于前缀索引的下标位置处记录所有字符公用的位移量,且数组单元3在等于位移量与每一字符值之和的下标位置记录前缀的索引。检索单元4判定记录在数组单元1中的值是序号信息还是位移量。如果该值是序号信息,则从数组单元2获得位移量并从而访问数组单元3,而如果该值是位移量则数组单元3直接被访问。
这样,当检索没有分类而被记录的字符时,处理步骤数目与使用双数组检索中相同,而当检索分类记录的字符时,只需增加到数组单元2的访问步骤。从而检索速度几乎没有损失。
在采用本发明的另一原理时,字符串检索装置包括记录单元和检索单元,并从记录字符串检索给定的字符串。记录单元把多个跟随前缀的字符分类为多个组并记录字符。检索单元使用记录单元检索给定的字符串。
通过采用这样的字符串检索装置,例如图2所示的字符串检索装置,能够有效地利用记录单元中的空间区域,并能够以保持的检索速度压缩记录字符串的数据结构。
例如,图2中所示的数组单元1、数组单元2和数组单元3分别对应于稍后所述图13中所示的BASE 52、BASE’55和CHECK62,且检索单元4对应于稍后所述的图23所示的文档输入单元71、判定单元72及校对单元73。
不论是汉语还是日语,作为汉字代码记录的JIS1级和2级汉字字符数目稍小于7,000。这些汉字中,用于产生成语的汉字数目是有限的。例如,即使是在汉语中,产生十个或更多种成语的频繁出现的汉字字符最多不超过500个。
然而,当这些频繁出现的汉字字符记录在词典中时,跟随线索结构上汉字的汉字字符越多,则一次在CHECK上现有的空位中记录索引汉字字符变得越困难,故CHECK的扩展是不可避免的。
这种情形下,本发明中进一步发展了传统的高速低容量词典双数组,并通过不同于双数组的方法记录/检索频繁出现的汉字字符。更具体来说,如果线索结构上跟随一定的汉字的汉字字符的数目很大,则汉字字符不以那些被保存的汉字字符之间相对位置关系记录在词典中,而是被分类为两个或多个组并对每一组进行记录,并还考虑到保持速度。
这种情形下,虽然保持了属于同一组的汉字字符之间的相对位置关系,但是不同组之间的位置关系不是总被保持,并为了判定输入的要被检索的汉字属于哪一组,需要一些另外的信息。然而,与大量汉字如同它们原来那样作为一组记录的情形相比,使用CHECK上现有的空位的可能性增加了。这样,能够抑制数组的扩展,并能够压缩词典的数据结构。而检索过程的步骤数几乎没有增加,从而保持了速度。
以下,说明本实施例中汉字字符的分类方法。图3A和3B表示诸如日文、中文等2字节字符代码空间中的字符代码的区域。这一代码空间对应于一个二维空间,数0到255以2字节字符的第一字节表示,且数0到255以2字节字符的第二字节表示,分别作为第一坐标和第二坐标。
图3A表示其中使用7位表示1字节的代码区域11,如日文的日文工业标准(JIS),中文的GB代码(7位代码)等等,且图3B表示其中使用8位表示1字节的代码区域12,如日文的扩展UNIX代码(EUC),中文的GB代码(8位代码)等等。在用作为这些代码基础的日文图形字符代码中汉字代码限制为94区(ku)×94点(ten),并能够表示出最多8,838个字符。
图4到图7表示通过把图3A所示的7位代码的区域11分开对2字节字符进行分类的方法。在图4、5、6和7中,口符号表示跟随一定的汉字的多个汉字字符的位置,且字符的第一和第二字节的第一位都为“0”。
根据图4中所示的分类方法A,区域11按第一字节的第二和第三位的值被分为三个区域21、22和23,且由口构成的汉字字符被分类为对应的三组。这里,对于第二和第三位都带有“01”的字符属于区域21,对于这两位都带有“10”的字符属于区域22,对于这两位都带有“11”的字符属于区域23。
根据图5中所示的分类方法B,区域11按第二字节的第二和第三位的值被分为三个区域24、25和26,且由口构成的汉字字符被分类为对应的三组。这里,对于第二和第三位都带有“01”的字符属于区域24,对于这两位都带有“10”的字符属于区域25,对于这两位都带有“11”的字符属于区域26。
根据图6中所示的分类方法C,区域11按第一和第二字节的第二位的值被分为四个区域27、28、29和30,且由口构成的汉字字符被分类为对应的四组。这里,对于第一字节的第二位和第二字节的第二位都带有“0”的字符属于区域27,对于第一字节的第二位带有“0”且对于第二字节的第二位带有“1”的字符属于区域28,对于第一字节的第二位带有“1”且对于第二字节的第二位带有“0”的字符属于区域29,对于这两位都带有“1”的字符属于区域30。
根据图7所示的分类方法D,区域11按第一和第二字节的第二和第三位的值被分为四个区域31、32、33、和34,且由口构成的汉字字符被分为对应的四组。
这里,在对于第一字节的第二和第三位带有“01”或“10”的字符中,对于第二字节的第二和第三位带有“01”或“10”的字符属于区域31,且对于第二字节的第二和第三位带有“11”的字符属于区域32。在对于第一字节的第二和第三位带有“11”的字符中,对于第二字节的第二和第三位带有“01”或“10”的字符属于区域33,且对于第二字节的第二和第三位带有“11”的字符属于区域34。
图8到11表示通过把图3B中所示8字节代码的区域12分为几个区域而对2字节字符分类的一个方法。在这些图8、9、10和11中,口符号指示跟随一定的汉字的多个汉字字符的位置,且字符的第一和第二字节的第一位都是“1”。
根据图8所示的分类方法E,如同图4所示的分类方法A那样,根据第一字节的第二和第三位的值区域12被分为三个区域35、36和37,且以口标记的汉字字符被分类为三个对应的组。
根据图9所示的分类方法F,如同图5所示的分类方法B那样,根据第二字节的第二和第三位的值区域12被分为三个区域38、39和40,且以口标记的汉字字符被分类为三个对应的组。
根据图10所示的分类方法G,如同图6所示的分类方法C那样,根据第一和第二字节的第二位的值,区域12被分为三个区域41、42、43和44,且以口标记的汉字字符被分类为四个对应的组。
根据图11所示的分类方法H,如同图7所示的分类方法D那样,根据第一和第二字节的第二和第三位的值,区域12被分为三个区域45、46、47和48,且以口标记的汉字字符被分类为四个对应的组。
这样,使用字符代码适当的位值,2字节字符能够被分类为几个组。虽然上述的任何方法可任意采用,但是希望使用能够把带有口的汉字字符尽可能均匀划分的分类方法。在以下的实施例中,使用上述的分类方法之一按字符代码的第二和第三位的值对跟随前缀的字符分类,并对每一获得的组计算位移量。这里,前缀意即一个词的前导部分,并通常由一个或多个字符组成。
这时,如果属于每一组的字符数狭窄地偏移,则字符几乎均匀地被分类。如果对每一组计算位移量时没有带有非常大字符数的组,则能够易于找到适当的目标。例如,当通过记录带有分类汉字字符,添加图1E中所示的五个汉字字符时,能够提高使用CHECK上空位置的可能性,从而能够抑制数组的扩展。
此外,即使当跟随字符的数目不大时,如果字符被分类并记录,则其内部表示值范围在预定阈值之外的字符的适当目标也能易于找到。这里,字符的内部表示值对应于字符代码的值或基于该值计算出的适当的值,并指示代码空间中字符之间的相对位置关系。例如,通过在图3A的区域11或图3B的区域12中提供基准点,基准点和对应于字符的位置之间的距离能够用作为内部表示值。
图12表示这种成语的例子。这里假设,当记录“烂漫”(盛开)和“烂熟”(过熟)这两个成语时,跟随“烂”(壮观)的“漫”(扩展)和“熟”(成熟)之间的内部表示值的差(宽度)相当大,且在CHECK上的空位置中不能容纳这些字符。这种情形下,传统的记录方法中,通过扩展CHECK记录这些字符,而在本发明的记录方法中,通过在不同的组中记录“漫”和“烂”能够使用CHECK上的空位置。
然而,如果跟随字符的数目小且跟随字符之间内部表示值的最大差小于阈值,则字符也能够象通常那样无需分类记录。
以下将说明在线索词典中记录字符所需的结构和过程。图13表示在记录时字符串检索装置的结构。图13所示的字符串检索装置包括频繁出现的汉字列表51、BASE数组52、前缀寄存器单元53、前缀选择器单元54、BASE’数组55、成语词典56、分类单元57、分类结果存储单元58、位移量计算器59、位移量存储单元60、记录位置计算器单元61、及CHECK数组62。
这些之中,频繁出现的汉字列表51、BASE数组52、前缀寄存器单元53、BASE’数组55、成语词典56、分类结果存储单元58、位移量存储单元60、及CHECK数组62对应于计算机的存储单元的特定区域或存储在那里的数字数据。前缀选择器单元54、分类单元57、位移量计算器59及记录位置计算器61对应于由程序描述的软件成分以处理这些数据,并存储在计算机的存储单元的特定程序代码部分。
频繁出现的汉字列表51是频繁在成语中使用的汉字字符的列表,而前缀选择器54选择带有包含在频繁出现的汉字列表51中的一个或多个汉字字符的前缀一定上限内的数字。如图12所示,除了频繁出现的汉字字符之外,前缀选择器54还选择带有跟随的字符之间宽间隔的前缀作为处理目标。
在参照记录被处理的成语的成语词典56的同时,分类单元57确定跟随选择的前缀的每一汉字字符的分类方法。然后,分类单元57根据分类方法对汉字字符进行分类,并在分类结果存储单元58存储分类结果。
当在前缀寄存器单元53记录由前缀选择器单元54选择的前缀的索引时,字符串检索装置形成有意义的记录位置序列号的值的范围,并指出用于对跟随每一前缀的汉字字符进行分类的分类方法。这就是说,根据分类方法使用不同的序列号值范围。
图14表示前缀寄存器单元53的记录内容的一例。这里,序列号1和2的位置对应于图4所示的分类方法A,并分别存储前缀W1和W2的索引。因而,发现跟随每一前缀的汉字字符已经按分类方法A分类。
序列号3和4的位置对应于图5所示的分类方法B,并分别存储前缀“大”和W3的索引。因而,发现跟随每一前缀的汉字字符已经按分类方法B分类。序列号5的位置对应于图6所示的分类方法C,并存储前缀W4的索引。因而,发现跟随该前缀的汉字字符已经按分类方法C分类。
这里,如果假设JIS代码的第一和第二字节分别为x和y,则使用区/点代码表示x和y如下。
x=(区代码)+32 (1)
y=(点代码)+32 (2)例如,由于“大”的区/点代码为(34,71),故JIS代码(x,y)=(66,103)。对应于JIS代码的内部表示值z定义如下。
z=((区代码)-1)*94+((点代码)-1)(3)这种情形下,“大”的内部表示值成为3,172。这里,线索的前缀对应于紧靠根结点的零阶上下文,并由于零阶上下文的索引与内部表示值一致,故记录在前缀寄存器单元53中的“大”的索引成为3,172。
在前缀寄存器单元53记录前缀之后,字符串检索装置在前缀寄存器单元53存储序列号,或在BASE52上具有前缀索引的位置存储对应的值作为下标。这样,在前缀寄存器单元53中每一前缀和序列号之间的对应关系,换言之每一前缀和分类方法之间的对应关系,记录在BASE52之中。
图15表示BASE的一例。BASE52根据前缀存储两类数值。如果跟随前缀的字符数小,且跟随前缀的字符之间的内部表示值的最大差小于一阈值,则不进行分类记录并存储传统的位移量。
另一方面,在前缀不是以上的情形下,存储对应于前缀寄存器单元53中的序列号的BASE’55中的序列号。这一例子中,BASE’55中的序列号I1和I2分别存储在对应于前缀“大”的索引3,172及另一前缀“不”的索引3,811的位置。
例如,对于BASE’55中的序列号,使用通过向BASE52的大小添加前缀寄存器单元53的序列号而获得的值,并在前缀“大”的情形下,I1=BASE52的大小+3。因而,如果BASE52是在1到64,000词的范围内建立的,则I1=64,003。
假设以“大”为前缀的九个两字符成语,“大王”(伟大的国王)、“大概”(大概)、“大圆”(大圆)、“大家”(地主)、“大河”(大河)、“大火”(大火)、“大学”(大学)、“大会”(大会)、及“大器”(实际才干的人)记录在成语词典56中。这种情形下,跟随“大”(大)的汉字字符,“王”(国王)、“概”(大概)、“圆”(圆)、“家”(家)、“河”(河)、“火”(火)、“学”(学,学校)、“会”(会议)、及“器”(才干)由图5所示的分类方法B被分类为如图16、17和18所示的三组。
在分类方法B中,汉字字符基于第二字节的第二和第三位的值被分类。图16的汉字字符“王”和“概”的第二和第三位都是“01”,故这些汉字字符被分类为组α。图17的汉字字符“圆”、“家”、“河”、“火”和“学”的第二和第三位都是“10”,故这些汉字字符被分类为组β。图18的汉字字符“会”和“器”的第二和第三位都是“11”,故这些汉字字符被分类为组γ。
这些组α、β、γ分别对应于图5的区域24、25和26,并作为分类结果存储在分类结果存储单元58中。图16、17和18中,每一汉字字符下面的所示的数字指示表达式(1)和(2)的JIS代码(x,y),和表达式(3)的内部表示值z。例如,图16所示汉字“王”的JIS代码是(50,38),而内部表示值为1,603。
位移量计算器单元59对每一组参照分类结果计算CHECK62上的最适当的位移量,并在位移量存储单元60存储该量。记录位置计算器单元61使用位移量计算属于每一组的汉字字符的记录位置,且字符串检索装置在CHECK62上获得的记录位置记录前缀的索引。
图19示出对图16、17和18中所示的每一组的位移量计算过程。这里,位移量是按组α、β和γ的顺序计算的。首先,位移量计算单元59在CHECK62上平行移动属于组α的两个汉字字符,“王”和“概”,搜索用于记录它们的位置,并计算对应的位移量d1。记录位置计算器61把每一汉字的内部表示值加到d1,并计算记录位置的下标。
然后,位移量计算单元59在CHECK62上平行移动属于组β的五个汉字字符,“圆”、“家”、“河”、“火”和“学”,搜索用于记录它们的位置,并计算对应的位移量d2。记录位置计算器61把每一汉字的内部表示值加到d2,并计算记录位置的下标。
然后,位移量计算单元59在CHECK62上平行移动属于组γ的五个汉字字符,“会”和“器”,搜索用于记录它们的位置,并计算对应的位移量d3。记录位置计算器61把每一汉字的内部表示值加到d3,并计算记录位置的下标。
然后,字符串检索装置在属于组α、β和γ的所有汉字字符的记录位置记录前缀索引“大”,3,172。对于其分类记录没有进行的前缀,位移量计算单元59计算对所有跟随的汉字字符公共的位移量,且记录位置计算器61把每一汉字的内部表示值加到位移量,并计算记录位置。通过对所有的前缀重复这样的过程,必须的汉字字符能够记录在CHECK62上。
然后,字符串检索装置在具有作为BASE’上的下标存储在BASE52中的序号的位置存储对应的前缀的每一组的位移量。对于其分类记录没有进行的前缀,字符串检索单元在对应于BASE52上前缀的索引的位置存储位移量。
图20示出BASE’55的一例。图20中所示的BASE’55指示基于类似于图14中所示的前缀寄存器单元53的下标值范围的分类方法,并对每一被分类的组存储唯一的位移量。例如,以上组α、β和γ的位移量d1、d2、d3分别存储在对应于图15中所示的汉字“大”的序号I1的位置,这表示这些组是通过分类方法B获得的。
这样,通过采用图13所示的配置,跟随前缀的汉字字符能够被分类为多个组,且对应于前缀的分类方法能够由数组下标的值的范围标识。然后,通过对每一组提供唯一的位移量并把这些组彼此重叠,则对每一汉字能够提供一个空记录位置。因而,与一定位移量提供给所有跟随前缀的汉字字符的情形比较,能够抑制CHECK62的扩展。
图21是表示图13中所示的字符串检索装置的记录过程的流程图。首先,前缀选择单元54根据来自用户的指令选择一个或多个前缀W。(步骤S1)。
例如,在10个或更多类成语中使用的大约500类汉字记录在频繁出现的汉字列表51中,且前缀选择器单元54在这些汉字字符之外选择被处理的汉字字符。前缀选择器单元54还选择在带有三个或更多字符的许多成语中使用的带有两个或更多字符的前缀。例如,在诸如“自由竞争”(自由竞争)、“自由主义”(自由主义)、“自由时间”(自由时间)等成语中,“自由”(自由)作为前缀被选择。此外,如果必要,还选择如图12中所示的跟随字符之间具有宽字符间距的前缀。然后,在前缀寄存器单元53中存储这些前缀的索引(内部表示值)。
然后,字符串检索装置输入来自包含被记录在线索词典的汉字字符的成语词典56的字符串(步骤S2),并参照前缀寄存器单元53判定在输入的字符串中关注的前缀是否为被选择的前缀W(步骤S3)。
如果前缀不是所选择的前缀W,则位移量计算器单元59对所有跟随前缀的汉字字符计算公共位移量(步骤S4),且字符串检索装置在对应于BASE52上的前缀的所有位置存储位移量(步骤S5)。然后,记录位置计算器61把每一汉字的内部表示值加到位移量并计算CHECK62上的记录位置。字符串检索装置在记录位置记录前缀的索引(步骤S6)并终止处理。
当在步骤S3中,从输入的字符串检索到前缀W时,字符串检索装置判断输入的字符串是否已经同所有的前缀比较过(步骤S7)。如果对所有的前缀W该处理没有完成,则分类单元57参照成语词典56基于代码值对跟随检测到的前缀的汉字字符分类(步骤S8)。这时,字符串检索装置确定对应于所采用的分类方法的序号,并基于该序号在前缀寄存器单元53重新存储前缀W的索引。
然后。字符串检索装置在分配给前缀的BASE’55中,在对应于BASE52上的前缀W的索引的位置存储一序号(步骤S9)。然后,通过把任意添加值加到属于一组的每一汉字字符的内部表示值、校验对应于每一所获得的添加结果的CHECK62上的位置、并计算添加值之外的最小值,其中所有的添加结果对应于CHECK62上的空位置且该组的所有汉字字符记录在空区域中,位移量计算器单元59对每一获得的组计算最适当的位移量(步骤S10)。且字符串检索装置在对应于存储在BASE52中的序号的位置,在BASE’55中存储获得的位移量(步骤S11)。
然后,当字符串检索装置重复步骤7与之后的处理,并完成输入字符串与所有前缀W的比较时,记录位置计算单元61把每一组的位移量加到每一汉字的内部表示值,并计算CHECK 62上的记录位置(步骤S6)。然后,字符串检索装置在记录位置记录前缀的索引,并终止处理。
通过对记录在成语词典56中的所有成语重复这样的过程,这些成语被记录在包含BASE52、BASE’55及CHECK62的线索词典中。这时,在步骤S6获得的记录位置用作为步骤S5和S9中的下一个前缀的索引。
图22是表示在图21中所示的步骤S8中执行的分类过程的流程图。这一例子中,图4、5、6、和7中,或图8、9、10和11中所示的四种分类方法用于给定的字符聚集体,计算属于获得的每一组的字符数,并选择这些数中偏差最小的分类方法。
首先,分类单元57比较跟随前缀W的字符数与预定的阈值(步骤S21),并如果数目等于或超过阈值,则分类单元57对这些字符分类。这一例子中,首先判断是否所有四个分类方法都被完成,(步骤S22),并如果它们没有完成,则分类单元57校验每一字符的第一和第二字节的第二和第三位的值,并根据特定的分类方法对字符进行分类(步骤S23)。
然后,分类单元57计算属于获得的每一组的字符数(步骤S24),并评估数目之中的偏差(步骤S25)。对于偏差的评估,可以使用基于字符数离差的统计处理。
如果对每一分类方法重复这样的过程并完成这四个方法,这时分类单元57选择其中数的偏差最小的分类方法(步骤S26)。然后,分类单元57根据选择的分类方法确定前缀寄存器单元53中的序号(步骤S27),输出通过该分类方法获得的每一组(步骤S28),输出前缀寄存器单元53中的序号(步骤S29),并终止处理。
如果步骤21中,跟随前缀W的字符数小于阀值,则分类单元57将这些字符之间的内部表示值的最大差值与预定阈值进行比较(步骤S30)。如果最大差值等于或超过阈值,则分类单元57对这些字符分类执行步骤S22及之后的处理。如果最大差值小于阈值,则分类单元57不进行分类并终止处理。
在步骤S29输出的前缀寄存器单元53中的序号指示了所采用的分类方法,该序号在图21所示的步骤S29中被转换为BASE’55中的序号,并存储在BASE52中。这样,所采用的分类方法的信息存储在BASE52中,并当在线索词典中检索未知的输入字符串时使用。
虽然在这里使用图4到11所示的分类方法,一般来说,除了这些方法之外的任何其它分类方法也可使用,且目的用于评估偏差的分类方法不限于这四个方法。分类方法还可由用户为每一前缀来指定。
以下对通过使用上述所产生的线索词典来进行检索的配置和检索字符串的处理进行描述。
图23表示在检索时字符串检索装置的配置。图23所示的字符串检索装置包括BASE数组52、BASE'数组55、分类单元57、位移量存储单元60记录位置计算器单元61和图13所示的CHECK数组62、文档输入单元71、判断单元72、及校对单元73。
文档输入单元71、判断单元72和校对单元73对应于由程序描述的软件成分,并存储在计算机存储单元的特定程序代码部分。
文档输入单元71从给定的文档逐一输入字符。判断单元72抽取对应于要被处理的前缀索引的记录值,并判断记录值指示的是序号还是位移量。如果跟随前缀的字符被分类并记录,则记录值对应于序号,如果不是这样,则记录值对应于位移量。
如果记录值是序号,则分类单元57根据对应的分类方法对输入的字符进行分类。字符串检索单元从BASE’55基于序号抽取对应于输入字符组的位移量,并在位移量存储单元60存储该位移量。如果记录值是位移量,则字符串检索装置在位移量存储单元60存储该位移量。
然后,记录位置计算器61从位移量存储单元60抽取位移量,把输入字符的内部表示值添加到该位移量,并计算CHECK62上的记录位置。然后,校对单元73以前缀的索引校对记录在该位置的数值,并根据校对的结果建立新的前缀。
通过重复这样的过程,使用线索词典的字符逐一校对文档中的字符,并按顺序抽取记录在词典中的词。这时,参照BASE52中的记录值识别分类和分类方法的存在/不存在,并参照BASE’55能够获得每一组的位移量。
图24是表示图23中所示的字符串检索装置的检索过程的流程图。首先,字符串检索装置建立对应于线索的根结点的“#”作为前缀(步骤S31),且文档输入单元71输入要被处理的来自由用户输入的文档的字符(步骤S32)。
然后,判断单元72从对应于BASE52上前缀W的索引位置抽取数值(步骤S33),并判断该数值指示的是序号还是位移量(步骤S34)。如果从BASE52抽取的数值等于或小于BASE52的大小,则该数值被当作位移量,而如果该数值超过BASE52的大小,则该数值被看当作序号。
如果该数值是序号,则分类单元57从该数值识别分类方法,根据对应的分类方法对输入字符的代码值进行分类,并计算输入字符所属的组(步骤S35)。然后,字符串检索装置从对应于前缀W的序号和BASE’55上输入字符的组的位置抽取位移量,并在位移量存储单元60中存储该位移量(步骤S36)。
然后,记录位置计算器单元61把输入字符的内部表示值加到获得的位移量上,并计算CHECK62上的记录位置。字符串检索装置从该位置抽取数值(步骤S37)。如果在步骤S34中,该数值是位移量,则字符串检索装置在位移量存储单元60按原来状态存储该位移量(步骤S38),并执行步骤S37的处理。
然后,校对单元73以前缀W的索引校对从CHECK62抽取数值,以该数值作为关键字(步骤S39)。如果该数值与前缀索引一致,则认为通过组合前缀W和输入的字符而获得的字符串记录在线索词典中,并为新的前缀W建立字符串以校验进一步的字符串是否已被记录(步骤S40)。
如果CHECK62上的数值与前缀W的索引不一致,则认为通过组合前缀W和输入的字符而获得的字符串没有记录在线索词典中,并只把输入字符设置为前缀W(步骤S41)。这样,输入字符成为下一个词的前导字符。
然后,文档输入单元71判断字符的输入是否完成(步骤S42),并当留下了下一个字符时,文档输入单元71重复步骤S32及以后的过程。如果没有字符留下,则文档输入单元71终止处理。
当在步骤S32,输入第一个字符时,前缀W为“#”,在步骤S40中,为前缀W自动建立输入字符,并输入下一个字符。如果前缀W是带有一个字符的汉字,且输入的字符也是汉字,则有可能前缀和输入的字符形成两字符的成语。
例如,如果当前缀W是“大”时,输入汉字“王”,则判断单元72从对应于“大”的索引的位置抽取记录值I1,即在图15所示的BASE52上的3,172(步骤S33)。在这例子中发现,I1大于BASE52的大小,并指示了图20所示的BASE’55的序号。
此外,发现I1对应于分类方法B,并于是分类方法57检验输入汉字“王”的第二字节的第二和第三位,并根据分类方法B对输入汉字进行分类(步骤S35)。结果发现,这一汉字属于图16中所示的组α。
然后,字符串检索装置从对应于图20所示BASE’55上序号I1和组α的两者位置抽取位移量d1(步骤S36)。记录位置计算器单元61把输入字符“王”的内部表示值1,603加到位移量d1,并计算图19所示的CHECK62上的记录位置(步骤S37)。然后,校对单元73比较记录在该位置的数据与“大”的索引3,172(步骤S39)。
在这个例子中,由于“大”的索引3,172记录在对应于输入的汉字“王”的记录位置,发现成语“大王”记录在线索词典中。然后,为新的前缀W建立“大王”(步骤S40),并检验是否记录了较长的字符串。
当输入跟随前缀“大”的另一汉字“概”、“圆”、“家”、“河”、“火”、“学”、“会”或“器”时,按相同的方式识别两字符成语,并为新的前缀W建立成语。当前缀W是带有多于两个字符的汉字时,进行相同的字符串检索。
这里,考虑BASE和CHECK数的大小为64,000、BASE’的序号数为500及组的最大数为4的情形。这时,如果存储在BASE’中的每一位移量为一个词,则BASE’必需的存储容量为2,000词,这只是BASE和CHECK整个存储量的1/64。另一方面,当在传统的记录方法中BASE和CHECK都被扩展时,估计必需存储量的增加将大得多。
然而,通过采用本发明的分类记录,不能由传统方法占用的空间区域能够被有效地占用,并能够适当抑制双数组存储量的增加。此外,在检索时,只有当字符被分类并记录、只有添加参照BASE’这一步骤、且整个过程的步骤数保持相同时,使用双数组检索的高速度才几乎不会降低。
以下,说明本发明的字符代码记录检索装置。
如图15的BASE数组配置中所示,字符代码记录检索装置中,在BASE数组中输入两类值。一类值是传统的平行位移量d,且这适用于不频繁使用的汉字代码(带有低使用频率的)。另一方面,对于频繁出现的汉字,记录不同于那些值的代码I1和I2。这些值I1和I2对应于第二BASE数组的水平方向的下标(序号)。
以下,图25和26表示第二BASE数组的例子。图25中,基于代码值把图3A中所示的区域11分为三个块,且汉字代码分类为三组α1、β1和γ1。图26中,基于代码值图3B中所示的区域12也分为三块,且汉字代码分类为三组α2、β2和γ2。
这样,当确定了第二BASE数组的下标时,根据代码值跟随频繁出现的汉字代码的字符分类为三组,对每一组提供唯一的平行位移量。
即,如图27的CHECK数组设置中所示,通过基于跟随相同字符(即父结点)的字符代码(即子结点)的代码值(范围,诸如7位代码或8位代码)提供唯一平行位移量d1、d2、d3并使各组在CHECK上彼此重叠,为每一汉字代码能够提供空记录位置。
换言之,对跟随相同字符“大”(父结点)的汉字代码“圆”、“王”、“家”、“火”、“会”、“河”、“概”、“学”、和“器”(子结点)基于代码值提供CHECK数组上唯一的平行位移量d1或d2。
更具体来说,对跟随父结点“大”的每一汉字代码“圆”、“王”、“家”、“火”、“河”的子结点提供CHECK数组上的平行位移量d1,因为这些代码包含在8k到16K中。同样地,为跟随父结点“大”的汉字代码“会”、“概”、“学”、和“器”的每一子结点提供CHECK数组上的平行位移量d2,因为这些代码包含在16k到24K中。这样,通过使跟随相同字符“大”(父结点)的汉字代码“圆”、“王”、“家”、“火”、“会”、“河”、“概”、“学”、和“器”(子结点)在CHECK数组上彼此重叠,能够对每一汉字代码提供空记录位置。
这样,与为CHECK数组上每一汉字代码一致地提供平行位移量的传统的情形比较,能够抑制CHECK数组的增加,从而能够改进双数组的空间效率。
图28示出本发明字符代码记录检索装置的第一实施例的配置。
图28所示的字符代码记录检索装置,使用在作为数据结构一维数组的双数组配置中的关键字,记录诸如要被检索的汉字代码的字符串,并从而检索这些字符串。该字符代码记录检索装置包括列表单元101、频繁出现字符代码存储单元103、频繁出现字符代码选择器单元104、词典单元106、组存储单元108、第一BASE数组单元102(第一数组)、代码分类单元107、平行位移量计算器单元109、平行位移量存储单元110、关键字候选点计算器单元111、第二BASE数组单元105(第二数组)、及CHECK数组单元112(第三数组)。这些组件的每一个是通过使用微处理器编程实现的。
列表单元101产生在成语中频繁使用的汉字代码的列表,并输出从汉字代码列表中选择的选择字符代码101a。
频繁出现的字符代码选择器单元104输出频率阈值,该闽值是关于应当选择到何种汉字代码的频率等级数。
频繁出现字符代码存储单元103存储由列表单元101选择的频繁出现的字符代码,并输出所选择的频繁出现的字符代码103a及选择的频繁出现字符代码的索引103c。
词典单元106是记录由汉字代码组成的成语的字符代码词典,并基于关注的字符是否为根据所选择的汉字代码成语的前缀对作业进行分类,并输出通过对跟随前缀中频繁出现的字符代码的汉字代码进行分类所获得的每一组106a。如果关注的字符不是这种前缀,则词典单元106输出跟随所关注的字符的一组汉字106b。
组存储单元108存储通过对词典单元106输入的前缀中跟随频繁出现的汉字代码的汉字代码分类而获得的组106a。
第一BASE数组单元102计算所选择的字符代码101a的序号103b,并同时在对应于在第一BASE数组上的汉字代码的索引103c的位置存储组合103b。
代码分类单元107使用汉字代码的几位对成语的第二汉字代码进行分类,以便对跟随前缀中频繁出现的汉字代码的字符进行分类。
平行位移量计算器单元109计算最小平行位移量109a,使得对通过组存储单元108输出的每一组108a,通过向同一组108a的每一汉字代码的代码值添加任意平行位移量109a获得的所有值可以指示CHECK数组上的空位置。对于汉字代码组106a,平行位移量计算器单元109计算对应的平行位移量109a。
平行位移量存储单元110在对应于作为平行位移量110a的第一BASE数组单元102的前缀索引的下标位置,存储从平行位移量计算器单元109输入的平行位移量109a。
关键字候选点计算器单元111,在CHECK数组上对应于从平行位移量存储单元110输入的平行位移量110a与组的每一汉字代码的内部表示值之和111a的一个下标位置,对每一组记录作为同一组的汉字代码父辈的前缀索引,并指定这个和的值为由((前缀)+(关注的字符))组成的下一个前缀的索引。
第二BASE数组105,基于从代码分类单元107输入的代码值107a和从列表单元101输入的序号103b这两者,存储通过平行位移量存储单元110输出的每一组的平行位移量110a。
CHECK数组单元112在CHECK数组上对应于由关键字候选点计算器单元111计算的和111a的一个位置记录从词典单元106输入的前缀106c的索引。
如上所述,在图28中所示的字符代码记录检索装置中,作为通过进一步发展作为传统的高速和低容量词典数据的一维数组的双数组结构而获得的一种新的数据结构,引入一种新的数据结构,该数据结构具有用于在CHECK数组上对应于平行位移量110a和每一汉字代码内部表示值之和的一个位置记录前缀的索引106c的CHECK数组单元112,用于计算所选择的汉字代码101a的序号103b并同时在第一BASE数组上的汉字代码的索引103c中存储序号103b的第一BASE数组单元102,以及用于基于从代码分类单元107输入的代码值107a和从列表单元101输入的序号103b这两者,存储由平行位移量存储单元110输出的每一组的平行位移量110a的第二BASE数组105,通过产生两类记录在第一BASE数组中的值,并把一个值作为传统的平行位移量的用于不频繁使用的汉字代码(具有低使用频率),而另一值作为第二BASE数组的下标之一用于频繁出现的汉字代码,并通过根据跟随频繁出现的汉字代码的字符的代码值把跟随第二BASE数组下标中的前缀字符分类为三类,并对每一类提供唯一的平行位移量,能够对每一汉字代码提供空记录位置,使得作为汉字代码在CHECK数组上彼此重叠。结果是,所有作为关键字的汉字代码能够以被抑制到最低可能水平的CHECK数组的扩展一次记录到CHECK数组上的空间中,所有的汉字代码还能够以跟随所保持的一定的汉字代码的汉字代码之间的相对位置关系并以抑制到最低可能水平的CHECK数组的扩展被记录,并进而,能够尽可能避免空间区域的出现。这样,能够产生由已知作为检索目标的关键字组成的存储准静态关键字集合体的词典,并能够把后来可通过适当添加和记录关键字而被扩展的线索数组结构的存储器容量极小化。
图29是表示汉字代码记录的一个优选实施例的流程图,该实施例使用了在图28中所示的字符代码记录检索装置中实现的字符代码记录检索方法。
图29所示的字符代码记录检索方法的优选实施例是以图28中所示的字符代码记录检索装置实现的,并在逻辑上包括包含列表步骤的步骤ST2、频繁出现的字符代码选择步骤和频繁出现的字符代码存储步骤、词典步骤(步骤ST3)、分类结果存储步骤(步骤ST9)、第一BASE数组步骤(第一数组步骤)(步骤ST6和ST11)/代码分类步骤(步骤ST7)、平行位移量计算步骤(步骤ST8和ST10)、平行位移量存储步骤(步骤ST8、ST10和ST11)、关键字候选点计算步骤(步骤ST9和ST12)、第二BASE数组步骤(第二数组步骤)(步骤ST9)及CHECK数组步骤(第三数组步骤)(步骤ST12),这些步骤使用适用于字符代码记录检索装置的程序代码描述。
列表步骤(步骤ST2)产生频繁在成语中使用的汉字代码的列表并输出从汉字代码列表中选择的汉字代码101a,这是由列表单元101主要执行的步骤。
频繁出现的字符代码选择步骤(步骤ST2)输出关于应当选择什么级别数的汉字代码的频繁度阈值,这是由频繁出现的字符代码选择器单元104主要执行的步骤。
频繁出现的字符代码存储步骤(步骤ST2)存储在列表步骤(步骤ST2)选择的频繁出现的汉字代码,并输出所选择的频繁出现的字符代码103a及选择的频繁出现的字符代码的索引103c,这是由频繁出现的字符代码存储单元103主要执行的步骤。
词典步骤(步骤ST3)是记录汉字代码组成的成语的字符代码词典,它基于选择的汉字代码根据关注的字符是否为成语的前缀对作业进行分类,并输出通过对跟随前缀中频繁出现的汉字代码的汉字代码的分类获得的组106a,这是由词典单元106主要执行的步骤。
分类结果存储步骤(步骤ST9)存储由词典步骤(步骤ST3)产生的跟随前缀中频繁出现的汉字代码的汉字代码的分类获得的组106a,这是由组存储单元108主要执行的步骤。
第一BASE数组步骤(步骤ST6和ST11)计算选择的字符代码101a的序号103b,并同时在第一BASE数组上的汉字代码的索引103c中存储该序号,这是由第一BASE数组单元102主要执行的步骤。
代码分步骤(步骤ST7)使用汉字代码的几个位对成语的第二汉字代码进行分类,以便对跟随前缀中频繁出现的汉字代码的字符进行分类,这是由代码分类单元107主要执行的步骤。
平行位移量计算步骤(步骤ST8和ST10)计算最小平行位移量109a,于是通过把任意平行位移量109a添加到每一汉字代码的内部表示值而获得的每一值可以指示CHECK数组上的空位,这是由平行位移量计算器单元109主要执行的步骤。
平行位移量存储步骤(步骤ST8、ST10和ST11),在对应于第一BASE数组单元102的前缀索引的下标位置作为平行位移量110a,存储在平行位移量计算步骤(步骤ST8和ST10)产生的平行位移量109a,这是由平行位移量存储单元110主要执行的步骤。
关键字候选点计算步骤(步骤ST9和ST12),在CHECK数组上对应于在平行位移量存储步骤(步骤ST8、ST10和ST11)输入的平行位移量与组的每一汉字代码的内部表示值之和的一个下标位置,记录作为组的汉字代码的父辈的前缀索引,并指定这个和的值作为由((前缀)+(关注的字符))组成的下一个前缀的索引,这是由关键字候选点计算单元111主要执行的步骤。
第二BASE数组步骤(步骤ST9),基于在分类步骤(步骤ST7)产生的代码值107a和在列表步骤(步骤ST2)产生的序号103b两者,存储在平行位移量存储步骤(步骤ST8、ST10和ST11)输出的每一组的平行位移量110a,这是由第二BASE数组单元105主要执行的步骤。
CHECK数组步骤(步骤ST12)在CHECK数组上对应于关键字候选点计算步骤中计算的和111a的一位置记录前缀106c的索引,这是由CHECK数组单元112主要执行的步骤。
如上所述,在图29所示的字符代码记录检索方法的优选实施例中,作为通过进一步发展作为传统的高速和低容量词典数据结构的一维数组的双数组结构而获得的一种新的数据结构,引入一种新的数据结构,该数据结构是通过执行以下步骤产生的在CHECK数组上对应于平行位移量110a和每一汉字代码内部表示值之和的一个位置记录前缀的索引106c的CHECK数组步骤(步骤ST12),计算所选择的汉字代码101a的序号103b并同时在第一BASE数组上的汉字代码的索引103c中存储序号的第一BASE数组步骤(步骤ST6和ST11),以及存储在平行位移量存储步骤(步骤ST8、ST10和ST11)输出的每一组的平行位移量110a的第二BASE数组步骤(步骤ST9),并通过指定两类记录在BASE数组中的值,并把一个值作为传统的平行位移量的用于不频繁使用的汉字代码值(具有低使用频率),而另一值作为第二BASE数组的下标之一用于频繁出现的汉字代码,并通过基于跟随频繁出现的汉字代码的字符的代码值把第二BASE数组下标中的字符分类为三类,并对每一类提供唯一的平行位移量,能够对每一汉字代码提供在CHECK数组上的空记录位置。结果是,所有作为关键字的汉字代码能够以被抑制到最低可能水平的CHECK数组的扩展一次记录到CHECK数组上的空间中,所有的汉字代码还能够以跟随所保持的一定的汉字代码的汉字代码之间的相对位置关系并以抑制到最低可能水平的CHECK数组的扩展被记录,并进而,能够尽可能避免空间区域的出现。这样,能够产生由已知作为检索目标的关键字组成的存储准静态关键字集合体的词典,并从而能够把后来可通过适当添加和记录关键字而被扩展的线索数组结构的存储器容量极小化。
图30示出本发明字符代码记录检索装置的第二实施例的配置。
图30所示的字符代码记录检索装置,在作为一维数据结构数组的双数组结构中,记录诸如使用关键字被检索的汉字代码字符串,并从而检索字符串。该字符代码记录检索装置主要包括文档输入单元201、第一BASE数组单元102、记录值判断单元202、代码分类单元107、第二BASE数组单元105、平行位移量存储单元110、关键字候选点计算器单元111、CHECK数组单元112及关键字/前缀校对单元203。每一执行部分是使用微型计算机通过编程实现的。
文档输入单元201对前缀指定线索结构的根,同时在前缀W作为终结符号建立终结标记#,然后指令输入作为被检索的字符的汉字代码b,并检测输入的汉字代码b的前缀W。
文档输入单元201输出前缀W或汉字代码的索引201a,从第一BASE数组上对应的位置抽取数值102a,并在记录判断单元202输入数值102a。
记录值判断单元202判断从第一BASE指令单元102输入的数值102a是频繁出现的前缀字符代码的序号还是平行位移量。如果数值102a在组成线索的索引范围之外,则记录值判断单元202作为频繁出现的字符代码的序号202a输出这一数值102a,并如果从第一BASE指令第一102输入的数值102a在索引范围之内,则它作为平行位移量202b输出数值102a。
如果输出频繁出现的前缀字符代码的序号202a,则代码分类单元107使用汉字代码的几位对跟随这一前导汉字的汉字代码b进行分类。
第二BASE指令单元105在第二BASE指令上,从对应于由记录值判断单元202输出的频繁出现的字符代码序号202a的位置和汉字代码b的代码值的组,输出平行位移量105a。
平行位移量存储单元110存储从记录值判断单元202输出的平行位移量202b或从第二BASE指令单元105输出的平行位移量105a,并作为平行位移量110a输出平行位移量202b或105a。
关键字候选点计算器单元111计算并输出平行位移量110a与跟随字符b的内部表示值之和111a。
CHECK数组单元112在对应于从关键字候选点计算器单元111输出的和111a的位置抽取一数值作为CHECK数组上的一个关键字,并向关键字/前缀校对单元203输入该数值。
关键字/前缀校对单元203判断由CHECK数组单元112输入的关键字是否与前缀字符内部表示值的索引201a或前缀W一致,如果输入的关键字与前缀字符内部表示值的索引201a或前缀W一致,则判断成语记录在词典中。
如上所述,在图30中所示的字符代码记录检索装置中,作为通过进一步发展传统的高速和低容量词典数据的一维数组的双数组结构而获得的一种新的数据结构,引入一种新的数据结构,该数据结构具有用于从对应于关键字候选点计算器单元111输出的和的位置抽取关键字的CHECK数组单元112,用于从对应于前缀W的索引201a的一位置输出一数值102的第一BASE数组单元102,以及用于从对应于由记录值判断单元202输出的频繁出现的字符代码的序号202a与汉字代码b的代码值的分类这两者的一位置输出平行位移量105a的第二BASE数组105,能够产生存储作为检索目标的预定的准静态关键字集合体的词典,并能够把后来可通过适当添加和记录关键字而被扩展的线索数组结构的存储器容量一致到最低可能的水平。结果是,能够以最小存储容量在作为数据结构一维数组的双数组结构中(即线索数组结构)存储关键字,且通过使用作为检索关键字这一线索结构能够以高速进行模式匹配。
图31是说明使用由图30所示的字符代码记录检索装置实现的字符代码记录检索方法的一优选实施例的流程图。
图31的字符代码记录检索方法是由图30所示的字符代码记录检索装置实现的。该字符代码记录检索方法主要包括文档输入步骤(步骤P2和P3)、第一BASE数组步骤(步骤P4)、记录值判断步骤(步骤P5)、代码分类步骤(步骤P6)、第二BASE数组步骤(步骤P7)、平行位移量存储步骤(步骤P7和P8)、关键字候选点计算步骤(步骤P9)、CHECK数组步骤(步骤P9)及关键字/前缀校对步骤(步骤P10、P11和P12)。这些步骤的每一个是使用微处理器通过编程实现的。
文档输入步骤(步骤P2和P3)首先对前缀指定线索结构的根,同时在前缀W作为终结符号建立终结标记#,并然后指令输入作为要被计算的字符的汉字代码b,并检测输入的汉字代码b的前缀W,这是由文档输入单元210主要执行的步骤。
第一BASE数组步骤(步骤P4)在BASE数组上从对应于前缀W的索引201a或汉字内部表示值的位置抽取数字102a,这是由第一BASE数组单元102主要执行的步骤。
记录值判断步骤(步骤P5)判断在第一BASE数组步骤(步骤P4)中产生的数值102a是频繁出现的前缀字符代码还是平行位移量。如果给定的数值102a在组成线索的索引范围之外,则它输出这一数值102a作为频繁出现的字符代码的序号202a,并如果在第一BASE数组步骤(步骤P4)中产生的数值102a在索引范围之内,则它输出数值102a作为平行位移量202b,这是由记录值判断单元202主要执行的步骤。
如果在第一BASE数组步骤(步骤P4)抽取的数值102a是频繁出现的字符代码的序号202a,则代码分类步骤(步骤P6)使用汉字代码的几个位对跟随这一前导汉字的汉字代码进行分类,这是由代码分类单元107主要执行的步骤,以便对跟随前缀中频繁出现的汉字代码的字符进行分类。
第二BASE数组步骤(步骤P7)从第二BASE数组上对应于在记录值判断步骤(步骤P5)中产生的频繁出现的字符代码的序号202a和汉字代码b的代码值的分类这两者的一个位置,抽取一平行位移量105a,并在平行位移量存储单元110存储该平行位移量105a,这是由第二BASE数组单元105主要执行的步骤。
平行位移量存储步骤(步骤P8和P8)存储在记录值判断步骤获得的平行位移量202b或者在第二BASE数组步骤获得的平行位移量105a,并作为平行位移量110a输出平行位移量202b或平行位移量105a,这是由平行位移量存储单元110主要执行的步骤。
关键字候选点计算步骤(步骤P9),计算并输出在CHECK数组上的平行位移量110a和跟随字符b的内部表示值之和,这是由关键字候选点计算单元111主要执行的步骤。
CHECK数组步骤(步骤P9)在CHECK数组上对应于在关键字候选点计算步骤中输出的和111a的一位置抽取一数值作为关键字,并向关键字/前缀校对步骤输入该数值,这是由CHECK数组单元112主要执行的步骤。
关键字/校对步骤(步骤P10、P11和P12)判断在CHECK数组步骤(步骤P9)产生的关键字是否与前缀字符内部表示值的索引201a或者前缀W一致,并如果该关键字与前缀字符内部表示值的索引201a或者前缀W一致,则判断该成语记录在词典中,这是由关键字/前缀校对单元203主要执行的步骤。
如上所述,在图31所示的字符代码记录检索方法的优选实施例中,作为通过进一步发展传统的高速和低容量词典数据结构的一维数组的双数组结构而获得的一种新的数据结构,引入一种新的数据结构,该数据结构具有以下步骤从对应于关键字候选点计算步骤(步骤P9)中输出的和111a的一个位置抽取一关键字的CHECK数组步骤(步骤P9),从对应于前缀W或汉字代码的索引201a的一个位置输出数值102a的第一BASE数组步骤(步骤P4),以及从对应于在记录值判断步骤(步骤P5)中输出的频繁出现的字符代码的序号202a及汉字代码b代码值的分类两者的一个位置输出平行位移量105a的第二BASE数组步骤(步骤P7),能够产生存储作为检索目标的预定准静态关键字集合体的词典,并从而能够把后来通过适当添加和记录关键字而被扩展的线索数组结构的存储器容量抑制到可能的最低水平。结果是,能够把关键字存储在一种带有最小存储容量的数据结构的一维数组的双数组结构(即线索数组结构)中,且使用这一线索数组结构作为检索关键字能够以高速进行模式匹配。
除了图29和31所示的字符代码记录检索方法之外,当跟随字符串的前缀的特定字符是成语的一部分时,如图12所示,还能够添加选择其中跟随汉字代码的代码值的宽度超过预定的阈值的字符的步骤。
这样,不能由传统方法占用的空位能够被更多地占用,并能够适当地抑制在第一BASE数组步骤(步骤ST6和ST11)中产生的第一BASE数组以及在CHECK数组步骤(步骤ST12)中产生的CHECK数组的增加。此外,由于检索时的过程数目只增加对应于第二BASE数组步骤(步骤P7)的这一个过程,故过程数几乎与传统方法相同。
如上所述,本发明中,如果假设原始的BASE和CHECK数组的大小都是64KW,选择的汉字代码的大小为0.5KW,且分类数为三,第二BASE数组的大小成为1.5(=0.5×3)KW。这只是原始的BASE和CHECK数组大小的1/64。另一方面,由传统方法使BASE和CHECK数组大小的增加是未知的。然而,很清楚的是不能由传统方法占用的空位是能够由本发明占用的,且BASE和CHECK数组的增加被适当地抑制。此外,由于本发明中参照第二BASE数组,本发明的过程频率只增加一并几乎与传统方法相同。
虽然以上所述的本实施例中,带有两个或更多字符的汉字成语是分类记录的目标,同样地,任意的字符串,包括平假名、片假名、字母数字字符等等都能够被分类和记录。此外,字符串的语言不限于日语和汉语,而是任意语言,包括其它亚洲语言如朝鲜语等及西方语言,诸如英语、德语、法语等也能够使用。能够对任意字符代码和任意代码使用。
顺便来说,图13和23所示的字符串检索装置,和图28及30所示的字符代码记录检索装置也可以使用图32所示的信息处理装置(计算机)配置。图32所示的信息处理装置包括中央处理器(CPU)301、存储器302、输入装置303、输出装置304、外部存储装置305、介质驱动装置306和网络连接装置307,它们通过总线308彼此连接。
例如存储器302包括只读存储器(ROM)、随机访问存储器(RAM)等,并存储供处理使用的程序和数据。CPU301使用存储器302运行程序而执行必要的过程。
例如输入装置303包括键盘、指点装置、触摸板等,并用来从用户输入指令和数据。例如输出装置304包括显示器、打印机等。并用来向用户输出询问、过程结果等。
例如外部存储装置305包括磁盘、光盘、磁光盘等。该外部存储装置305存储以上的程序和数据,介质驱动装置306驱动便携式存储介质309,并访问记录的内容。便携式存储介质309包括任何计算机可读的存储介质,诸如存储卡、软盘、小型盘只读存储器(CD-ROM)、光盘、磁光盘等。这种便携式存储介质309存储以上程序和数据,必要时它们也可加载到存储器302并使用。
网络连接装置307通过任意的网络(线路)与外部设备通信,诸如局域网(LAN)等,并伴随通信交换数据。这一网络还能够从外部设备接收以上的程序和数据,必要时它们也可加载到存储器302并使用。
图33示出能够向图32所示的信息处理装置提供程序和数据的计算机可读存储介质。存储在便携式存储介质309和外部数据库310中的程序和数据可加载到存储器302中。然后,CPU301使用该数据通过运行程序执行必要的过程。
如果采用本发明,能够使用线索词典的空间区域有效地记录诸如汉字成语等字符串,并能够压缩词典的数据结构。基于带有双数组线索词典也能够在不损失检索速度之下降低词典的存储量。
权利要求
1.一种用于从记录串中检索给定串的串检索装置,包括第一数组装置,用于用以后跟多个字符的前缀的索引作为下标记录对应于前缀的序号信息;第二数组装置,用于以对应于前缀的序号信息作为下标记录对应于通过对跟随前缀的多个字符分类而获得的多个组的每一个的位移量;第三数组装置,用于以位移量与跟随前缀的字符的内部表示值之和作为下标记录前缀的索引;检索装置,用于使用第一、第二和第三数组装置检索给定的串。
2.根据权利要求1的串检索装置,其中当跟随一个前缀的一个或多个字符不分类而被记录时,所述第一数组装置,在等同于由一个或多个字符跟随的前缀的索引的下标位置,记录一个或多个字符共同的位移量,所述第三数组装置,在等同于一个或多个字符共同的位移量与一个字符的内部表示值之和的下标位置,记录由一个或多个字符跟随的前缀的索引,以及所述检索装置包括用于判定序号信息或位移量的哪一个是记录在第一数组装置中的值的识别装置。
3.根据权利要求1的串检索装置,其中当多个跟随前缀的字符数目超过预定值时,所述第一数组装置记录对应于前缀的序号信息。
4.根据权利要求1的串检索装置,其中当多个跟随前缀的字符的值的范围超过预定值时,所述第一数组装置记录对应于前缀的序号信息。
5.根据权利要求1的串检索装置,还包括前缀记录装置,用于以对应于所述第二数组装置的下标的序号信息作为下标记录前缀。
6.根据权利要求1的串检索装置,还包括用于使位移量与跟随前缀的字符内部表示值相加的计算装置,其中所述第三数组装置使用位移量与跟随前缀的字符内部表示值之和作为下一个前缀的索引。
7.根据权利要求1的串检索装置,进一步包括用于对跟随前缀的多个字符进行分类并计算多个组的分类装置。
8.根据权利要求7的串检索装置,其中当给定串包含前缀且下一个字符跟随前缀输入时,所述分类装置计算对应于下一个字符的组,且所述检索装置使用记录在所述第一数组装置中的序号信息从所述第二数组抽取对应于下一个字符的组的位移量,并校验前缀的索引是否记录在所述第三数组装置的位置中,在该位置中所抽取的位移量和下一个字符的内部表示值之和被指定为下标。
9.根据权利要求7的串检索装置,其中所述分类装置使用包含在跟随前缀多个字符的代码中的一个或多个位对跟随前缀的多个字符进行分类。
10.根据权利要求7的串检索装置,其中所述分类装置采用两个或多个分类方法中的一个分类方法,该方法可使包含在获得的每一组的字符中数码的偏差为最小。
11.根据权利要求10的串检索装置,其中所述第一数组装置记录对应于由所述分类装置采用的分类方法的序号信息作为对应于前缀的序号信息。
12.根据权利要求1的串检索装置,还包括用于计算位移量的计算装置,以便对应于多个组中的每一个记录包含在所述第一和第三数组装置中的多个组的每一组中的一个或多个字符。
13.根据权利要求12的串检索装置,其中所述计算装置把任意加法值加到包含在每一组的一个或多个字符的值上,计算所有一个或多个获得的和可能对应于所述第三数组装置中的空位的加法值,并从所获得的加法值中计算出最小加法值作为位移量。
14.一种用于从记录串中检索给定的串的串检索装置,包括用于把跟随前缀的多个字符分类并记录为多个组的记录装置;以及用于使用所述检索装置检索给定的串的检索装置。
15.一种记录程序的计算机可读的存储介质,该程序使所述计算机能够从记录串中检索给定的串,所述程序包括以下步骤当给定的串包含由多个字符跟随的前缀且下一个字符是继前缀之后输入的时,通过从对跟随该前缀的多个字符分类所获得的多个组计算出对应于下一个字符的组;以所述前缀的索引作为下标,参照记录对应于前缀的序号信息的第一数组;以对应于该前缀的序号信息作为下标,参照记录对应于所述多个组的每一个的位移量的第二数组,并获得对应于下一个字符的组的位移量;以及参照第三数组并校验前缀的索引是否记录在所获得的位移量与所述下一个字符的内部表示值的和被指定为下标的位置上。
16.一种记录程序的计算机可读介质,该程序使所述计算机能够从记录串中检索给定串,所述程序包括参照一数组的过程,在数组中跟随前缀的多个字符被分类为多个组并被记录。
17.一种记录记录串的数据的计算机可读存储介质,所述数据包括在等同于前缀的索引的下标中,记录对应于由多个字符跟随的前缀的序号信息的第一数组数据;在等同于对应于前缀的序号信息的下标位置,记录对应于通过对跟随前缀的多个字符分类获得的多个组的每一个的位移量的第二数组数据;以及在等同于位移量与跟随前缀的字符的内部表示值之和的下标位置,记录前缀索引的第三数组数据。
18.一种从记录串中检索给定串的串检索方法,包括以下步骤在第一数组中等同于前缀的索引的下标位置,记录对应于由多个的字符跟随的前缀的序号信息;在第二数组中等同于对应于前缀的序号信息的下标位置,记录对应于通过对跟随前缀的多个字符分类获得的多个组的每一个的位移量;在第三数组中,以位移量和跟随前缀的字符的内部表示值之和作为下标,记录前缀的索引;当给定的串包含前缀且下一个字符继前缀而被输入时,从多个组计算出对应于下一个字符的组;以前缀的索引作为下标参照所述第一数组,并获得对应于前缀的序号信息;以对应于前缀的序号信息作为下标参照所述第二数组,并获得对应于下一个字符的组的位移量;以及参照第三数组并校验前缀的索引是否被记录在获得的位移量与下一个字符的内部表示值之和被指定为下标的位置上。
19.一种从记录串中检索给定串的串检索方法,包括以下步骤把跟随前缀的多个字符分为多个组并在一个数组中记录多个字符;以及参照所述数组并检索给定的字符串。
20.一种字符代码记录检索装置,用于在作为数据结构的一维数组的双数组结构中记录使用关键字检索的字符代码字符串,包括平行位移量计算装置,用于计算记录使用关键字检索的每一串字符所需的平行位移量;第一数组,以作为使用关键字被检索的每一字符串的前缀的前缀的索引作为下标;用于在所述第一数组标识记录值的标识装置;记录跟随字符串前缀的特定字符信息的第二数组;关键字候选点计算装置,用于计算记录在所述第一和第二数组中的平行位移量与对应于跟随字符串的前缀的字符的内部表示值之和;以及第三数组单元,以通过关键字候选点计算装置获得的和作为下标,记录字符串的前缀的索引。
21.根据权利要求20的字符代码记录检索装置,包括列表装置,用于产生频繁用于成语的字符代码列表并输出从字符代码列表选择的选择字符代码;频繁出现字符代码选择装置,用于输出关于字符代码的频率等级数应当选择到何种等级数的频率阈值;频繁出现字符代码存储装置,用于存储从列表选择的选择字符代码并输出选择字符代码和选择字符代码的索引;作为记录由字符代码组成的成语的字符代码词典的词典装置,用于根据关注的字符是否为选择字符代码组成的成语的前缀对作业进行分类,并输出通过对跟随频繁出现的前缀的选择字符代码的字符代码进行分类所获得的每一组;组存储装置,用于存储通过对跟随从所述词典装置输入的前缀的选择字符代码的字符代码进行分类所获得的各组;作为所述第一数组的第一BASE数组装置,用于存储选择字符代码的序号信息;代码分类装置,用于对使用第二字符代码至少一位的成语的第二字符代码进行分类,以便对跟随前缀的选择字符代码的字符进行分类;平行位移量计算装置,用于对每一组计算最小平行位移量,使通过向组的每一字符的内部表示值添加一任意平行位移量所获得的所有值可指示所述第三数组上一空位;平行位移量存储装置,用于存储从所述平行位移量计算装置输入的平行位移量并把平行位移量输出到所述第二数组装置;关键字候选点计算装置,用于在一下标位置对所述每一组记录作为组的字符代码的字符父代的前缀索引,以平行位移量和组的每一字符的内部表示值之和作为所述第三数组上的下标位置值,并对由(前缀+关注的字符)组成的下一个前缀的索引指定该和的值;作为所述第二数组的第二BASE数组装置,用于对由所述平行位移存储装置基于从所述代码分类装置输出的代码值和从所述列表装置输出的序号信息所输出的每一组存储平行位移量;以及作为第三数组装置的CHECK数组装置,用于在对应于和的值的位置记录前缀的索引。
22.根据权利要求20的字符代码记录检索装置,包括文档输入装置,用于首先指定线索结构的根作为前缀,在前缀中设置结束记号作为结束符号,然后指示输入字符代码作为被检索的字符,并检测输入的字符代码的前缀;作为所述第一数组的第一BASE数组装置,用于从对应于前缀的索引的位置输出一数值;记录值判定装置,用于判定频繁出现的前缀字符代码的序号信息或平行位移量的哪一个是从所述第一BASE数组装置输入的数值,并当数值是在组成一个线索的索引范围之外时输出作为前缀字符代码的序号信息的数值,当数值在索引范围之内时输出作为平行位移量的数值;代码分类装置,用于当从所述第一BASE数组装置输入的数值是前缀字符代码的序号信息时,使用字符代码的至少一位对输入的字符代码进行分类;作为所述第二数组的第二BASE数组装置,用于从对应于从记录值判定装置输入的前缀字符代码的序号信息和字符代码的分类两者位置输出平行位移量;平行位移量存储装置,当从所述第一BASE数组装置输入的数值是平行位移量时,用于存储平行位移量;关键字候选点计算装置,用于计算平行位移量和输入字符的内部表示值之和;作为所述第三数组的CHECK数组装置,用于从对应于从所述关键字候选点计算器装置输入的和的位置输出关键字;以及关键字/前缀校对装置,用于判定所述CHECK数组装置输入的关键字是否与前缀的索引一致,并当判定关键字与前缀的索引一致时,判定成语记录在词典中。
23.在作为一维数据结构数组的双数组结构中记录使用关键字被检索的字符代码字符串的字符代码记录检索方法,该方法包括平行位移量计算步骤,计算记录使用关键字被检索的每一字符串的字符所需的平行位移量;第一数组步骤,指定使用关键字被检索的每一字符串的前缀的索引作为下标;识别第一数组步骤中的记录值的识别步骤;记录有关跟随第一数组步骤中指示的字符串前缀特定字符信息的第二数组步骤;关键字候选点检索步骤,计算第一和第二数组步骤中所记录的平行位移量与对应于跟随字符串前缀的字符的内部表示值之和;以及第三数组步骤,以关键字候选点计算步骤中获得的和为下标记录字符串前缀的索引。
24.根据权利要求23的字符代码记录检索方法,其中所述识别步骤包括以下步骤判定位于成语开头的前导特定字符代码的序号信息、或者另一前导字符代码的平行位移量或者字符串的前缀哪一个在所述第一数组步骤记录;以及当判定出在所述第一数组步骤记录的记录内容为前导特定字符代码的序号信息时,参照由所述第二数组步骤中的序号信息指定的数组位置计算平行位移量。
25.根据权利要求24的字符代码记录检索方法,还包括步基于字符串的前导特定字符代码的序号信息和跟随前导特定字符代码的字符代码的分类参照所述第二数组的步骤。
26.根据权利要求25的字符代码记录检索方法,还包括使用跟随字符代码的代码值对跟随前导特定字符代码的字符代码进行分类的步骤。
27.根据权利要求23的字符代码记录检索方法,其中所述第二数组步骤包括选择频繁用来形成成语的字符作为跟随字符串前缀的特定字符的步骤。
28.根据权利要求23的字符代码记录检索方法,其中所述第二数组步骤包括这样的步骤,即当跟随字符串前缀的字符是成语的一部分时,选择其中代码值的宽度超过预定阈值的字符作为跟随字符串前缀的特定字符。
29.根据权利要求23的字符代码记录检索方法,包括列表步骤,产生频繁在成语中使用的字符代码的列表并输出从字符代码列表中选择的选择字符代码;频繁出现的字符代码选择步骤,输出关于应当选择什么等级数的字符代码的频繁度阈值;频繁出现的字符代码存储步骤,存储在所述列表步骤选择的频繁出现的字符代码,并输出所选择的字符代码及选择的字符代码的索引;词典步骤,使用记录由字符代码组成的成语的字符代码词典,根据关注的字符是否为由选择的字符代码组成的成语的前缀对作业进行分类,并输出通过对跟随前缀的选择的字符代码的字符代码的分类获得的每一组;组存储步骤,存储对跟随由所述词典步骤产生的前缀的字符代码的字符代码的分类获得的组;第一BASE数组步骤,作为第一数组步骤计算选择的字符代码的数目信息,并在第一BASE数组上选择的字符代码的索引的位置存储该数目信息;代码分类步骤,使用第二字符代码的至少一个位对成语的第二字符代码进行分类,以便对跟随前缀的选择的字符代码的字符进行分类;平行位移量计算步骤,对每一组计算最小平行位移量,于是通过把任意平行位移量添加到组的每一字符的内部表示值而获得的所有值可以指示CHECK数组上的空位置;平行位移量存储步骤,存储在所述平行位移量计算步骤产生的平行位移量,并向第二BASE数组输出该平行位移量;关键字候选点计算步骤,对每一所述组计算平行位移量与组的每一字符内部表示值之和作为CHECK数组的下标,并指定这个和的值作为由((前缀)+(关注的字符))组成的下一个前缀的索引;作为所述第二数组步骤的第二BASE数组步骤,基于在所述代码分类步骤产生的代码值和在所述列表步骤产生的数目信息两者,存储在所述平行位移量存储步骤输出的每一组的平行位移量;以及作为所述第三数组步骤的CHECK数组步骤,在CHECK数组中对应于所述和的一位置记录作为组的每一字符代码父辈的前缀的索引。
30.根据权利要求29的字符代码记录计算方法,包括当跟随字符串前缀的字符是成语的一部分时,选择其代码值的宽度超过预定的阈值的字符作为跟随字符串前缀特定的字符。
31.根据权利要求23的字符代码记录计算方法,包括文档输入步骤,首先对前缀指定线索结构的根,同时在前缀作为终结符号建立终结标记,然后指示输入要被检索的字符的字符代码,并检测输入的字代码的前缀;作为所述第一数组步骤的第一BASE数组步骤,从对应于BASE数组的前缀的索引的一位置抽取数值;记录值判断步骤,判断频繁出现的前缀字符代码的数目信息还是平行位移量是在所述第一BASE数组步骤中产生的数值,并当该数值在组成线索的索引范围之外时,输出前缀字符代码的数目信息,并当该数值在索引范围之内,输出该数值作为平行位移量;代码分类步骤,当从所述第一BASE数组步骤产生的数值是前缀代字符代码的数目信息时,使用该字符代码的至少一位对输入的字符代码进行分类;作为所述第二数组步骤的第二BASE数组步骤,从第二BASE数组对应于在记录值判断步骤中产生的前缀字符代码的数目信息和字符代码的代码的分类这两者的一个位置,抽取一平行位移量;平行位移量存储步骤,当在所述第一BASE数组步产生的数值是平行位移量时,存储该平行位移量;关键字候选点计算步骤,计算平行位移量和输入字符的内部表示值之和;作为所述第三数组步骤的CHECK数组步骤,从CHECK数组对应于在所述关键字候选点计算步骤中计算的和的一位置抽取一关键字;以及关键字/校对步骤,判断在所述CHECK数组步骤产生的关键字是否与前缀索引一致,并当输入的关键字与前缀索引一致时,判断一成语记录在词典中。
32.根据权利要求31的字符代码记录计算方法,包括步骤当跟随字符串前缀的字符是成语的一部分时,选择其代码值的宽度超过预定的阈值的字符作为跟随字符串前缀特定的字符。
全文摘要
字符串检索装置把跟随记录字符串的前缀的多个字符分类为多个组,并对每一组使用不同的位移量在数组结构中记录跟随字符的那些字符。该字符串检索装置基于对应于输入字符的组的位移量检索给定的字符串。
文档编号G06F17/30GK1239793SQ9910529
公开日1999年12月29日 申请日期1999年4月30日 优先权日1998年6月19日
发明者矢作裕纪 申请人:富士通株式会社