python - python中的高效词频统计,可在单机上进行大规模处理

标签 python word-frequency

我有一个包含字符串内容的巨大文本文件。我的用例是识别单词及其相应的计数。

在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/

相关文章:

来自多个文件的 Python txt 矩阵

python - 如何构建 pandas 数据框中项目的频率计数表?

python - 在 Django 中,我有一个复杂的查询,我只需要通过外键获取唯一值,这可能吗?

Python:如何让 Gtk.scrolledwindow 滚动到 Gtk.Treeview 中的选择

python - Key_Value 计数过滤字典

java - 字符串频率搜索未找到所有单词

java - 是否有 O(N) 解决方案来获取 List<String> 中出现次数最多的前 k 个字符串?

python - If 语句错误触发

python - 在 Python 中创建空集 : TypeError: 'dict' object is not callable

python - Django 检测不需要的更改