我对数据结构有点陌生,我正在尝试使用编辑距离来消除名称数据库的歧义。我正在使用 trie 的以下实现:
http://stevehanov.ca/blog/index.php?id=114
这基本上是:
class TrieNode:
def __init__(self):
self.word = None
self.children = {}
global NodeCount
NodeCount += 1
def insert( self, word ):
node = self
for letter in word:
if letter not in node.children:
node.children[letter] = TrieNode()
node = node.children[letter]
node.word = word
# read dictionary file into a trie
trie = TrieNode()
for name in names:
WordCount += 1
trie.insert( name )
这很好地完成了这项工作,因为它将所有名称插入到 trie 中。现在,我逐个浏览我拥有的名称列表,并使用 trie 返回与传递的名称有一定编辑距离的所有名称的列表。然后,我想从列表中返回的 trie 中删除所有名称。
有没有快速的方法来做到这一点?
谢谢!