在单词出现时使用trie数据结构

时间:2013-04-15 23:07:30

标签: algorithm count frequency trie

这个问题与语言无关,更多的是了解如何实现trie,或者尝试是否适合我的程序假设。 假设我有一串这样的文字。

string= "a tale about an ant and an android";

“a”的相应trie看起来像这样

      a(7)      
     /    \     
    b(1)  n(4)
    /     /   \
  o(1)  t(1)  d(2)
  /              \
 u(1)            r(1)
 /                 \
t(1)               o(1)
                     \
                     i(1)
                       \
                        d(1)

我希望找到每个单词的出现次数。尽管“a”在文本中出现了6次,但只有一个实例用作单词。同样的规则适用于“an”& “和”

我希望我的最终频率计数器看起来像这样:

a:发生1次而不是7次 an:2 并且:1 等等..

我怎样才能记录完整单词的数量?

我正在使用php尝试处理大量文本并访问this question并且它不是我想要的。性能很重要,但内存效率更优选,因为我解析说万亿字。谢谢,我感谢您的意见。

2 个答案:

答案 0 :(得分:0)

我会推荐一个三元组,然后在第三个边缘存储单词。然后你可以在里面实现一个单词计数器。

答案 1 :(得分:0)

您可以通过两种方式实现:

  1. 每次单词通过时都不会递增节点,只有在结束时才递增

  2. 在单词的末尾有一个伪写字母(比如空白),只有当单词在那里结束时才会递增。