【问题标题】:Using a trie data structure on word occurance在单词出现上使用 trie 数据结构
【发布时间】:2013-04-15 23:07:29
【问题描述】:

这个问题与语言无关,更多的是关于理解如何实现 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”和“and”。

我希望我的最终频率计数器如下所示:

a:出现 1 次而不是 7 次 一个:2 和:1 等等..

我如何记录完整字数?

我在 php 中工作,试图处理大量文本并访问过this question,这不是我想要的。性能很重要,但内存效率更可取,因为我正在解析一万亿个单词。谢谢你的意见。

【问题讨论】:

    标签: algorithm count frequency trie


    【解决方案1】:

    您可以通过两种方式做到这一点:

    1. 不是每次单词通过时增加一个节点,而是仅在它结束时才增加

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

    【讨论】:

      【解决方案2】:

      我建议使用三元树,然后在第三条边存储单词。然后你可以在里面实现一个单词计数器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-30
        • 1970-01-01
        • 2022-11-25
        • 2020-03-09
        • 1970-01-01
        • 2016-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多