数据结构形成方法、电子词典和多数组结构的制作方法

文档序号:6606172阅读:207来源:国知局
专利名称:数据结构形成方法、电子词典和多数组结构的制作方法
技术领域
本发明涉及用于电子词典的数据结构形成方法、具有存储了由该方法形成的数据结构的存储器的电子词典以及用于该电子词典的多数组结构。
背景技术
近年来电子词典被广泛地使用。该电子词典是具有能存放大量词信息和索引值以查找中文词信息的存储器的设备。然而,由于容量和重量的原因,电子词典的存储器空间是有限的。因此,更有效地利用存储器就非常重要。
对于用于中文词的电子词典,使用何种汉语分词词典机制对于其空间效率和查找时间效率很重要。
一篇名为“汉语自动分词词典机制的实验研究”的论文发表在《中文信息学报》第14卷第1期。在该论文中,介绍了三种典型的汉语分词词典机制,如,整词二分,TRIE索引树和逐字二分。作者还比较了三种典型的词典机制,并得出结论,认为逐字二分模式是最大程度地满足实际汉语分词速度要求的最合适的词典机制。
不过,现有的汉语分词词典机制的存储空间效率和查找时间效率不令人满意。

发明内容
因此,本发明的目的是通过提供一种用于电子词典的数据结构形成方法、具有存储了由此形成的数据结构的存储器的电子词典以及用于该电子词典的多数组结构来解决现有技术中的上述问题,其能改善存储空间效率和查找时间效率。
为实现上述目的,提供一种用于电子词典的数据结构形成方法。该数据结构形成方法包括如下步骤在所述电子词典的存储器中形成一个由n+1个数组组成的多数组结构(n表示词典中最长的词所包括的字符个数),其中第一至第n数组用于分别存放词典中的所有词的第一至第n字符及其索引信息,第n+1数组用来存放所有词的词条信息。
将第二至第n数组分别划分成多个区,每个区包括一个或多个结构,所述结构由字符部分和带有对应于下一数组中的位置的起始索引值的索引部分组成。
将该词典中的所有词的字符和词条信息存放到所述多数组结构中。
对于中文词典来说,针对其中的每个中文词,执行如下步骤根据所述中文词的第一中文字符的内码确定所述第一中文字符在第一数组中的位置,并得到保存在所述位置的与第二数组中的一个区中的第一结构在该第二数组中的位置相对应的索引值。
根据所述中文词的第m中文字符的索引值,将所述中文词的第m+1中文字符放置在第m+1数组中的一个区中的一个结构的字符部分中(1≤m≤n-1)。
将所述中文词的词条信息依次存放在第n+1数组中的相应位置。
其中,如果由一个中文词的前m(1≤m≤n-1)个中文字符组成的字符串构成另一中文词,则所述中文词的第m中文字符的索引值在第m+1数组中所确定的一个区的第一结构的字符部分设置一个标示符,其索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息,由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在包括所述标示符的第一结构之后的结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果由该中文词的前m个中文字符组成的字符串不构成另一中文词,则由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在由第m中文字符的索引值所确定的位于第m+1数组中的一个区的各个结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果一个中文词不构成其它中文词的一部分,则用于存放该中文词的最后一个中文字符的一个结构的索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息。
而且,根据本发明还提供一种电子词典。该电子词典包括存储器。所述存储器包括一个由n+1个数组组成的多数组结构(n表示词典中最长的词所包括的字符个数),其中第一至第n数组分别存放词典中的所有词的第一至第n字符及其索引信息,第n+1数组存放所有词的词条信息。
第二至第n数组分别被划分成多个区,每个区包括一个或多个结构,所述结构由字符部分和索引部分组成。
对中文词典来说,所有中文词的第一中文字符的索引值与第二数组中的区中的第一结构在该第二数组中的位置相对应,并根据该中文字符的内码保存在第一数组中的相应位置;如果由一个中文词的前m(1≤m≤n-1)个中文字符组成的字符串构成另一中文词,则所述中文词的第m中文字符的索引值在第m+1数组中所确定的一个区的第一结构的字符部分设置一个标示符,其索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息,由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在包括所述标示符的第一结构之后的结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果由该中文词的前m个中文字符组成的字符串不构成另一中文词,则由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在由第m中文字符的索引值所确定的位于第m+1数组中的一个区的各个结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果一个中文词不构成其它中文词的一部分,则用于存放该中文词的最后一个中文字符的一个结构的索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息。
根据本发明,还提供一种用于电子词典的多数组结构,所述电子词典包括一个存储器,所述多数组结构设置于所述存储器中,由n+1个数组组成(n表示词典中最长的词所包括的字符个数),其中第一至第n数组分别存放词典中的所有词的第一至第n字符及其索引信息,第n+1数组存放所有词的词条信息。
第二至第n数组分别被划分成多个区,每个区包括一个或多个结构,所述结构由字符部分和索引部分组成。
对于中文词典来说,所有中文词的第一中文字符的索引值与第二数组中的区中的第一结构在该第二数组中的位置相对应,并根据该中文字符的内码保存在第一数组中的相应位置。
如果由一个中文词的前m(1≤m≤n-1)个中文字符组成的字符串构成另一中文词,则所述中文词的第m中文字符的索引值在第m+1数组中所确定的一个区的第一结构的字符部分设置一个标示符,其索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息,由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在包括所述标示符的第一结构之后的结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果由该中文词的前m个中文字符组成的字符串不构成另一中文词,则由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在由第m中文字符的索引值所确定的位于第m+1数组中的一个区的各个结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果一个中文词不构成其它中文词的一部分,则用于存放该中文词的最后一个中文字符的一个结构的索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息。
利用这样的中文电子词典,将极大降低中文词典中的中文词所占据的存储器空间,并且提高中文词的查找速度。
根据下面的结合附图对实施例所做的描述,本发明的上述及其他目的、效果、特征和优点将会变得更显而易见。


图1是根据本发明的用于中文电子词典的数据结构形成方法的流程图;图2是将由一个中文字符组成的中文词存放于多数组结构的方法的流程图;图3是将由两个中文字符组成的中文词存放于多数组结构的方法的流程图;图4A和图4B是表示由三个中文字符组成的中文词存放于多数组结构的方法的流程图;图5是根据本发明的用于中文电子词典的数据结构的示意图。
具体实施例图1是根据本发明的用于中文电子词典的数据结构形成方法的流程图;如图1所示,首先建立一个包括原始中文词典中所有中文词和相关词条信息的文本文件(步骤S101)。
该词条信息包括几个词条段,比如词性,韵母,声母和声调等部分。词性是根据词在上下文中的功能所作的一组传统分类中的一种,包括名词,代词,动词,形容词,副词,介词,连词和感叹词。韵母,声母和声调分别是汉语拼音字母表的一部分,其中声母是音节的起始部分,韵母是音节的末尾部分(即音节去掉起始部分),声调表示中文字符的声调,包括现代标准中文发音的四个音调和轻声。
在步骤S102,对该文本文件进行扫描,计算出现在文本文件中每个词条段的各元素的总数。
然后,根据所得到的出现在文本文件中各词条段的每个元素的总数,形成多个词条段表(步骤S103)。
在本发明的该实施例中,词条信息被分作如下词条段诸如韵母,声母和声调组合,以及词性。因此,词条段表包括韵母表,声母和声调组合表,以及词性表。
因此,在步骤S102计算的是出现在文本文件中的每个韵母,每个声母和声调组合,以及每个词性的总数。另外,词条段可以是词性,声母,韵母和声调组合。词条段的不同组合会生成不同的词条段表,因此编码并压缩的词条信息所占据的空间也不同。
优选地,基于其总数依次安排出现在中文词典中的韵母,声母和声调组合以及词性的每个元素来形成韵母表,声母和声调组合表以及词性表。即,某个词条段中总数最大的元素被安排在词条段表的第一排,该词条段中总数第二大的另一元素被安排在词条段表的第二排,依此类推。
于是,比如,在扫描整个文本文件后,我们得到诸如“ang enou......ao i a”的韵母表,诸如“b5 c2 m1 p1……d3 r3 q4 b1”的声母和声调组合表以及诸如“k Cg Qg Zg k-Ng-Vg Dg-V......Livn”的词性表,它们都是基于每个词条段的每个元素的结果总数以递减顺序而形成。在声母和声调组合表中,数字1,2,3,4和5分别表示一声,二声,三声,四声和轻声。
在步骤S104,在中文电子词典的存储器中构成一个多数组结构。该多数组结构包括n+1个数组(n表示中文词典最长词中包括的中文字符数),其中第一到第n数组分别用于存放中文词典中所有中文词的第一到第n中文字符及其索引信息,第n+1数组用于存放所有中文词的词条信息。
优选地,第一数组是二维短整型(short)数组,第二数组到第n数组是一维结构型数组,第n+1数组是一维字符型数组。另外,第一到第n+1数组可以是任何其他类型和维数的数组,只要它们足够长以能够用于存放相关的字符数据和索引数据即可。
优选地,第一数组的大小由中文词典中的中文词的数量来确定。它被用于保存文本文件中所有中文词第一字符的索引值。如果中文词只包括一个中文字符,该中文字符也保存于第一数组中。
将第二至第n数组分别划分成多个区,每个区包括一个或多个由字符部分和索引部分组成的结构。字符部分用于存放相关中文字符,索引部分用来存放用于查找对应中文字符或对应词条信息的相关索引值。
所有索引部分的初始索引值可设定为“0”值,其位数可为16或32等。首位是标志位。优选地,标志位为0表示索引值对应于下一数组中的一个区,而标志位为1表示索引值对应于第n+1数组或临时数组中的词条信息。
随着中文词的中文字符插入到多数组结构,对应于中文字符的索引值按预定的方式变化。在将中文词典中所有中文词的中文字符存放于多数组结构之后,每个中文字符有一个唯一的索引值。
在该实施例中,假设常规中文词典中最长的中文词包括四个中文字符,则多数组结构有五个数组,其中的三个是一维结构型数组。当然,如果词典中最长的中文词有更多的中文字符(比如,它有八个中文字符),多数组结构中数组的数量可以更大。在最长词有八个中文字符的情况下,该多数组结构所包含的数组的数量可设定为九,其中的七个是一维结构型数组。
多个一维结构型数组比如第二数组到第n数组的容量应大到足够依次存放文本文件中的中文词的所有第二中文字符、所有第三中文字符等。
构成如第n+1数组的一维字符型数组用于保存将在后文详细描述的词条信息。
在该实施例中,多数组结构的第一数组分别构成为“unsignedshort[72][94]”;第二数组到第四数组为“wordunit[55300]”,“wordunit[30000]”和“wordunit ”,其中中文wordunit结构类型定义为“struct wordunit
{char word[2]long index;}”以及第五数组定义为字符型数组“char[1000000]”。
在步骤S105,进行读操作以依次读文本文件中中文词的每个中文字符和每个词条段,比如词性,韵母,以及声母和声调组合。
比如,对于中文词“家常便饭”,它的词条信息是“1jialchang2bian4fan4”。词性部分是“1”,韵母分别是“ia”,“ang”,“ian”,“an”,声母和声调组合分别是“j1”,“ch2”,“b4”和“f4”。
在步骤S106,基于词条段表,比如在步骤S103形成的韵母表,声母和声调组合表,以及词性表,对词条段编码。
对于中文词“家常便饭”,分别以下面的关系对词条段编码“1”被编码为8位二进制数“10001001”;“jia1”被编码为两个8位二进制数“10000101”和“01001011”;“chang2”被编码为两个8位二进制数“10000001”和“00011010”;“bian4”和“fan4”被分别编码为“00100101”,“10000110”和“01100100”,“01000111”。
然后,编码后的词条段保存在一个临时数组中(步骤S107)。
在步骤S108,将中文词的每个中文字符存放于多数组结构中合适的位置,并确定其索引值。在下文中将详细描述中文词存放于多数组结构的过程。
在步骤S109,判断文本文件中所有的中文词是否已读。如果答案是否,过程返回到步骤S105以读其他中文词,否则程序继续下面的步骤S110。
在步骤S110,对临时数组中依次存放的编码后的词条段进行霍夫曼压缩从而获得霍夫曼代码表和霍夫曼树。
随后,压缩后的词条信息保存在多数组结构的第n+1数组,同时第n+1数组中每个压缩后的词条信息的起始位置和长度信息作为中文词的最后一个中文字符的索引值保存(S111)。
下面简要介绍中文词的中文字符存放于多数组结构的过程(见步骤S108)。
图2是将由一个中文字符组成的中文词存放于多数组结构的方法的流程图;图3是表示将由两个中文字符组成的中文词存放于多数组结构的方法的流程图;图4A和图4B是表示将由三个中文字符组成的中文词存放于多数组结构中的方法的流程图。
假设中文词典中最长的词有四个中文字符,中文词典包括单字符词,双字符词,三字符词和四字符词。
(A)确定由一个中文字符组成的中文词在第一数组中的位置。
参照图2,首先基于其内码确定该中文词在第一数组中的位置。然后直接获得该位置的与第二数组中的一个区相对应的索引值a1(S201)。基于该索引值将一个“wordunit”结构插入到由该索引值确定的区的位置中。第二数组的该区中的“wordunit”结构的字符部分被设定包括诸如空格符号的标识符。它的索引部分存放中文词的词条信息在临时数组中的位置和长度信息(S202)。
第二数组中插入的“wordunit”结构之后的元素依次后移。在第一数组中该中文字符的位置之后的所有元素的索引值加1(S203)。
(B)将由两个中文字符组成的中文词存放于多数组结构中。
参照图3,先基于其内码确定中文词的第一中文字符在第一数组中的位置。然后直接获得该位置中对应于第二数组中的一个区的索引值a1,和下一位置中的索引值a2(S301)。
索引值a1是第二数组中对应于该中文词的第一中文字符的区的起始位置。值a2-a1表示在第二数组中该查找中文词的第二中文字符的区的范围。
在步骤S302,先基于索引值a1和a2在第二数组中搜索该中文词的第二中文字符。
在步骤S303,判断在第二数组的该区中是否搜索出该中文词的第二中文字符。
如果在第二数组中搜索出该中文词的第二中文字符,过程前进到步骤S304。
这时,第二中文字符的索引值b1必定对应于第三数组中的一个区。基于该索引值,将一个“wordunit”结构插入到第三数组的相应位置。
在该“wordunit”结构的字符部分中,插入诸如空格符的标识符。该中文词的词条信息在临时数组中的位置和长度信息保存于该“wordunit”结构的索引部分。
第三数组中插入的“wordunit”结构之后的所有元素依次后移。在第二数组中搜索出的中文词的第二中文字符之后的对应于第三数组中的区的所有元素的索引值加1(S305)。
如果该中文词的第二中文字符在第二数组中未搜索出,过程前进到步骤S306。
在这种情况下,根据索引值a2将一个“wordunit”结构插入到第二数组中。将第二中文字符存放于插入的“wordunit”结构的字符部分。该中文词的词条信息在临时数组中的位置和长度信息保存于该“wordunit”结构的索引部分。
在步骤S307,第二数组中插入的“wordunit”结构之后的所有元素依次后移。在第一数组中该中文词的第一中文字符之后的所有元素的索引值加1。
(C)将由三个中文字符组成的中文词存放于多数组结构中。
参照图4A和4B,第一数组中的中文词的第一中文字符的位置基于其内码来确定。然后直接获得该位置中对应于第二数组中的一个区的索引值a1和下一位置中的索引值a2(S401)。
索引值a1是在第二数组中对应于该中文词的第一中文字符的区的起始位置。值a2-a1表示在第二数组中查找该中文词的第二中文字符的区的范围。
在步骤S402,基于索引值a1和a2在第二数组中搜索该中文词的第二中文字符。
在步骤S403,判断在第二数组的该区中是否搜索出该中文词的第二中文字符。
如果在第二数组中搜索出了该中文词的第二中文字符,过程前进到步骤S404。如果在第二数组中没有搜索出该中文词的第二中文字符,过程前进到步骤S413。
在步骤S404,判断该中文词的第二中文字符的索引值b1是对应于临时数组中的词条信息还是对应于第三数组中的一个区。
如果索引值b1对应于词条信息,表示由两个中文字符形成的中文字符串构成一个中文词,过程前进到步骤S408。如果索引值b1对应于第三数组中的一个区,过程前进到步骤S405。
在步骤S408,将一个“wordunit”结构插入到第三数组中。在该“wordunit”结构的字符部分,插入一个标识符,将该“wordunit”结构的索引部分设为具有与索引值b1相同的值。
然后修正索引值b1以对应于第三数组中的“wordunit”结构的位置(S409)。
第三数组中插入的“wordunit”结构之后的所有元素依次后移。第二数组中搜索出的该中文词的第二中文字符的位置之后的对应于第三数组的所有元素的索引值加1(S410)。
在步骤S411,将另一个“wordunit”结构插入到所插入的标识符位置之后并与之相邻的位置。将该中文词的第三中文字符存放于该另一个“wordunit”结构的字符部分。该中文词的词条信息在临时数组中的位置和长度信息保存于该另一个“wordunit”结构的索引部分。
第三数组中插入的该中文词的第三中文字符之后的所有元素依次后移。第二数组中搜索出的该中文词的第二中文字符位置之后的对应于第三数组的所有元素的索引值加1(S412)。
在步骤S405,获得第二数组中该中文词的第二中文字符位置之后的位置中的与第三数组中的一个区相对应的索引值b2。
基于索引值b2,将一个“wordunit”结构插入到第三数组的该区的位置中。在该“wordunit”结构的字符部分中,保存该中文词的第三中文字符。词条信息在临时数组中的位置和长度信息保存于该“wordunit”结构的索引部分(S406)。
然后,第三数组中插入的该中文词的第三中文字符之后的所有元素依次后移。第二数组中搜索出的该中文词的第二中文字符之后的对应于第三数组的所有元素的索引值加1。
在步骤S413,在第二数组中插入一个用于该中文词的第二中文字符的“wordunit”结构。
在第三数组中插入另一个用于该中文词的第三中文字符的“wordunit”结构(S414)。
令插入到第二数组中的“wordunit”结构的索引值对应于插入到第三数组中的“wordunit”结构(S415)。
该中文词的词条信息在临时数组中的位置和长度信息保存于用于该中文词的第三字符的“wordunit”结构的索引部分(S416)。
然后,分别插入到第二和第三数组中的“wordunit”结构所在位置之后的所有元素依次后移,第一数组中该中文词的第一中文字符的索引值所在位置之后的对应于第二数组中的区的所有索引值,和第二数组中插入的“wordunit”结构所在位置之后的与第三数组中的区相对应的所有索引值加1(S417)。
(D)将由四个中文字符组成的中文词存放于多数组结构中。
将由四个中文字符组成的中文词存放于多数组结构中的过程实质上与将由三个中文字符组成的中文词存放于多数组结构中的过程相同。因此,简洁起见,省略其具体的描述。
相似地,可将由五个或更多中文字符组成的中文词存放于多数组结构中。
可选择地,在第一到n-1数组中未存放相关词条信息在第n+1数组中的起始位置和长度信息的结构的索引部分还包括由存放于该索引部分中的索引值确定的下一数组中的区的长度信息。
可选择的是,中文词典中所有中文词的词条信息可直接存放于第n+1数组中而无需编码和压缩,或编码后存放于第n+1数组中。在这种情况中,省去临时数组。
图5是根据本发明的中文电子词典的数据结构示意图,其中以第一中文字符分别是“家”和“鼾”的中文词作为实例描述中文电子词典的存储器中形成的数据结构。
参照图5,在第一数组(unsigned short[72][94])中搜索出中文词“家常便饭”、“家丑”、“家伙”和“家乡”等的第一中文字符“家”的位置。该位置中存放的索引值对应于第二数组的一个区中的第一结构的字符部分中的标识符,而第一结构的索引部分存放中文词“家”的词条信息在第n+1数组中的起始位置和长度信息。
上述中文词的第二中文字符“常”,“丑”,“伙”和“乡”分别依次位于第二数组中该区的第一结构之后。由于中文字符串“家常”构成一个中文词,存放中文字符“常”的字符部分的一个结构的索引部分中的索引值对应于第三数组中的一个区的第一结构中的标识符。第三中文字符“便”位于存放该标识符的该区的第一结构之后的结构的字符部分中,而存放中文字符“便”的结构的索引部分存放对应于存放中文词“家常便饭”的第四中文字符“饭”的第四数组中一个区的结构的索引值。最后,存放中文字符“饭”的结构的索引部分存放中文词“家常便饭”的词条信息在第n+1数组中的起始位置和长度信息。
相似地,中文词“家乡话”,“家乡菜”和“家乡人”以及“鼾声”和“酣睡”等可分别安排在该多数组结构中。
图5中的箭头表示的是索引值与相应的结构或第n+1数组中的词条信息之间的关系。
根据本发明的其他方面,还提供上述方法形成的带有多数组结构的中文电子词典。
该中文电子词典包括存储器。所述存储器包括一个由n+1个数组组成的多数组结构(n表示中文词典中最长的中文词所包括的中文字符个数),其中第一至第n数组分别存放中文词典中的所有中文词的第一至第n中文字符及其索引信息,第n+1数组存放所有中文词的词条信息;第二至第n数组分别被划分成多个区,每个区包括一个或多个结构,所述结构由字符部分和索引部分组成;所有中文词的第一中文字符的索引值与第二数组中的区中的第一结构在该第二数组中的位置相对应,并根据该中文字符的内码保存在第一数组中的相应位置;如果由一个中文词的前m(1≤m≤n-1)个中文字符组成的字符串构成另一中文词,则所述中文词的第m中文字符的索引值在第m+1数组中所确定的一个区的第一结构的字符部分设置一个标示符,其索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息,由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在包括所述标示符的第一结构之后的结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果由该中文词的前m个中文字符组成的字符串不构成另一中文词,则由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在由第m中文字符的索引值所确定的位于第m+1数组中的一个区的各个结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果一个中文词不构成其它中文词的一部分,则用于存放该中文词的最后一个中文字符的一个结构的索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息。
可选择的是,在根据本发明的中文电子词典中,未存放相关词条信息在第n+1数组中的起始位置和长度信息的第一至第n-1数组的索引部分还包括由索引部分中的索引值确定的下一数组中的区的长度信息。
根据本发明,第一数组是短整型的二维数组,第二到第n数组是一维结构型数组以及第n+1数组是一维字符型数组。
另外,存放于第n+1数组中的词条信息是编码后的词条信息。
而且,存放于第n+1数组中的词条信息是经编码和压缩后的词条信息。
根据本发明,通过韵母表,声母和声调组合表以及词性表对词条信息编码。
通过基于它们的总数依次安排中文词典中出现的韵母,声母和声调组合以及词性的每个元素来形成韵母表,声母和声调组合表以及词性表。
优选地,用霍夫曼压缩方法压缩编码后的词条信息。
根据本发明,还提供一种按照上述方法形成的用于电子词典的多数组结构,所述电子词典包括一个存储器,所述多数组结构设置于所述存储器中,由n+1个数组组成(n表示词典中最长的词所包括的字符个数),其中第一至第n数组分别存放词典中的所有词的第一至第n字符及其索引信息,第n+1数组存放所有词的词条信息。
第二至第n数组分别被划分成多个区,每个区包括一个或多个结构,所述结构由字符部分和索引部分组成。
对于中文词典来说,所有中文词的第一中文字符的索引值与第二数组中的区中的第一结构在该第二数组中的位置相对应,并根据该中文字符的内码保存在第一数组中的相应位置。
如果由一个中文词的前m(1≤m≤n-1)个中文字符组成的字符串构成另一中文词,则所述中文词的第m中文字符的索引值在第m+1数组中所确定的一个区的第一结构的字符部分设置一个标示符,其索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息,由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在包括所述标示符的第一结构之后的结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果由该中文词的前m个中文字符组成的字符串不构成另一中文词,则由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在由第m中文字符的索引值所确定的位于第m+1数组中的一个区的各个结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果一个中文词不构成其它中文词的一部分,则用于存放该中文词的最后一个中文字符的一个结构的索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息。
在中文电子词典的存储器中形成数据结构后,按如下过程很容易将该数据结构复制到其他一个或多个中文电子词典中。
以带存储器的中文电子词典为例,其中该存储器中存有中文词典,词典中最长的中文词有四个中文字符。
比如,将第一数组“unsigned short[72][94]”中的有效内容输出到二进制文件“sword”中;将第二,第三和第四数组“wordunit[55300]”,“wordunit[30000]”和“wordunit ”中有效信息的内容和长度输出到二进制文件“mword”中;将第五数组“char[1000000]”中的有效信息的内容和长度输出到二进制文件“wordinfo”中;将韵母表、声母和声调组合表以及词性表中的内容输出到二进制文件“YunMu.txt”,“ShengMu.txt”和“wordcate”中,将霍夫曼压缩过程中创建的霍夫曼树输出到二进制文件“Huftree”中。
然后,上述二进制文件中的相关内容可输入到其他中文电子词典的存储器中,其中基于二进制文件“sword”中的内容重建二位数组“unsigned short[72][94]”;基于二进制文件“mword”中的内容重建三个一维结构型数组;基于二进制文件“wordinfo”中的内容重建一维字符型数组。
基于二进制文件“YunMu.txt”重建韵母表;基于二进制文件“ShengMu.txt”重建声母和声调组合表;基于二进制文件“wordcate”中的内容重建词性表以及基于二进制文件“ huftree”重建霍夫曼树。
在一系列重建过程后,可实现其他中文电子词典。
利用这样的电子词典,能容易地查找中文词典中的任意中文词。下面以中文词“家常便饭”为例描述如何在中文词典中查找中文词。
首先,基于中文字符“家”的内码确定中文词第一字符“家”在二维数组,例如“unsigned short[72][94]”中的位置。
在确定中文词“家常便饭”的第一中文字符“家”在二位数组中的位置后,获得对应于第一一维结构型数组中不同结构的第一中文字符“家”的索引值和第一中文字符“家”之后的其他中文字符的索引值。基于这两个索引值,确定第一一维数组(比如图5中的“wordunit[55300]”)中两个标识符之间的一个区,在其中查找中文词“家常便饭”的第二中文字符“常”。
在查找到中文词“家常便饭”的第二中文字符“常”后,获得指向第二一维结构型数组的不同结构的第二中文字符“常”的索引值和第二中文字符“常”之后的其他中文字符的索引值。基于这两个索引值,确定第二一维数组(比如图5中的“wordunit[30000]”)中两个标识符之间的一个区,在其中查找中文词“家常便饭”的第三中文字符“便”。
在查找出中文词“家常便饭”的第三中文字符“便”之后,获得对应于第三一维结构型数组中的不同结构的第三中文字符“便”的索引值和第三中文字符“便”之后的其他中文字符的索引值。基于这两个索引值,确定第三一维数组(比如图5中的“wordunit ”)中两个标识符之间的一个区,在其中查找中文词“家常便饭”的第四中文字符“饭”。
在查找到中文词“家常便饭”的第四中文字符“饭”后,确定中文词“家常便饭”是在电子词典中。
如果需要中文词“家常便饭”的词条信息,基于中文词“家常便饭”的最后一个字符“饭”的索引值确定一维字符型数组中压缩的词条信息的位置和长度。然后通过对诸如图5中所示的“char[1000000]”的一维字符型数组中压缩的词条信息进行解压缩可容易地获得中文词“家常便饭”的相应词条信息。
上面的描述是针对中文电子词典进行的,但是本发明不限于中文词典,它可以适用于与中文类似的一切语言。
已关于优选的实施例详细地描述了本发明,根据前面所述内容,对于本领域技术人员显而易见的是,可以进行更广方面的不背离本发明的变化和修正,其意图在于所附权利要求书覆盖落入本发明真实范围的所有这样的变化和修正。
权利要求
1.一种用于电子词典的数据结构形成方法,其特征在于,包括如下步骤在所述电子词典的存储器中形成一个由n+1个数组组成的多数组结构(n表示词典中最长的词所包括的字符个数),其中第一至第n数组用于分别存放词典中的所有词的第一至第n字符及其索引信息,第n+1数组用来存放所有词的词条信息;将第二至第n数组分别划分成多个区,每个区包括一个或多个结构,所述结构由字符部分和带有对应于下一数组中的位置的起始索引值的索引部分组成;将该词典中的所有词的字符和词条信息存放到所述多数组结构中。
2.如权利要求1所述的用于电子词典的数据结构形成方法,其特征在于,所述词典为中文词典,所述词为中文词。
3.如权利要求2所述的用于电子词典的数据结构形成方法,其特征在于,所述将该词典中的所有词的字符和词条信息存放到所述多数组结构中的步骤以如下方式实现对于中文词典中的每个中文词,执行如下步骤根据所述中文词的第一中文字符的内码确定所述第一中文字符在第一数组中的位置,并得到保存在所述位置的与第二数组中的一个区中的第一结构在该第二数组中的位置相对应的索引值;根据所述中文词的第m中文字符的索引值,将所述中文词的第m+1中文字符放置在第m+1数组中的一个区中的一个结构的字符部分中(1≤m≤n-1);将所述中文词的词条信息依次存放在第n+1数组中的相应位置。
4.如权利要求3所述的用于电子词典的数据结构形成方法,其特征在于,如果由一个中文词的前m(1≤m≤n-1)个中文字符组成的字符串构成另一中文词,则所述中文词的第m中文字符的索引值在第m+1数组中所确定的一个区的第一结构的字符部分设置一个标示符,其索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息,由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在包括所述标示符的第一结构之后的结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果由该中文词的前m个中文字符组成的字符串不构成另一中文词,则由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在由第m中文字符的索引值所确定的位于第m+1数组中的一个区的各个结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果一个中文词不构成其它中文词的一部分,则用于存放该中文词的最后一个中文字符的一个结构的索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息。
5.如权利要求2、3或4所述的用于电子词典的数据结构形成方法,其特征在于,第一至第n-1数组中的没有存放相应的词条信息在第n+1数组中的位置和长度信息的结构的索引部分还包括其中的索引值所确定的下一数组中的区的长度信息。
6.如权利要求2、3或4所述的用于电子词典的数据结构形成方法,其特征在于,第一数组是一个二维短整型数组,第二至第n数组是一维结构型数组,第n+1数组是一维字符型数组。
7.如权利要求2、3或4所述的用于电子词典的数据结构形成方法,其特征在于,第一数组的大小由所述中文词典中的中文词的个数确定。
8.如权利要求2、3或4所述的用于电子词典的数据结构形成方法,其特征在于,所述第二至第n数组的大小分别与所有中文词所包含的第二至第n中文字符的个数有关。
9.如权利要求2、3或4所述的用于电子词典的数据结构形成方法,其特征在于,n等于4。
10.一种电子词典,包括一个存储器,其特征在于,所述存储器包括一个由n+1个数组组成的多数组结构(n表示词典中最长的词所包括的字符个数),其中第一至第n数组分别存放词典中的所有词的第一至第n字符及其索引信息,第n+1数组存放所有词的词条信息。
11.如权利要求10所述的电子词典,其特征在于,所述词典为中文词典,所述词为中文词。
12.如权利要求11所述的电子词典,其特征在于,第二至第n数组分别被划分成多个区,每个区包括一个或多个结构,所述结构由字符部分和索引部分组成;所有中文词的第一中文字符的索引值与第二数组中的区中的第一结构在该第二数组中的位置相对应,并根据该中文字符的内码保存在第一数组中的相应位置;如果由一个中文词的前m(1≤m≤n-1)个中文字符组成的字符串构成另一中文词,则所述中文词的第m中文字符的索引值在第m+1数组中所确定的一个区的第一结构的字符部分设置一个标示符,其索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息,由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在包括所述标示符的第一结构之后的结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果由该中文词的前m个中文字符组成的字符串不构成另一中文词,则由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在由第m中文字符的索引值所确定的位于第m+1数组中的一个区的各个结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果一个中文词不构成其它中文词的一部分,则用于存放该中文词的最后一个中文字符的一个结构的索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息。
13.如权利要求11或12所述的电子词典,其特征在于,第一至第n-1数组中的没有存放相应的词条信息在第n+1数组中的位置和长度信息的结构的索引部分还包括其中的索引值所确定的下一数组中的区的长度信息。
14.如权利要求11或12所述的电子词典,其特征在于,第一数组是一个二维短整型数组,第二至第n数组是一维结构型数组,第n+1数组是一维字符型数组。
15.如权利要求11或12所述的电子词典,其特征在于,所述词条信息是经过编码处理之后的词条信息。
16.如权利要求11或12所述的电子词典,其特征在于,所述词条信息是经过编码和压缩处理之后的词条信息。
17.如权利要求16所述的电子词典,其特征在于所述词条信息的编码是利用韵母表、声母和声调组合表以及词性表进行的。
18.如权利要求17所述的电子词典,其特征在于所述韵母表、声母和声调组合表以及词性表是根据所述中文词典中出现的各个韵母、声母和声调的组合以及词性的数目的大小依次序排列形成的。
19.如权利要求16所述的电子词典,其特征在于所述词条信息的压缩是利用霍夫曼方法进行的。
20.一种用于电子词典的多数组结构,所述电子词典包括一个存储器,其特征在于,所述多数组结构设置于所述存储器中,由n+1个数组组成(n表示词典中最长的词所包括的字符个数),其中第一至第n数组分别存放词典中的所有词的第一至第n字符及其索引信息,第n+1数组存放所有词的词条信息。
21.如权利要求20所述的用于电子词典的多数组结构,其特征在于,所述词典为中文词典,所述词为中文词。
22.如权利要求21所述的用于电子词典的多数组结构,其特征在于,第二至第n数组分别被划分成多个区,每个区包括一个或多个结构,所述结构由字符部分和索引部分组成;所有中文词的第一中文字符的索引值与第二数组中的区中的第一结构在该第二数组中的位置相对应,并根据该中文字符的内码保存在第一数组中的相应位置;如果由一个中文词的前m(1≤m≤n-1)个中文字符组成的字符串构成另一中文词,则所述中文词的第m中文字符的索引值在第m+1数组中所确定的一个区的第一结构的字符部分设置一个标示符,其索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息,由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在包括所述标示符的第一结构之后的结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果由该中文词的前m个中文字符组成的字符串不构成另一中文词,则由所述字符串作为其前半部分的中文词的第m+1中文字符依次存放在由第m中文字符的索引值所确定的位于第m+1数组中的一个区的各个结构的字符部分中,其索引值分别放置在与其中文字符相对应的结构的索引部分中;如果一个中文词不构成其它中文词的一部分,则用于存放该中文词的最后一个中文字符的一个结构的索引部分用来存放该中文词的词条信息在第n+1数组中的起始位置和长度信息。
23.如权利要求21或22所述的用于电子词典的多数组结构,其特征在于,第一至第n-1数组中的没有存放相应的词条信息在第n+1数组中的位置和长度信息的结构的索引部分还包括其中的索引值所确定的下一数组中的区的长度信息。
24.如权利要求21或22所述的用于电子词典的多数组结构,其特征在于,第一数组是一个二维短整型数组,第二至第n数组是一维结构型数组,第n+1数组是一维字符型数组。
25.如权利要求21或22所述的用于电子词典的多数组结构,其特征在于,所述词条信息是经过编码处理之后的词条信息。
26.如权利要求21或22所述的用于电子词典的多数组结构,其特征在于,所述词条信息是经过编码和压缩处理之后的词条信息。
27.如权利要求26所述的用于电子词典的多数组结构,其特征在于所述词条信息的编码是利用韵母表、声母和声调组合表以及词性表进行的。
28.如权利要求27所述的用于电子词典的多数组结构,其特征在于所述韵母表、声母和声调组合表以及词性表是根据所述中文词典中出现的各个韵母、声母和声调的组合以及词性的数目的大小依次序排列形成的。
29.如权利要求26所述的用于中文电子词典的多数组结构,其特征在于所述词条信息的压缩是利用霍夫曼方法进行的。
全文摘要
本发明公开了一种用于中文电子词典的数据结构形成方法、具有带有由该方法形成的数据结构的存储器的中文电子词典以及用于该电子词典的多数组结构。该数据结构包括由n+1个数组形成的多数组结构,其中第一到第n数组用于保存中文词典中的中文词的第一到第n中文字符。第n+1数组用于保存所有中文词的编码和压缩词条信息。利用这样的中文电子词典,能极大降低中文词典占据的存储器空间,并且提高中文词的查找速度。
文档编号G06F17/22GK1512407SQ0216002
公开日2004年7月14日 申请日期2002年12月30日 优先权日2002年12月30日
发明者杨大为, 金浩, 刘贺飞, 秦晓亮 申请人:佳能株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1