每个.gz文件包含一个纯文本的单个文档,大约56MB Gzip压缩,大约210MB解压缩.
每一行都是n-gram(bigram,trigram,quadrigram等),右边是频率计数.我需要基本上创建一个文件,存储每个四字组的子串频率以及它的整串频率计数(即4个单字节频率,3个双字母频率和2个三字母频率,总共10个数据点).每种类型的n-gram都有自己的目录(例如,所有的bigrams都出现在他们自己的33个.gz文件集中).
我知道一个简单,强力的解决方案,以及导入哪个模块使用Python中的Gzip压缩文件,但我想知道是否有一些东西不会花费我几周的cpu时间?关于加快这一过程的任何建议,无论多么轻微,都将非常感谢!
解决方法 这将有助于得到几行和预期输出的例子.但据我所知,这里有一些想法.您当然不希望每次处理单个文件时处理所有文件,或者更糟糕的是,只需要一个4克.理想情况下,您需要浏览一次文件.所以我的第一个建议是维护一个中间频率列表(这些10个数据点集),它们首先只考虑一个文件.然后,当您处理第二个文件时,您将更新您遇到的项目的所有频率(并且可能会添加新项目).那么你会继续这样做,增加频率,因为你发现更多匹配的n-gram.最后写出一切.
更具体地说,在每次迭代时,我会将一个新的输入文件读入内存,作为字符串到数字的映射,其中字符串是,例如,空格分隔的n-gram,数字是它的频率.然后,我将处理上一次迭代的中间文件,该文件将包含您的预期输出(具有不完整的值),“a b c d:10 20 30 40 5 4 3 2 1 1”(猜测你在这里寻找的输出).对于每一行,我会在地图中查找地图中的所有子图,更新计数,并将更新的行写出到新的输出文件中.那个将在下一次迭代中使用,直到我处理完所有输入文件.
总结以上是内存溢出为你收集整理的Python – 在数百个大型gzip压缩文件中搜索项目全部内容,希望文章能够帮你解决Python – 在数百个大型gzip压缩文件中搜索项目所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)