trie树词频统计根据频率排序
时间: 2023-07-06 21:05:07 浏览: 144
用Trie树实现词频统计和单词查询
3星 · 编辑精心推荐
Trie树词频统计可以通过遍历整个Trie树来获取每个单词的出现次数,然后可以将这些出现次数存储在一个哈希表中。接着,可以使用排序算法(如快速排序、归并排序等)对这些出现次数进行排序,以获得单词的频率排名。
以下是一个Python实现的示例代码:
```python
class TrieNode:
def __init__(self):
self.children = {}
self.freq = 0
class Trie:
def __init__(self):
self.root = TrieNode()
def insert(self, word):
node = self.root
for ch in word:
if ch not in node.children:
node.children[ch] = TrieNode()
node = node.children[ch]
node.freq += 1
def dfs(self, node, word, freq_dict):
if node.freq > 0:
if word in freq_dict:
freq_dict[word] += node.freq
else:
freq_dict[word] = node.freq
for ch in node.children:
self.dfs(node.children[ch], word + ch, freq_dict)
def get_freq_dict(self):
freq_dict = {}
self.dfs(self.root, '', freq_dict)
return freq_dict
def sort_by_freq(words):
trie = Trie()
for word in words:
trie.insert(word)
freq_dict = trie.get_freq_dict()
sorted_words = sorted(words, key=lambda x: freq_dict[x], reverse=True)
return sorted_words
```
在这个实现中,首先定义了一个Trie树,其中节点包含一个字典(用于存储子节点)和一个计数器(用于记录单词出现次数)。然后,将所有单词插入Trie树中。接着,使用深度优先搜索(DFS)遍历整个Trie树,以获取每个单词的出现次数,并将其存储在一个字典中。最后,使用Python内置的sorted函数对单词进行排序,排序方式为按照单词出现次数从大到小排序。
阅读全文