Python中的概率计数
我有一个50gb的txt文件,其中包含随机字符串,我想计算该文件中某个子字符串的出现次数。。很多时候,对于不同的非预定义的随机子字符串 我想知道是否有其他方法来解决这个问题 概率方式 类似于bloom过滤器,但我们可以使用概率计数来代替概率成员检查。该数据结构将用于计数估计 其他统计方法(?) 我可以使用任何虚拟方法来估计文本文件中字符串的出现次数吗?对其他选择持开放态度 如果能在与此问题相关的声音中单独或结合使用,那就太好了Python中的概率计数,python,string,algorithm,probability,stat,Python,String,Algorithm,Probability,Stat,我有一个50gb的txt文件,其中包含随机字符串,我想计算该文件中某个子字符串的出现次数。。很多时候,对于不同的非预定义的随机子字符串 我想知道是否有其他方法来解决这个问题 概率方式 类似于bloom过滤器,但我们可以使用概率计数来代替概率成员检查。该数据结构将用于计数估计 其他统计方法(?) 我可以使用任何虚拟方法来估计文本文件中字符串的出现次数吗?对其他选择持开放态度 如果能在与此问题相关的声音中单独或结合使用,那就太好了 对该文件的初始传递可以给出该文件的近似值。根据您的问题,可能重击手的
- 您可以为您的文件计算a
此数组包含按排序顺序排列的后缀的起始位置。有了50GB的文本,您可以为每个位置分配5个字节,并最终得到一个后缀数组5*50=250GB。如果这太多,那么你可以试试
计算此阵列只需O(n)(使用适当的算法可能需要几个小时,主要受磁盘读/写速度的限制)
一旦获得了数组,就可以计算任何子字符串在对数时间内的出现次数。实际上,时间主要取决于磁盘不同部分的寻道时间,因此如果将文件存储在固态驱动器上,这部分速度会快得多。为什么您认为不能使用计数器?您不需要提前指定键。即使您不想处理整个文件,也可以使用计数器对其中的某些部分进行采样。@jonrsharpeI您说得对,但我忘了补充一点,我没有50gb的RAM。计数器不会占用50gb的内存,而且您不需要一次将整个文件保存在内存中。你可以一次读一点。计算每个字符是完全可能的。为什么您认为需要50GB的ram?文件的大小一点也不重要,重要的是不同单词的数量,而且可能不会超过几千个,特别是如果您首先应用词干分析的话。@tobias_k words.。当然。字符组合?