我有一个巨大的文本文件(大于可用的 RAM 内存)。我需要计算所有单词的频率并将单词和频率计数输出到一个新文件中。结果应按频率计数的降序排序。
我的方法:
- 对给定文件进行排序 - 外部排序
- 依次统计每个单词的频率,将计数存储在另一个文件中(连同单词)
- 根据频率计数对输出文件进行排序 - 外部排序。
我想知道是否有更好的方法来做到这一点。我听说过基于磁盘的哈希表吗?或 B+ 树,但以前从未尝试过。
注意:我在 SO 上看到过类似的问题,但没有一个必须解决数据大于内存的问题。
编辑:根据评论,同意实践中的字典应该适合当今计算机的内存。但是,让我们假设一个单词词典,它大到不适合记忆。