字母查找树(letter trie)是一种可以用来索引词汇的数据结构,一次一个字母。
构建一个字母查找树:一个++递归++函数建立一个嵌套的字典结构,每一级嵌套包含给定前缀的所有单词,而子查找树含有所有可能的后续词
In [15]: def insert(trie, key, value):
...: if key:
...: first, rest = key[0], key[1:]
...: if first not in trie:
...: trie[first] = {}
...: insert(trie[first], rest, value)
...: else:
...: trie['value'] = value
...:
In [16]: import nltk
In [17]: trie = nltk.defaultdict(dict)
In [18]: insert(trie, 'chat', 'cat')
In [19]: insert(trie, 'chien', 'dog')
In [20]: insert(trie, 'chair', 'flesh')
In [21]: insert(trie, 'chic', 'stylist')
In [22]: trie = dict(trie)
In [23]: trie['c']['h']['a']['t']['value']
Out[23]: 'cat'
In [25]: print trie
{'c': {'h': {'a': {'i': {'r': {'value': 'flesh'}}, 't': {'value': 'cat'}}, 'i': {'c': {'value': 'stylist'}, 'e': {'n': {'value': 'dog'}}}}}}