我有一个包含字符串内容的巨大文本文件。我的用例是识别单词及其相应的计数。
在Python中,实现这一点的正常方法是使用字典并跟踪单词及其计数。还有另一种方法可以使用集合计数器来查找最常见的单词。
上述方法工作正常,但空间效率不高,因为字典的大小将是唯一单词的总数。 有没有其他高效的算法可以找出单机大数据中单词的基数?即不使用分布式计算(如 Hadoop Map reduce 或 Spark)?
最佳答案
修改后的标记化方法可能会产生多单词标记,这很容易导致字典大小远大于 10**6。 由于所请求的解决方案似乎只涉及将所有标记存储在内存中,因此基于 Trie 的存储而不是字典可能就足够了。
查看hat-trie其中说
For keys that share prefixes it usually uses less memory than Python dict.
不过,速度会有所牺牲。其他此类数据结构包括 datrie、marisa-trie 和 DAWG。
您可以进行多进程以加快计数速度。
关于python - python中的高效词频统计,可在单机上进行大规模处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31255626/