Python 将大文件作为字典加载

Python 将大文件作为字典加载,python,numpy,dictionary,pickle,word2vec,Python,Numpy,Dictionary,Pickle,Word2vec,我关于stackoverflow的第一个问题:) 我正在尝试从手套向量加载一个相关向量,并创建一个字典,其中单词作为键,相应的向量作为值。我用了通常天真的方法: fp=open(wordEmbdfile) self.wordVectors={} # Create wordVector dictionary for aline in fp: w=aline.rstrip().split() self.wordVectors[w[0]]=w[1:] fp.close() 我看到活动

我关于stackoverflow的第一个问题:)

我正在尝试从手套向量加载一个相关向量,并创建一个字典,其中单词作为键,相应的向量作为值。我用了通常天真的方法:

fp=open(wordEmbdfile)
self.wordVectors={}
# Create wordVector dictionary
for aline in fp:
    w=aline.rstrip().split()
    self.wordVectors[w[0]]=w[1:]
fp.close()
我看到活动监视器上有巨大的内存压力,在尝试了一两个小时后,它最终崩溃了

我将尝试拆分成多个较小的文件,并创建多个字典

与此同时,我有以下问题:

  • 要读取word2vec文件,最好是使用
    gzip.open
    读取gzip文件,或者先解压缩,然后使用plain open读取

  • word vector文件在第一列中有文本,在其余列中有浮动,使用genfromtext或loadtext from numpy会更理想吗

  • 我打算用chicle保存这本词典,我知道加载它也会很困难。我阅读了使用shelve的建议,它在加载时间和访问时间方面与cPickle相比如何。如果改进未来的访问(如果cPickle没有崩溃,使用8gram),那么最好花更多的时间加载cPickle,有人对此有什么建议吗


  • 谢谢

    首先,对于有限数量的线路,比如说10或100条线路,这是否正常工作?读取整个文件并只保存每行的一部分是否有效?
    genfromtxt
    loadtxt
    基本上做相同的事情-逐行读取,将行拆分为一个列表,并将所有内容收集到一个列表中。最后,它们将大列表转换为数组。内存消耗将是类似的。我相信您可以保存对
    rstrip
    的调用,只需执行
    w=aline.split()
    有人编辑了代码,但是现在缩进看起来是错误的。顺便说一句,如果您希望值是浮点值,您仍然需要转换它(现在它是字符串)。首先,对于有限数量的线路,例如10或100条线路,这是否正常工作?读取整个文件并只保存每行的一部分是否有效?
    genfromtxt
    loadtxt
    基本上做相同的事情-逐行读取,将行拆分为一个列表,并将所有内容收集到一个列表中。最后,它们将大列表转换为数组。内存消耗将是类似的。我相信您可以保存对
    rstrip
    的调用,只需执行
    w=aline.split()
    有人编辑了代码,但现在缩进看起来不正确。顺便说一句,如果您希望值是浮点值,您仍然需要转换它(现在它是字符串)。