基于TRIE索引树的结构在分词词典数据结构中普遍采用,即便在改进的数据结构中其思想也都保持不变,本文以TRIE索引树来对分词词典进行一些分析。
数据结构首先包含一个首字的数组,每个数组的offset即某个汉字的编码转化为short整形的值(一个汉字2字节)。gb2312编码表可以参见:http://linux.chinaunix.net/techdoc/desktop/2009/03/12/1101139.shtml。例如,“啊”是编码表中的首个汉字,编码为45216,则该数组(A)的啊所在的位置为A[45216];至少需要包括两个字段【该字开头的trie数的孩子数】【该字开头的trie树的location】,首字数组可以看作是树根数组,存放着全部树根。
其下的TRIE树在检索词汇的第二字,第三字时进行匹配发挥作用,至少需要包含汉字编码(2字节),孩子数(2字节),location(4字节),当汉字编码为0表示已经到词汇的终结位置,【location】上存放的是该词的统计信息,词频,查询频率等等。
我们来大致估算一些这样做的代价。
假定我们基于以下信息来做出估算。
词典数量为10万个词汇,单字,2字词,3字词,4字词的比例约为3.6%,64% 16% 14%
首字的开销为:65536*6B = 390K